/* Wüstensturm S1: leerer Hintergrund + freigestellte Gebäude, spiegelsymmetrisches Raster aus includes/desert-buildings.php.
   Besetzt = Leuchten entlang der Kontur, frei = grau. Alle Spielerkarten gleich groß. Positionen kommen als Inline-Stil. */
.desertMap.imageMap.dsMap{aspect-ratio:1/1;min-width:900px;background:url('../images/desert-storm-map.webp') center/cover no-repeat;isolation:isolate}
.desertMap.imageMap.dsMap::before{content:"";position:absolute;inset:0;background:var(--ae-0a121024,#0a121024);pointer-events:none;z-index:0}
.dsMap .mapTeamField{top:1.2%;width:18%;min-height:0;padding:7px 12px}
.dsMap .mapTeamField strong{font-size:30px}
/* Gebäude */
.dsMap .dsIcon{position:absolute;width:12%;height:auto;transform:translate(-50%,-50%);z-index:1;pointer-events:none;user-select:none;transition:filter .2s ease-out}
.dsMap .dsIcon-arsenal,.dsMap .dsIcon-silo,.dsMap .dsIcon-mercenary{width:11%}
.dsMap .dsIcon.isTaken{filter:drop-shadow(0 0 2px var(--ae-ffe8a3,#ffe8a3)) drop-shadow(0 0 8px var(--ae-f2bd57,#f2bd57)) drop-shadow(0 0 16px var(--ae-d4a154aa,#d4a154aa)) saturate(1.1)}
.teamB .dsMap .dsIcon.isTaken{filter:drop-shadow(0 0 2px var(--ae-c9fff6,#c9fff6)) drop-shadow(0 0 8px var(--ae-56c8bb,#56c8bb)) drop-shadow(0 0 16px var(--ae-3faaa0aa,#3faaa0aa)) saturate(1.1)}
.dsMap .dsIcon.isFree{filter:grayscale(1) brightness(.6) contrast(.92) drop-shadow(0 4px 6px var(--ae-00000066,#0006))}
.dsMap .dsIcon.isClosed{filter:grayscale(.85) brightness(.78) drop-shadow(0 4px 6px var(--ae-00000055,#0005))}
/* Spielerkarten: gleiche Größe, liegen unter dem Gebäude */
.dsMap .mapBuilding{display:flex;flex-direction:column;gap:4px;width:22%;height:12%;margin-top:5%;padding:6px 8px;transform:translateX(-50%);box-sizing:border-box;overflow:visible}
.dsMap.publicMap .mapBuilding{width:22%;padding:6px 8px}
.dsMap .mapBuilding.isFree{background:var(--ae-101614c4,#101614c4);border-color:var(--ae-d4a15466,#d4a15466);box-shadow:none}
.dsMap .mapBuilding>strong,.dsMap.publicMap .mapBuilding>strong{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:0;font-size:12px;line-height:1.3;text-align:left}
.dsMap .dsName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dsMap .dsRate{flex:none;display:inline-block;padding:1px 6px;border-radius:999px;background:var(--ae-d4a15426,#d4a15426);border:1px solid var(--ae-d4a15466,#d4a15466);color:var(--ae-ffe2a7,#ffe2a7);font:700 11px/1.3 Segoe UI,var(--ae-font,Arial,sans-serif);white-space:nowrap}
.teamB .dsMap .dsRate{background:var(--ae-56c8bb26,#56c8bb26);border-color:var(--ae-56c8bb66,#56c8bb66);color:var(--ae-dffcf7,#dffcf7)}
.dsMap .assignedPlayers,.dsMap.publicMap .assignedPlayers{flex:1;display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:space-between;gap:4px;min-height:0;padding:0;border:0;text-align:left}
.dsMap .dsChips{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:3px;max-height:40px;overflow:hidden;align-content:flex-start}
.dsMap .playerChip,.dsMap.publicMap .playerChip{margin:0;padding:2px 5px;border-radius:4px;font-size:11px;font-weight:700;line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dsMap .assignmentTotal,.dsMap.publicMap .assignmentTotal{margin:0;padding-top:3px;font-size:11px;line-height:1.25;text-align:left}
.dsMap .emptyAssignment{margin:auto 0;font-size:11px}
/* +N weitere Spieler */
.dsMap .dsMore{position:relative}
.dsMap .dsMore>summary{list-style:none;cursor:pointer;padding:2px 6px;border-radius:4px;background:var(--ae-2b3d36,#2b3d36);border:1px solid var(--ae-4a6158,#4a6158);color:var(--ae-ffffff,#fff);font:700 11px/1.25 Segoe UI,var(--ae-font,Arial,sans-serif)}
.dsMap .dsMore>summary::-webkit-details-marker{display:none}
.dsMap .dsMoreList{position:absolute;left:0;top:calc(100% + 4px);z-index:8;display:flex;flex-wrap:wrap;gap:3px;width:180px;padding:6px;background:var(--ae-101614f5,#101614f5);border:1px solid var(--ae-d4a15499,#d4a15499);border-radius:7px;box-shadow:0 8px 20px var(--ae-00000099,#0009)}
.dsMap .dsChips:has(.dsMore[open]){overflow:visible}
.dsMap .mapBuilding:has(.dsMore[open]){z-index:7}
/* Zuweisen: runder Knopf an der Kartenecke, Auswahl klappt darunter auf */
.dsMap .dsAssign{position:static;margin:0}
.dsMap:not(.publicMap) .mapBuilding>strong{padding-right:14px}
.dsMap .dsAssign>summary{position:absolute;top:-11px;right:-9px;z-index:3;display:grid;place-items:center;width:24px;height:24px;border-radius:999px;border:1px solid var(--ae-d4a154,#d4a154);background:var(--ae-2a2214,#2a2214);color:transparent;font-size:0;cursor:pointer;list-style:none;transition:background-color .15s ease-out,transform .15s ease-out}
.dsMap .dsAssign>summary::-webkit-details-marker{display:none}
.dsMap .dsAssign>summary::before{content:"+";color:var(--ae-ffe2a7,#ffe2a7);font:800 16px/1 Segoe UI,var(--ae-font,Arial,sans-serif)}
.dsMap .dsAssign[open]>summary::before{content:"–"}
.dsMap .dsAssign>summary:active{transform:scale(.97)}
@media(hover:hover) and (pointer:fine){.dsMap .dsAssign>summary:hover{background:var(--ae-4a3a1e,#4a3a1e)}}
.dsMap .dsAssign>summary:focus-visible,.dsMap .dsMore>summary:focus-visible{outline:2px solid var(--ae-ffe2a7,#ffe2a7);outline-offset:2px}
.dsMap .dsAssign .mapAssign{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:4;margin:0;padding:8px;background:var(--ae-101614f5,#101614f5);border:1px solid var(--ae-d4a15499,#d4a15499);border-radius:8px;box-shadow:0 8px 20px var(--ae-00000099,#0009)}
.dsMap .mapBuilding:has(.dsAssign[open]){z-index:7}
.teamB .dsMap .dsAssign>summary{border-color:var(--ae-56c8bb,#56c8bb);background:var(--ae-14302c,#14302c)}
.teamB .dsMap .dsAssign>summary::before{color:var(--ae-dffcf7,#dffcf7)}
/* Gebäude in der Mitte (öffnen nach 10 Minuten) */
.dsMap .dsMarker{position:absolute;display:grid;gap:2px;justify-items:center;min-width:13%;margin-top:4.6%;padding:4px 9px;transform:translateX(-50%);text-align:center;background:var(--ae-101614e0,#101614e0);border:1px dashed var(--ae-d4a15499,#d4a15499);border-radius:7px;box-shadow:0 4px 12px var(--ae-00000066,#0006);z-index:2;pointer-events:none}
.dsMap .dsMarker strong{color:var(--ae-fff5d8,#fff5d8);font:700 12px/1.2 Segoe UI,var(--ae-font,Arial,sans-serif);white-space:nowrap}
.dsMap .dsMarker small{display:flex;gap:4px;align-items:center;color:var(--ae-d9ddd9,#d9ddd9);font-size:11px;line-height:1.3;white-space:nowrap}
.dsMap .dsOpenHint{color:var(--ae-ffe2a7,#ffe2a7)}
.teamB .dsMap .dsMarker{border-color:var(--ae-56c8bb99,#56c8bb99)}
/* Startbereiche */
.dsMap .dsStart{position:absolute;padding:4px 9px;border-radius:6px;background:var(--ae-101614e8,#101614e8);border:1px solid var(--ae-ffffff33,#ffffff33);border-left:4px solid var(--ae-4aa8ff,#4aa8ff);color:var(--ae-ffffff,#fff);font:800 11px/1.3 Segoe UI,var(--ae-font,Arial,sans-serif);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transform:translate(-50%,-50%);z-index:2;pointer-events:none}
.dsMap .dsStart-east{border-left-color:var(--ae-ef4444,#ef4444)}
@media(max-width:700px){.desertMap.imageMap.dsMap{min-width:900px}.dsMap.publicMap .mapBuilding{width:22%}}
@media(prefers-reduced-motion:reduce){.dsMap .dsIcon,.dsMap .dsAssign>summary{transition:none}.dsMap .dsAssign>summary:active{transform:none}}

/* v1009 Wüste Kompakt-Kopf (nur #desert; doppelte ID = Vorrang vor profile-refresh.css): Seitenanfang als schmale Leisten + Reiter, Plan-Kopf in drei Zeilen, Steuerung in einer Zeile,
   niedrigere Spielerzeilen, Wunschabgabe/Testplan nebeneinander, Gebäudezuweisung 4-spaltig. Schluchtsturm unberührt. */
#desert#desert .crsBoard{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:8px 0 6px;padding:7px 12px;border-radius:10px}
#desert#desert .crsBoard>h3{margin:0;font-size:14px}
#desert#desert .crsBoard>p,#desert#desert .crsBoard>small{flex:1 1 100%;margin:0;font-size:11.5px;line-height:1.35;opacity:.8}
#desert#desert .crsBoard>small{order:3}
#desert#desert .crsGrid{display:flex;flex-wrap:wrap;gap:6px;margin:0;flex:1 1 auto}
#desert#desert .crsGrid>p{margin:0;font-size:12px}
#desert#desert .crsCard{flex-direction:row;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:4px 10px;border-radius:999px;min-height:0;font-size:12px}
#desert#desert .crsCard strong{font-size:12px}
#desert#desert .crsCard small{font-size:11px}
#desert#desert .crsCard form{margin:0}
#desert#desert .crsCard button{min-height:26px;height:26px;padding:0 10px;font-size:12px}
#desert#desert details.desertCollector,#desert#desert details.desertExcuseManager{margin:0 0 6px;padding:6px 12px;border-radius:10px}
#desert#desert details.desertCollector>summary,#desert#desert details.desertExcuseManager>summary{min-height:26px;padding:0;font-size:13px}
#desert#desert form.desertSelfExcuse{margin:0 0 6px;padding:6px 8px 6px 12px;gap:10px;min-height:0;border-radius:10px}
#desert#desert form.desertSelfExcuse strong{font-size:14px}
#desert#desert form.desertSelfExcuse small{font-size:12px;line-height:1.3}
#desert#desert form.desertSelfExcuse button{min-height:32px;padding:0 14px;font-size:13px}
#desert#desert.dkCompact .dkTabs{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 0;border-bottom:1px solid var(--design-line,var(--ae-355347,#355347))}
#desert#desert.dkCompact .dkTab{display:inline-flex;align-items:center;gap:6px;min-height:32px;height:auto;margin:0;padding:4px 12px;border:1px solid var(--design-line,var(--ae-355347,#355347));border-bottom:0;border-radius:9px 9px 0 0;background:transparent;box-shadow:none;color:inherit;font-size:12.5px;font-weight:700;opacity:.78;text-align:left}
#desert#desert.dkCompact .dkTab:hover,#desert#desert.dkCompact .dkTab.isActive{opacity:1;background:var(--design-surface,var(--ae-14241e,#14241e))}
#desert#desert.dkCompact .dkTab.isActive{box-shadow:inset 0 2px 0 var(--accent,#d8b064)}
#desert#desert.dkCompact .dkTabCount{padding:0 7px;border-radius:999px;background:rgba(0,0,0,.35);font-size:11px;line-height:17px}
#desert#desert.dkCompact details.dkTabPanel{margin:0 0 6px;border-top:0;border-radius:0 0 10px 10px}
#desert#desert.dkCompact details.dkTabPanel:not([open]){display:none}
#desert#desert.dkCompact details.dkTabPanel>summary{display:none}
#desert#desert.dkCompact details.desertExcuseManager>p{margin:2px 0 6px;font-size:12px}
#desert#desert details.desertExcuseManager>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:4px}
#desert#desert details.desertExcuseManager .desertExcusePlayer{min-height:0;padding:3px 4px 3px 6px;gap:6px}
#desert#desert details.desertExcuseManager .desertExcusePlayer>span{gap:6px;min-width:0}
#desert#desert details.desertExcuseManager .desertExcusePlayer .avatar,#desert#desert details.desertExcuseManager .desertExcusePlayer img{width:22px;height:22px;min-width:22px;font-size:11px}
#desert#desert details.desertExcuseManager .desertExcusePlayer b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#desert#desert details.desertExcuseManager .desertExcusePlayer small{font-size:11px}
#desert#desert details.desertExcuseManager .desertExcusePlayer button{width:30px;min-width:30px;height:28px;min-height:28px;padding:0}
#desert#desert details.desertExcuseManager footer{margin-top:4px}
#desert#desert .stormTeamTabs{margin:8px 0;gap:8px}
#desert#desert .stormTeamTabs a{min-height:36px;padding:6px 10px;font-size:14px}
#desert#desert .eventToolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px 10px;margin:0;padding:8px 10px;border-radius:10px 10px 0 0}
#desert#desert .eventToolbar>form{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0}
#desert#desert .eventToolbar>form[method="get"]{flex:0 1 auto}
#desert#desert .eventToolbar label{display:grid;grid-template-columns:auto auto;align-items:center;gap:0 6px;margin:0;font-size:12px;line-height:1.15;white-space:nowrap}
#desert#desert .eventToolbar label small{grid-column:1;grid-row:2;font-size:10px;opacity:.75}
#desert#desert .eventToolbar label>select,#desert#desert .eventToolbar label>input{grid-column:2;grid-row:1/span 2}
#desert#desert .eventToolbar label,#desert#desert .eventToolbar>form[method="get"] label{flex:0 0 auto;width:auto}
#desert#desert .eventToolbar select,#desert#desert .eventToolbar input{min-height:34px;height:34px;padding-top:0;padding-bottom:0;font-size:13px}
#desert#desert .eventToolbar>form[method="get"] select{width:260px;min-width:0;max-width:100%}
#desert#desert .eventToolbar input[type="date"]{width:138px}
#desert#desert .eventToolbar select[name="event_time"]{width:240px;max-width:100%}
#desert#desert .eventToolbar button{min-height:34px;height:34px;padding:0 12px;font-size:13px}
#desert#desert.dkCompact .dkTacticRow{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:8px 10px;border:1px solid var(--design-line,var(--ae-355347,#355347));border-radius:10px 10px 0 0;background:var(--design-surface,var(--ae-14241e,#14241e))}
#desert#desert.dkCompact .eventToolbar+.dkTacticRow{border-top:0;border-radius:0}
#desert#desert.dkCompact .dkTacticRow>section.desertTacticMode{display:contents}
#desert#desert.dkCompact .desertTacticMode>div{order:1;display:flex;flex:0 0 auto;align-items:center;width:auto;min-width:max-content;margin:0;padding:0}
#desert#desert.dkCompact .desertTacticMode>div>span{font-size:10.5px;letter-spacing:.04em;opacity:.75}
#desert#desert.dkCompact .desertTacticMode .dtModeTitle,#desert#desert.dkCompact .desertTacticMode>div>small{display:none}
#desert#desert.dkCompact .dkTacticRow>section.desertTacticHelp{order:2;display:flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;margin:0;padding:0;border:0;background:none}
#desert#desert.dkCompact .desertTacticMode>form{order:3;display:flex;flex:0 0 auto;align-items:center;gap:6px;margin:0 0 0 auto;padding:0}
#desert#desert.dkCompact .desertTacticMode>form button{white-space:nowrap}
#desert#desert.dkCompact .dkSelectable .desertTacticMode>form>label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#desert#desert.dkCompact .desertTacticMode>form button{min-height:34px;height:34px;padding:0 10px;font-size:13px}
#desert#desert.dkCompact .desertTacticMode>form button svg{display:none}
#desert#desert.dkCompact .desertTacticHelp>details{position:static;margin:0;padding:0;border-radius:8px;min-height:0;box-shadow:none}
#desert#desert.dkCompact .desertTacticHelp>details>summary{display:flex;flex-direction:row;align-items:center;gap:6px;min-height:32px;padding:3px 4px 3px 7px;gap:5px;cursor:pointer;white-space:nowrap}
#desert#desert.dkCompact .desertTacticHelp .dtHelpTitle{display:flex;align-items:center;gap:4px}
#desert#desert.dkCompact .desertTacticHelp .dtHelpTitle b{font-size:12px}
#desert#desert.dkCompact .desertTacticHelp .dtHelpTitle .dtIcon,#desert#desert.dkCompact .desertTacticHelp .dtHelpTitle svg{display:none}
#desert#desert.dkCompact .desertTacticHelp summary>em{display:inline-grid;place-items:center;width:18px;height:18px;margin:0;padding:0;border:1px solid currentColor;border-radius:50%;font-size:0;font-style:normal;opacity:.7;cursor:help}
#desert#desert.dkCompact .desertTacticHelp summary>em::before{content:"?";font-size:11px;font-weight:700}
#desert#desert.dkCompact .desertTacticHelp summary>em>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
#desert#desert.dkCompact .desertTacticHelp>details[open]>summary>em{opacity:1;background:rgba(255,255,255,.12)}
#desert#desert.dkCompact .desertTacticHelp>details.isSel{outline:2px solid var(--accent,#d8b064);outline-offset:-1px}
#desert#desert.dkCompact .desertTacticHelp>details[open]>div{position:absolute;left:10px;right:10px;top:calc(100% - 4px);z-index:30;max-height:60vh;overflow:auto;margin:0;padding:10px 14px;border:1px solid var(--design-line,var(--ae-355347,#355347));border-radius:10px;background:var(--design-surface,var(--ae-14241e,#14241e));box-shadow:0 12px 28px rgba(0,0,0,.45);font-size:13px}
#desert#desert .eventHeading{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 8px;padding:6px 10px 8px;border:1px solid var(--design-line,var(--ae-355347,#355347));border-top:0;border-radius:0 0 10px 10px;background:var(--design-surface,var(--ae-14241e,#14241e))}
#desert#desert .eventHeading>div:first-child{display:flex;align-items:baseline;gap:8px;margin:0}
#desert#desert .eventHeading>div:first-child .eyebrow{margin:0}
#desert#desert .eventHeading h3{margin:0;font-size:17px}
#desert#desert .eventHeading>form{margin:0 0 0 auto}
#desert#desert .eventHeading>form button{min-height:34px;height:34px;padding:0 12px;font-size:13px}
#desert#desert .eventHeading>.rosterStats{display:flex;gap:6px;margin:0}
#desert#desert .eventHeading>.rosterStats>strong{display:inline-flex;flex:0 0 auto;align-items:baseline;gap:5px;min-height:0;padding:3px 12px;border-top-width:1px;border-radius:8px;font-size:17px;line-height:1.3;white-space:nowrap}
#desert#desert .eventHeading>.rosterStats small{display:inline;margin:0;font-size:11px}
#desert#desert form.rosterAdd,#desert#desert.dkCompact .rosterListTools{margin:0 0 6px;padding:6px 8px;border-radius:10px}
#desert#desert form.rosterAdd{gap:6px}
#desert#desert form.rosterAdd select,#desert#desert form.rosterAdd button,#desert#desert .rosterListTools input,#desert#desert .rosterListTools button{min-height:32px;height:32px;padding-top:0;padding-bottom:0;font-size:13px}
#desert#desert form.rosterAdd button{padding:0}
#desert#desert .rosterListTools{gap:6px}
#desert#desert .rosterQuickFilters{gap:4px}
#desert#desert .rosterQuickFilters button{padding:0 7px;min-height:30px;height:30px;gap:5px}
#desert#desert .rosterVisibleCount{font-size:12px}
#desert#desert details.rosterBulkAdd{margin:0 0 6px}
#desert#desert details.rosterBulkAdd>summary{min-height:30px;padding-top:4px;padding-bottom:4px;font-size:12.5px}
#desert#desert .rosterList{gap:0;margin-bottom:6px}
#desert#desert .rosterList>.rosterPlayer{min-height:0;margin:0;padding:4px 8px;gap:6px;border-radius:0;border-width:0 0 1px}
@media(min-width:1101px){#desert#desert .rosterList>.rosterPlayer{grid-template-columns:minmax(0,1fr) 104px 190px 170px 44px}}
#desert#desert .rosterList>.rosterPlayer:first-child{border-radius:10px 10px 0 0}
#desert#desert .rosterList>.rosterPlayer>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px;min-width:0}
#desert#desert .rosterList>.rosterPlayer>div strong{font-size:13.5px}
#desert#desert .rosterList>.rosterPlayer>div small{display:inline;font-size:11px;line-height:1.3}
#desert#desert .rosterList>.rosterPlayer>div small.attendanceWarning{display:block;flex:1 1 100%}
#desert#desert .rosterList>.rosterPlayer select{min-height:30px;height:30px;padding-top:0;padding-bottom:0;font-size:12.5px}
#desert#desert .rosterList>.rosterPlayer button.remove,#desert#desert .rosterList>.rosterPlayer button.remove.actionIconOnly{height:30px!important;min-height:30px!important;padding:0 10px!important}
#desert#desert form.rosterAdd button.actionIconOnly{height:32px!important;min-height:32px!important;padding:0 10px!important}
#desert#desert form.preferenceToggle,#desert#desert form.testEventToggle{display:inline-flex;vertical-align:top;width:calc(50% - 3px);box-sizing:border-box;align-items:center;gap:10px;margin:0 0 6px;padding:6px 10px;min-height:0}
#desert#desert form.preferenceToggle{margin-right:6px}
#desert#desert form.preferenceToggle button,#desert#desert form.testEventToggle button{min-height:32px;height:32px;padding:0 12px;font-size:13px;white-space:nowrap}
#desert#desert form.preferenceToggle small,#desert#desert form.testEventToggle small{font-size:12px;line-height:1.3}
#desert#desert form.autoAssign{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:0 0 6px;padding:8px 10px}
#desert#desert form.autoAssign>div:first-of-type{flex:1 1 300px;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 10px}
#desert#desert form.autoAssign>div:first-of-type small{font-size:12px}
#desert#desert form.autoAssign>fieldset{order:2;flex:1 1 100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 12px;margin:0;padding:2px 10px 4px}
#desert#desert form.autoAssign label{min-height:0;margin:0;padding:3px 0;font-size:12.5px}
#desert#desert form.autoAssign input[type="checkbox"]{width:18px;min-width:18px;height:18px;min-height:0;margin:0}
#desert#desert form.autoAssign>label,#desert#desert form.autoAssign>:not(fieldset):not(div) label{order:3}
#desert#desert form.autoAssign>.autoAssignActions{order:1;display:flex;flex:0 0 auto;gap:6px;margin:0}
#desert#desert form.autoAssign>.autoAssignActions button{min-height:34px;height:34px;padding:0 12px;font-size:13px}
#desert#desert details.assignmentRuleManagers{margin:0 0 6px}
#desert#desert details.assignmentRuleManagers>summary{min-height:34px;padding-top:4px;padding-bottom:4px}
@media(min-width:1101px){
  #desert#desert.dkCompact form.rosterAdd{display:inline-grid;vertical-align:top;width:310px;box-sizing:border-box;margin-right:6px;grid-template-columns:minmax(0,1fr) 84px 44px}
  #desert#desert.dkCompact form.rosterAdd+.rosterListTools{display:inline-flex;vertical-align:top;width:calc(100% - 316px);box-sizing:border-box;align-items:center;flex-wrap:nowrap}
  #desert#desert.dkCompact form.rosterAdd+.rosterListTools input[type="search"]{flex:1 1 120px;min-width:80px;width:auto}
#desert#desert.dkCompact form.rosterAdd+.rosterListTools .rosterDensity{padding:0 10px}
  #desert#desert.dkCompact form.rosterAdd+.rosterListTools .rosterQuickFilters{display:flex;flex-wrap:nowrap}
  #desert#desert.dkCompact form.rosterAdd+.rosterListTools>*{flex-shrink:0}
  #desert#desert.dkCompact form.rosterAdd+.rosterListTools>input{flex-shrink:1}
}
@media(max-width:700px){
  #desert#desert .crsBoard>h3{flex:1 1 100%}
  #desert#desert .crsCard{border-radius:10px;flex:1 1 100%}
  #desert#desert form.desertSelfExcuse{flex-wrap:wrap}
  #desert#desert form.rosterAdd{grid-template-columns:minmax(0,1fr) 84px 44px}
  #desert#desert form.desertSelfExcuse button{flex:1 1 100%}
  #desert#desert.dkCompact .dkTab{flex:1 1 auto;justify-content:center;text-align:center}
  #desert#desert details.desertExcuseManager>div{grid-template-columns:1fr 1fr}
  #desert#desert .eventToolbar>form,#desert#desert .eventToolbar>form[method="get"]{flex:1 1 100%}
  #desert#desert .eventToolbar label,#desert#desert .eventToolbar>form[method="get"] label{flex:1 1 100%;grid-template-columns:92px minmax(0,1fr)}
  #desert#desert .eventToolbar label>select,#desert#desert .eventToolbar label>input,#desert#desert .eventToolbar>form[method="get"] select,#desert#desert .eventToolbar input[type="date"],#desert#desert .eventToolbar select[name="event_time"]{width:100%;max-width:100%}
  #desert#desert .eventToolbar label small{white-space:normal}
  #desert#desert .eventToolbar>form>button{margin-left:auto}
  #desert#desert.dkCompact .dkTacticRow>section.desertTacticHelp{display:grid;grid-template-columns:1fr 1fr;flex:1 1 100%}
  #desert#desert.dkCompact .desertTacticMode>div{flex:1 1 100%}
  #desert#desert.dkCompact .desertTacticMode>form{flex:1 1 100%;margin:0}
  #desert#desert.dkCompact .desertTacticMode>form button{flex:1 1 auto;width:100%}
  #desert#desert.dkCompact .desertTacticHelp>details>summary{justify-content:space-between;min-height:36px;white-space:normal}
  #desert#desert.dkCompact .desertTacticHelp .dtHelpTitle{font-size:12px;line-height:1.2}
  #desert#desert .eventHeading>form{margin:0;flex:1 1 100%}
  #desert#desert .eventHeading>form button{width:100%}
  #desert#desert .rosterList>.rosterPlayer{padding:6px 8px}
  #desert#desert form.preferenceToggle,#desert#desert form.testEventToggle{display:flex;width:100%;margin-right:0}
  #desert#desert form.autoAssign>fieldset{grid-template-columns:1fr 1fr}
  #desert#desert form.autoAssign>.autoAssignActions{order:4;flex:1 1 100%;flex-direction:column}
}
/* v1013: Leiste „Ohne Position“ über der taktischen Karte (Admin) – Quelle und Ziel beim Antippen/Ziehen */
.dsBoard{display:grid;gap:10px}
.dsFree{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--ae-d4a15466,#d4a15466);border-radius:10px;background:var(--ae-101614c4,#101614c4)}
.dsFree .dsFreeHead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;padding:0;border:0;min-height:0}
.dsFreeTitle{font-size:14px}
.dsFreeCount{display:inline-block;min-width:22px;padding:1px 7px;border-radius:999px;background:var(--ae-d4a15426,#d4a15426);border:1px solid var(--ae-d4a15466,#d4a15466);font:700 12px/1.4 Segoe UI,var(--ae-font,Arial,sans-serif);text-align:center}
.dsFree .dsFreeHint{color:inherit;opacity:.75;font-size:12px}
.dsFreeRow{display:grid;grid-template-columns:auto auto 1fr;align-items:start;gap:6px;border-left:3px solid var(--ae-69c69e,#69c69e);padding-left:8px}
.dsFreeRow-reserve{border-left-color:var(--ae-e7a368,#e7a368)}
.dsFreeLabel{font-size:12px;font-weight:700;padding-top:4px}
.dsFreeNum{justify-self:start;font-size:12px;padding-top:4px;opacity:.8}
.dsFreeChips{display:flex;flex-wrap:wrap;gap:5px;min-width:0}
.dsFree .playerChip{margin:0;padding:5px 9px;border-radius:6px;font-size:13px;font-weight:700;line-height:1.25;white-space:nowrap}
.dsFree .playerChip small{font-size:12px;font-weight:600;color:inherit;opacity:.9;margin-left:2px}
.dsFreeEmpty{opacity:.7;font-size:12px;padding-top:4px}
.dsFreeNote{margin:0;font-size:12px;opacity:.75}
.dsFree .dsFreeGrey{color:inherit;opacity:.75;font-size:12px;flex-basis:100%}
.dsMemberNote{margin:0 0 8px;font-size:13px;opacity:.85}
/* v1013 (Ben V7): „Zuweisen“-Formular der unteren Gebäude nach oben aufklappen (sonst vom Kartenrand abgeschnitten) */
.dsMap .mapBuilding[data-ds-y^="0.6"] .dsAssign .mapAssign,.dsMap .mapBuilding[data-ds-y^="0.7"] .dsAssign .mapAssign,.dsMap .mapBuilding[data-ds-y^="0.8"] .dsAssign .mapAssign,.dsMap .mapBuilding[data-ds-y^="0.9"] .dsAssign .mapAssign{top:auto;bottom:calc(100% + 6px)}
.dsMap .dsDragChip{cursor:grab}
.dsSaving{opacity:.55}
.dsMap .dsMarker[data-ds-closed]{pointer-events:auto}
.dsMap .mapBuilding.zdaOk,.dsMap .dsMarker.zdaOff{border-radius:8px}
/* v1015 (Ben N8): Platz in Leistenhöhe unter der Admin-Karte – untere Gebäude lassen sich über die Meldeleiste (zdb-drag-assign.js, unten fixiert) scrollen; Mitgliedersicht ohne Leiste = ohne Abstand */
.dsBoard[data-ds-event]{padding-bottom:72px}
@media(max-width:640px){.dsFree{padding:8px 10px}.dsFreeRow{grid-template-columns:auto 1fr}.dsFreeChips{grid-column:1/-1}.dsFree .playerChip{padding:7px 10px}}
