:root{color-scheme:dark;--bg:#16181d;--panel:#22262e;--line:#363c47;--accent:#d4a72c;--text:#eef1f5;--muted:#aeb6c3;--danger:#d95c5c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,sans-serif}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#0f1115;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}.topbar a{color:var(--text);text-decoration:none;margin-left:14px}.container{max-width:1400px;margin:0 auto;padding:20px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.btn,button{background:var(--accent);color:#111;border:0;border-radius:8px;padding:9px 13px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}.btn.secondary{background:#3a414d;color:var(--text)}.btn.danger{background:var(--danger);color:#fff}input,select,textarea{width:100%;padding:9px 10px;border-radius:7px;border:1px solid var(--line);background:#11141a;color:var(--text);margin:4px 0 10px}label{font-weight:700}.muted{color:var(--muted)}table{width:100%;border-collapse:collapse}th,td{padding:9px;border-bottom:1px solid var(--line);text-align:left}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>*{flex:1}.notice{padding:10px 12px;border-left:4px solid var(--accent);background:#1b1f26;margin:10px 0}.map-wrap{position:relative;display:inline-block;max-width:100%;overflow:auto;background:#000}.map-img{display:block;max-width:none}.grid-overlay{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right,rgba(255,255,255,.28) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.28) 1px,transparent 1px)}.fog-overlay{position:absolute;inset:0;background:rgba(0,0,0,.92);pointer-events:none}.vtt-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px}.chatbox{height:460px;overflow:auto;background:#11141a;border:1px solid var(--line);border-radius:8px;padding:10px}.chatmsg{padding:7px 0;border-bottom:1px solid #252a32}.chatmsg .meta{font-size:12px;color:var(--muted)}.sheet-field{display:grid;grid-template-columns:180px 1fr 130px 60px;gap:8px;align-items:center;margin-bottom:8px}.sheet-field input{margin:0}@media(max-width:900px){.vtt-layout{grid-template-columns:1fr}.sheet-field{grid-template-columns:1fr}.topbar{position:static}}
/* v0.2.0 VTT map workspace */
.hidden,.local-hidden{display:none!important}.right{text-align:right}.vtt-title h1{margin:.2rem 0}.vtt-main{min-width:0}.vtt-toolbar{padding:10px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;position:sticky;top:54px;z-index:45}.toolbar-group{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.inline-form{margin:0}.tool.active{outline:2px solid #fff;outline-offset:2px}.secondary-btn{background:#3a414d!important;color:var(--text)!important}.danger-mini{background:var(--danger)!important;color:#fff!important}.checkline{display:flex;align-items:center;gap:5px;font-weight:600}.checkline input{width:auto;margin:0}.map-card{padding:8px}.map-scroll{overflow:auto;max-height:calc(100vh - 190px);background:#07080a;border-radius:8px}.map-stage{position:relative;isolation:isolate;user-select:none;touch-action:none}.map-stage .map-img{position:absolute;left:0;top:0;width:auto;height:auto;z-index:0}.map-stage .grid-overlay{z-index:8}.token-layer{position:absolute;inset:0;z-index:auto;pointer-events:none}.fog-layer{position:absolute;inset:0;z-index:60;pointer-events:none}.interaction-layer{position:absolute;inset:0;z-index:80;pointer-events:none;cursor:crosshair}.interaction-layer.active{pointer-events:auto}.fog-shape{position:absolute;background:#000;pointer-events:none}.gm-fog .fog-shape{opacity:.58;background:repeating-linear-gradient(45deg,rgba(0,0,0,.82),rgba(0,0,0,.82) 9px,rgba(25,25,25,.82) 9px,rgba(25,25,25,.82) 18px)}.fog-layer.erase-mode .fog-shape{pointer-events:auto;cursor:crosshair;outline:1px solid rgba(255,255,255,.18)}.fog-preview{position:absolute;z-index:90;background:rgba(0,0,0,.6);border:2px dashed #fff;pointer-events:none}.map-token{position:absolute;border-radius:50%;border:3px solid #e7cf79;background:#151820;box-shadow:0 3px 12px rgba(0,0,0,.75);pointer-events:auto;display:flex;align-items:center;justify-content:center;cursor:default;z-index:70}.map-token.movable{cursor:grab}.map-token.movable:active{cursor:grabbing}.map-token.locked{border-style:dashed}.token-face{font-size:clamp(12px,1.1vw,22px);font-weight:900;letter-spacing:.04em}.token-label{position:absolute;top:100%;left:50%;transform:translateX(-50%);white-space:nowrap;background:rgba(0,0,0,.78);padding:2px 6px;border-radius:5px;font-size:12px;margin-top:2px}.compact-list{margin-top:12px;max-height:210px;overflow:auto}.token-admin-row,.layer-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid var(--line)}.token-admin-row button,.layer-row button{padding:5px 7px}.small{font-size:12px}.chat-send{display:grid;grid-template-columns:1fr auto;gap:6px}.chat-send input{margin:4px 0 10px}.dice-row{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}.dice-row button{padding:6px 8px}.dangerbox{border-left-color:var(--danger)}
@media(max-width:900px){.vtt-toolbar{position:static}.map-scroll{max-height:70vh}}
/* v0.3.0 scenes, measuring, token art and status markers */
.scene-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.scene-row:first-of-type{border-top:0}.scene-active{background:rgba(212,167,44,.08);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:8px}.scene-actions,.scene-mini,.scene-mini>span:last-child{display:flex;align-items:center;gap:6px}.scene-actions{justify-content:flex-end;flex-wrap:wrap}.scene-mini{justify-content:space-between;padding:6px 0;border-top:1px solid var(--line)}.scene-mini:first-of-type{border-top:0}.scene-mini form{display:inline-flex}.mini-link{display:inline-block;padding:5px 7px;border-radius:7px;text-decoration:none;font-weight:700}.measure-layer{position:absolute;inset:0;z-index:90;pointer-events:none;overflow:visible;display:none}.measure-layer.visible{display:block}.measure-layer line{stroke:#fff;stroke-width:4;stroke-dasharray:10 6;filter:drop-shadow(0 2px 2px #000)}.measure-layer text{fill:#fff;font-size:16px;font-weight:800;paint-order:stroke;stroke:#000;stroke-width:4px;stroke-linejoin:round}.interaction-layer.measure-mode{cursor:crosshair}.token-face{width:100%;height:100%;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center}.token-face img{width:100%;height:100%;object-fit:cover;display:block}.token-statuses{position:absolute;right:-12px;top:-12px;display:flex;flex-direction:column;gap:1px;z-index:5}.token-statuses span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(10,10,12,.92);font-size:14px;border:1px solid rgba(255,255,255,.35)}.token-admin-block{border-top:1px solid var(--line);padding:4px 0 8px}.token-admin-block:first-child{border-top:0}.status-picker{display:flex;gap:4px;flex-wrap:wrap}.status-toggle{padding:4px 6px;background:#3a414d;color:var(--text);opacity:.55}.status-toggle.active-status{opacity:1;outline:2px solid var(--accent);outline-offset:1px}
/* v0.4.0: schlanke Oberfläche, Handouts und optionale Token-HP */
.side-details{padding:0}.side-details>summary{cursor:pointer;font-weight:800;padding:13px 16px;list-style:none}.side-details>summary::-webkit-details-marker{display:none}.side-details>summary::after{content:'▸';float:right;color:var(--muted)}.side-details[open]>summary::after{content:'▾'}.side-details-body{padding:0 16px 16px;border-top:1px solid var(--line);padding-top:12px}.compact-details>summary{cursor:pointer;font-weight:700}.top-gap{margin-top:12px}.handout-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--line)}.handout-row:first-of-type{border-top:0}.handout-row a,.handout-mini a{color:var(--text);text-decoration:none}.handout-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.handout-mini{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--line)}.handout-mini:first-child{border-top:0}.resource-edit{display:grid;grid-template-columns:auto 62px auto 62px 34px;gap:4px;align-items:center;margin:5px 0}.resource-edit input{margin:0;padding:5px 6px}.resource-edit button{padding:5px 7px}.token-resource{position:absolute;left:10%;right:10%;bottom:4px;height:6px;border-radius:6px;background:rgba(0,0,0,.72);overflow:hidden;border:1px solid rgba(255,255,255,.35);pointer-events:none}.token-resource span{display:block;height:100%;background:#e0e5eb}.token-label{margin-top:4px}

/* v0.4.2: Spieler- und Kampagnenprofile */
.chatmsg{display:grid;grid-template-columns:38px 1fr;gap:9px;align-items:start}.chat-avatar,.profile-avatar{border-radius:50%;overflow:hidden;background:#11141a;border:1px solid var(--line);display:grid;place-items:center;font-weight:800}.chat-avatar{width:34px;height:34px;font-size:12px}.chat-avatar img,.profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}.chat-body{min-width:0}.profile-avatar{width:84px;height:84px;font-size:22px}.profile-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.campaign-profile{display:grid;grid-template-columns:90px 1fr;gap:16px;align-items:start}.campaign-profile .profile-avatar{width:72px;height:72px}.profile-actions{display:flex;gap:8px;flex-wrap:wrap}.profile-actions button{width:auto}@media(max-width:650px){.campaign-profile{grid-template-columns:1fr}.profile-avatar{width:72px;height:72px}}

/* v0.5.0: Roll20-inspirierter, schlanker Spieltisch */
body.vtt-body{overflow:hidden;background:#0c0e12}.vtt-topbar{height:44px;min-height:44px;padding:6px 12px;position:relative;z-index:120}.vtt-topbar nav a{margin-left:12px}.vtt-container{max-width:none!important;margin:0!important;padding:0!important;height:calc(100vh - 44px);overflow:hidden}.roll20-shell{height:100%;display:grid;grid-template-rows:54px minmax(0,1fr);background:#0b0d10}.page-strip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;background:#1a1e24;border-bottom:1px solid #303641;padding:6px 8px;min-width:0}.page-game{display:flex;flex-direction:column;line-height:1.15;padding:0 8px;white-space:nowrap}.page-tabs{display:flex;align-items:center;gap:6px;overflow-x:auto;min-width:0;padding:2px 0;scrollbar-width:thin}.page-entry{display:flex;align-items:center;position:relative;border:1px solid #343a45;border-radius:6px;background:#252a32;white-space:nowrap;min-height:38px}.page-entry.is-open{outline:2px solid #8f99a8;outline-offset:1px}.page-entry.is-live{border-color:var(--accent);background:#302b1d}.page-tab{color:var(--text);text-decoration:none;padding:8px 10px;font-weight:700}.page-activate{display:flex;margin:0 4px 0 -2px}.page-activate button{padding:5px 7px;border-radius:5px}.live-dot{color:#7bd26e;font-size:12px;padding-right:8px}.page-actions{display:flex;gap:6px}.icon-link,.icon-button{width:36px;height:36px;display:grid;place-items:center;border-radius:6px;background:#343a45;color:var(--text);text-decoration:none;border:0;padding:0;font-size:18px}.icon-button:hover,.icon-link:hover{background:#454d5a}.tabletop-workspace{display:grid;grid-template-columns:52px minmax(0,1fr) 340px;min-height:0;height:100%;transition:grid-template-columns .18s ease}.roll20-shell.dock-collapsed .tabletop-workspace{grid-template-columns:52px minmax(0,1fr) 0}.left-tools{background:#171a20;border-right:1px solid #303641;display:flex;flex-direction:column;align-items:center;padding:8px 5px;gap:6px;z-index:20}.roll-tool{width:40px;height:40px;border-radius:6px;background:#2a3039;color:var(--text);padding:0;display:grid;place-items:center;font-size:19px;border:1px solid #3b424e}.roll-tool:hover{background:#3a424e}.roll-tool.active{background:var(--accent);color:#111;outline:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.tool-sep{height:1px;width:32px;background:#343a45;margin:3px 0}.snap-tool{cursor:pointer}.snap-tool input{position:absolute;opacity:0;pointer-events:none}.snap-tool:has(input:checked){box-shadow:inset 0 0 0 2px var(--accent)}.tabletop-canvas{position:relative;min-width:0;min-height:0;overflow:hidden;background:#0a0c0f}.tabletop-canvas .map-scroll{height:100%;max-height:none;border-radius:0;overflow:auto;background:#0a0c0f;padding:28px}.tabletop-canvas .map-stage{box-shadow:0 8px 34px rgba(0,0,0,.55);background:#000}.canvas-title{position:absolute;left:14px;top:12px;z-index:105;background:rgba(13,15,18,.88);border:1px solid #363c47;border-radius:6px;padding:6px 9px;display:flex;gap:8px;align-items:baseline;pointer-events:none;backdrop-filter:blur(4px)}.measure-badge{position:absolute;right:14px;top:12px;z-index:105;background:rgba(13,15,18,.9);border:1px solid #363c47;border-radius:6px;padding:6px 9px;min-height:31px;color:var(--text);pointer-events:none}.measure-badge:empty{display:none}.right-dock{background:#1a1e24;border-left:1px solid #303641;min-width:0;overflow:hidden;display:grid;grid-template-rows:46px minmax(0,1fr);transition:opacity .15s ease}.dock-collapsed .right-dock{opacity:0;pointer-events:none}.dock-tabs{display:flex;border-bottom:1px solid #303641;background:#15181e}.dock-tab{flex:1;border-radius:0;background:transparent;color:#aeb6c3;border-right:1px solid #2b3039;padding:0;font-size:18px;min-width:48px}.dock-tab.active{background:#242a33;color:var(--text);box-shadow:inset 0 -3px 0 var(--accent)}.dock-panel{display:none;min-height:0;overflow:auto;padding:12px}.dock-panel.active{display:block}.dock-panel[data-dockpanel="chat"].active{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;overflow:hidden}.dock-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:2px 0 10px;border-bottom:1px solid #303641;margin-bottom:10px}.dock-head-link,.dock-section-title a{color:var(--muted);font-size:12px;text-decoration:none}.dock-head-link:hover,.dock-section-title a:hover{color:var(--text)}.roll-chat{height:auto;min-height:0;border:0;border-radius:0;background:transparent;padding:4px 2px;margin-bottom:8px}.dock-chat-form{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:6px}.dock-chat-form input{margin:0}.dock-chat-form button{padding:0}.compact-dice{margin:8px 0}.compact-dice button{background:#323944;color:var(--text);border:1px solid #414957;font-weight:700;flex:1;min-width:36px}.dock-section{margin-bottom:18px}.dock-section-title{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#c6ccd5;margin:2px 0 6px}.journal-link{display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--text);text-decoration:none;padding:9px 7px;border-bottom:1px solid #2b3039;border-radius:5px}.journal-link:hover{background:#242a33}.dock-note{border-bottom:1px solid #2b3039;padding:8px 6px}.dock-note summary{cursor:pointer;font-weight:700}.dock-note>div{padding:8px 2px;color:#cbd1da}.dock-details{border-bottom:1px solid #303641}.dock-details>summary{cursor:pointer;font-weight:800;padding:11px 4px}.dock-details-body{padding:2px 2px 12px}.gm-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.gm-action-grid button{margin:0}.empty-state{padding:14px;color:var(--muted);text-align:center;border:1px dashed #3a414c;border-radius:7px}.plain-link{color:var(--text);text-decoration:none}

/* Kampagnenverwaltung: nicht mehr alle Module gleichzeitig */
.manage-head,.library-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:4px 0 18px}.manage-head h1,.library-head h1{margin-bottom:2px}.manage-head p,.library-head p{margin:0}.manage-head-actions{display:flex;gap:8px}.manage-shell{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;align-items:start}.manage-nav{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;position:sticky;top:68px}.manage-nav a{display:flex;gap:9px;align-items:center;color:var(--text);text-decoration:none;padding:10px 11px;border-radius:7px;font-weight:700}.manage-nav a:hover{background:#2b3039}.manage-nav a.active{background:#343b46;box-shadow:inset 3px 0 0 var(--accent)}.manage-content{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px;min-width:0}.manage-title{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:4px}.manage-title h2{margin:0 0 2px}.manage-title p{margin:0}.clean-list{margin:4px 0 18px}.clean-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 6px;border-bottom:1px solid var(--line)}.clean-row.is-active{background:rgba(212,167,44,.08);border-left:3px solid var(--accent);padding-left:10px}.manage-form{max-width:720px;border-top:1px solid var(--line);padding-top:16px}.manage-form h3{margin-top:0}.note-row{padding:11px 6px;border-bottom:1px solid var(--line)}.note-row summary{cursor:pointer;font-weight:800}.note-row>div{padding:10px 2px}.game-list{display:grid;gap:10px}.game-row{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:14px;padding:15px 16px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.game-badge{width:52px;height:52px;display:grid;place-items:center;border-radius:9px;background:#303641;font-size:25px}.game-info h2{margin:0 0 3px}.game-info p{margin:2px 0}.game-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.waiting-card{max-width:720px;margin:60px auto;text-align:center}.waiting-icon{font-size:42px;margin-bottom:8px}

@media(max-width:1000px){.tabletop-workspace{grid-template-columns:48px minmax(0,1fr) 300px}.roll20-shell.dock-collapsed .tabletop-workspace{grid-template-columns:48px minmax(0,1fr) 0}.manage-shell{grid-template-columns:150px minmax(0,1fr)}}
@media(max-width:760px){body.vtt-body{overflow:auto}.vtt-container{height:auto;min-height:calc(100vh - 44px);overflow:visible}.roll20-shell{min-height:calc(100vh - 44px);grid-template-rows:auto minmax(0,1fr)}.page-strip{grid-template-columns:1fr auto}.page-game{display:none}.page-tabs{min-height:46px}.tabletop-workspace,.roll20-shell.dock-collapsed .tabletop-workspace{grid-template-columns:46px minmax(0,1fr);grid-template-rows:minmax(60vh,1fr) auto}.right-dock{grid-column:1/-1;min-height:420px;border-left:0;border-top:1px solid #303641;opacity:1!important;pointer-events:auto!important}.left-tools{grid-row:1}.tabletop-canvas{grid-row:1}.manage-shell{grid-template-columns:1fr}.manage-nav{position:static;display:flex;overflow-x:auto}.manage-nav a span{display:none}.game-row{grid-template-columns:46px 1fr}.game-actions{grid-column:1/-1;justify-content:flex-start}}

/* v0.5.1: map-only zoom; the chat/right dock keeps a fixed size */
.map-zoom-wrap{position:relative;flex:0 0 auto;transform-origin:0 0}.map-zoom-wrap .map-stage{transform-origin:0 0}.map-zoom-controls{position:absolute;left:14px;bottom:14px;z-index:110;display:flex;align-items:center;gap:2px;background:rgba(13,15,18,.92);border:1px solid #363c47;border-radius:7px;padding:4px;box-shadow:0 3px 14px rgba(0,0,0,.35);backdrop-filter:blur(4px)}.map-zoom-controls button{width:36px;height:34px;padding:0;border-radius:5px;background:#303742;color:var(--text);font-size:20px;border:1px solid #414957}.map-zoom-controls button:hover{background:#414a58}.map-zoom-controls .zoom-value{width:66px;font-size:12px;font-weight:800}.right-dock{width:340px;min-width:340px;max-width:340px}.roll20-shell.dock-collapsed .right-dock{width:0;min-width:0;max-width:0}@media(max-width:760px){.right-dock{width:auto;min-width:0;max-width:none}.map-zoom-controls{left:8px;bottom:8px}}

@media(max-width:1000px) and (min-width:761px){.tabletop-workspace{grid-template-columns:48px minmax(0,1fr) 340px}.roll20-shell.dock-collapsed .tabletop-workspace{grid-template-columns:48px minmax(0,1fr) 0}}

/* v0.5.2: right-click tabletop panning */
.tabletop-canvas .map-scroll.is-panning,.tabletop-canvas .map-scroll.is-panning *{cursor:grabbing!important;user-select:none!important}
/* v0.5.3: rectangular Fog reveal preview */
.fog-preview.reveal-preview{background:rgba(255,255,255,.14);border:2px dashed rgba(255,255,255,.95);box-shadow:inset 0 0 0 1px rgba(0,0,0,.45)}

/* v0.5.4 token visibility layers */
.layer-help{display:flex;flex-direction:column;gap:2px;padding:8px 9px;margin-bottom:8px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.035)}
.layer-help span{font-size:12px;color:var(--muted)}
.map-token.gm-monster-token{border-color:#b86bff;border-style:dashed;box-shadow:0 0 0 2px rgba(184,107,255,.18),0 3px 12px rgba(0,0,0,.75)}
.gm-layer-badge{position:absolute;left:-12px;top:-12px;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#342044;border:1px solid #c58aff;font-size:14px;z-index:6}
.token-layer-control{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:5px 0}
.token-layer-control select{margin:0;padding:6px 8px}
.monster-layer-row{background:rgba(133,72,181,.08);border-radius:7px;padding-left:5px;padding-right:5px}

/* v0.5.5: SL tools live on the left side of the tabletop. */
.tabletop-workspace{position:relative}
.gm-tools-toggle.active{background:var(--accent);color:#111;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.gm-left-panel{position:absolute;z-index:135;left:52px;top:8px;bottom:8px;width:330px;display:none;grid-template-rows:auto minmax(0,1fr);background:#1a1e24;border:1px solid #343a45;border-left:0;border-radius:0 8px 8px 0;box-shadow:8px 0 28px rgba(0,0,0,.45);overflow:hidden}
.gm-left-panel.open{display:grid}
.gm-left-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 10px 9px 12px;background:#15181e;border-bottom:1px solid #303641}
.gm-left-heading>span{display:flex;align-items:center;gap:8px}
.gm-panel-close{width:30px;height:30px;padding:0;border-radius:5px;background:#303742;color:var(--text);font-size:20px;line-height:1}
.gm-left-body{min-height:0;overflow:auto;padding:4px 10px 12px}
.gm-left-panel .dock-details:first-child{border-top:0}
.gm-left-panel input,.gm-left-panel select{width:100%}
.gm-left-panel .compact-list{margin-top:8px}
@media(max-width:1000px) and (min-width:761px){.gm-left-panel{left:48px}}
@media(max-width:760px){.gm-left-panel{left:46px;top:0;bottom:auto;height:min(72vh,680px);width:min(330px,calc(100vw - 54px));border-radius:0 8px 8px 0}}

/* v0.5.6: Roll20-like compact layer/tool popovers. Nothing here changes workspace width. */
.tool-popover{position:absolute;z-index:145;left:58px;display:none;background:#1a1e24;border:1px solid #3b424d;border-radius:8px;box-shadow:8px 10px 30px rgba(0,0,0,.5);overflow:hidden;color:var(--text)}
.tool-popover.open{display:block}
.layer-popover{top:104px;width:245px}
.token-popover{top:196px;width:310px;max-height:calc(100% - 212px);overflow:auto}
.visibility-popover{top:242px;width:290px;max-height:calc(100% - 258px);overflow:auto}
.tool-popover-head{height:40px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 0 12px;background:#15181e;border-bottom:1px solid #303641}
.popover-close{width:30px;height:30px;padding:0;border-radius:5px;background:transparent;color:var(--muted);font-size:20px}
.popover-close:hover{background:#303641;color:var(--text)}
.layer-picker{padding:6px}
.layer-picker button{width:100%;display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:8px;text-align:left;padding:8px 10px;margin:0 0 4px;border-radius:6px;background:transparent;color:var(--text);border:1px solid transparent}
.layer-picker button:last-child{margin-bottom:0}
.layer-picker button>span:first-child{font-size:20px;text-align:center}
.layer-picker button>span:last-child{display:flex;flex-direction:column;line-height:1.15}
.layer-picker button small{font-weight:400;color:var(--muted);margin-top:2px}
.layer-picker button:hover{background:#252b34}
.layer-picker button.active{background:#302b1d;border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.compact-token-form{padding:10px;border-bottom:1px solid #303641}
.compact-token-form label,.compact-settings label{font-size:12px;margin-top:6px}
.compact-token-form input,.compact-token-form select,.compact-settings input{margin:3px 0 5px;padding:7px 8px}
.compact-token-form>button{margin-top:5px;width:100%}
.active-layer-note{font-size:12px;padding:7px 8px;background:#111419;border:1px solid #303641;border-radius:6px;margin-bottom:5px;color:var(--muted)}
.active-layer-note strong{color:var(--text)}
.two-col{display:grid;grid-template-columns:1fr 92px;gap:8px}
.token-list-heading{display:flex;justify-content:space-between;align-items:center;padding:8px 10px 3px;font-size:12px;font-weight:800;color:#c6ccd5;text-transform:uppercase;letter-spacing:.03em}
.token-quick-list{max-height:260px;margin:0;padding:0 8px 8px;overflow:auto}
.token-quick-list .token-admin-block{padding:6px 4px}
.token-quick-list .resource-edit{grid-template-columns:auto 52px auto 52px 30px}
.compact-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:10px;border-bottom:1px solid #303641}
.compact-action-grid button{margin:0;padding:8px 6px;font-size:12px}
.compact-action-grid .danger-mini{grid-column:1/-1}
.tool-popover .compact-details{border-bottom:1px solid #303641;padding:0 10px}
.tool-popover .compact-details>summary{padding:9px 0}
.tool-popover .compact-details:last-child{border-bottom:0}
.compact-settings{padding:0 0 10px}
.map-token.off-edit-layer{opacity:.28;filter:saturate(.45);pointer-events:none}
.map-stage[data-edit-layer="fog"] .map-token.off-edit-layer,.map-stage[data-edit-layer="map"] .map-token.off-edit-layer{opacity:.2}
@media(max-width:1000px) and (min-width:761px){.tool-popover{left:54px}}
@media(max-width:760px){.tool-popover{left:52px;max-width:calc(100vw - 60px)}.layer-popover{top:104px}.token-popover{top:196px;width:min(310px,calc(100vw - 60px));max-height:65vh}.visibility-popover{top:242px;width:min(290px,calc(100vw - 60px));max-height:60vh}}

/* v0.5.7: reusable global token library + token image previews. */
.library-heading{padding-top:9px}
.token-library-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px 8px 9px;border-bottom:1px solid #303641;max-height:178px;overflow:auto}
.token-library-card{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:7px;align-items:center;padding:6px;background:#111419;border:1px solid #303641;border-radius:7px}
.token-library-thumb,.token-admin-thumb{display:grid;place-items:center;overflow:hidden;background:#20252d;border:1px solid #424a56;color:#e6e8eb;font-weight:900;flex:0 0 auto}
.token-library-thumb{width:42px;height:42px;border-radius:50%;font-size:12px}
.token-library-thumb img,.token-admin-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.token-library-meta{min-width:0;display:flex;flex-direction:column;line-height:1.1}
.token-library-meta strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.token-library-meta small{font-size:10px;color:var(--muted);margin-top:4px}
.token-library-actions{display:flex;flex-direction:column;gap:3px}
.token-library-actions button{width:26px;height:24px;padding:0;border-radius:5px;font-size:15px;line-height:1}
.token-library-actions .library-delete{background:#3b2730;color:#f0c7cb}
.library-empty{grid-column:1/-1;padding:8px 4px;color:var(--muted);font-size:12px;line-height:1.35}
.token-create-details{border-bottom:1px solid #303641}
.token-create-details>summary{cursor:pointer;padding:9px 10px;font-size:12px;font-weight:800;color:#d6dae0;list-style:none}
.token-create-details>summary::-webkit-details-marker{display:none}
.token-create-details[open]>summary{background:#15191f;border-bottom:1px solid #303641}
.library-save-check{display:flex!important;align-items:center;gap:7px;margin:4px 0 7px!important;font-size:11px!important;color:var(--muted)}
.library-save-check input{width:auto!important;margin:0!important}
.token-admin-with-thumb{align-items:center}
.token-admin-identity{display:flex;align-items:center;gap:8px;min-width:0}
.token-admin-thumb{width:38px;height:38px;border-radius:50%;font-size:11px}
.token-admin-name{min-width:0;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.token-admin-actions{display:flex;gap:4px;flex:0 0 auto}
@media(max-width:760px){.token-library-grid{grid-template-columns:1fr}.token-library-meta strong{font-size:13px}}

/* v0.6.0: quick character tabs, token context menu, brush fog, dice feedback, WYSIWYG notes and Items layer */
.dock-tabs{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.character-dock-tab{width:auto!important;min-width:42px;max-width:110px;padding:0 7px!important;gap:4px}.character-dock-tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.quick-sheet{padding:8px;overflow:auto}.quick-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;padding:8px 6px;border-bottom:1px solid #303641}.quick-field>div{min-width:0;display:flex;flex-direction:column;gap:2px}.quick-field span{color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.quick-field button{margin:0;padding:6px 8px;font-size:11px}.dock-head-button{padding:5px 8px;margin:0;font-size:11px;background:#303742}.sheet-modal[hidden]{display:none}.sheet-modal{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.7);display:grid;place-items:center;padding:24px}.sheet-modal-card{width:min(900px,94vw);height:min(820px,90vh);display:grid;grid-template-rows:46px minmax(0,1fr);background:#181c22;border:1px solid #414957;border-radius:10px;overflow:hidden;box-shadow:0 20px 70px rgba(0,0,0,.65)}.sheet-modal-head{display:flex;align-items:center;justify-content:space-between;padding:0 10px 0 14px;background:#111419;border-bottom:1px solid #303641}.sheet-modal-head button{width:34px;height:34px;padding:0;font-size:22px}.sheet-modal iframe{width:100%;height:100%;border:0;background:#181c22}.modal-open{overflow:hidden}.character-embed{background:#181c22}.character-embed .container{max-width:none;padding:14px}
.secret-roll-toggle{display:flex;align-items:center;gap:6px;padding:6px 10px;color:#c9b8e8;font-size:12px;border-top:1px solid #303641}.secret-roll-toggle input{width:auto;margin:0}.secret-chatmsg{border-left:3px solid #9b6fe1;background:rgba(112,74,170,.12)}
.dice-sound-control{display:flex;align-items:center;gap:6px}.dice-sound-toggle{width:30px;height:30px;padding:0;margin:0;display:grid;place-items:center;border-radius:6px;background:#303742;color:var(--text);font-size:15px;border:1px solid #414957}.dice-sound-toggle:hover{background:#3b4350}.dice-sound-toggle.is-muted{opacity:.65;background:#252a31}.dice-volume-control{display:flex;align-items:center;gap:5px;min-width:112px}.dice-volume-control input[type="range"]{width:72px;margin:0;padding:0;accent-color:var(--accent)}.dice-volume-control input[type="range"]:disabled{opacity:.35}.dice-volume-control span{width:34px;text-align:right;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}

.token-context-menu[hidden]{display:none}.token-context-menu{position:fixed;z-index:500;width:220px;padding:6px;background:#171b21;border:1px solid #444c58;border-radius:8px;box-shadow:0 12px 40px rgba(0,0,0,.6)}.token-context-menu button{display:block;width:100%;margin:2px 0;padding:7px 9px;text-align:left;background:transparent;color:var(--text);border:1px solid transparent}.token-context-menu button:hover,.token-context-menu button.active-status{background:#2a3039;border-color:#444c58}.context-title{padding:5px 7px;font-weight:900}.context-subtitle{padding:7px 7px 3px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-top:1px solid #303641;margin-top:4px}.context-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px}.context-status-grid button{font-size:11px}
.map-token.item-token{z-index:30;border-color:#d5a52c;box-shadow:0 0 0 2px rgba(213,165,44,.16),0 3px 12px rgba(0,0,0,.75)}.map-stage[data-edit-layer="items"] .map-token.item-token{opacity:1;filter:none;pointer-events:auto}
.fog-brush-setting{padding:8px 10px;border-bottom:1px solid #303641}.fog-brush-setting label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.fog-brush-setting input{width:100%;margin:6px 0 0}.fog-brush-cursor{position:absolute;z-index:79;display:none;border:2px dashed rgba(255,255,255,.9);border-radius:50%;background:rgba(255,255,255,.06);pointer-events:none;transform:translateZ(0)}.fog-brush-cursor.active{display:block}
.wysiwyg-toolbar{display:flex;gap:4px;flex-wrap:wrap;padding:6px;background:#14181d;border:1px solid #3a414c;border-bottom:0;border-radius:7px 7px 0 0}.wysiwyg-toolbar button{width:auto;margin:0;padding:5px 8px;background:#2b313a;color:var(--text);font-size:12px}.wysiwyg-editor{min-height:180px;padding:10px;border:1px solid #3a414c;border-radius:0 0 7px 7px;background:#101318;color:var(--text);outline:none;line-height:1.45}.wysiwyg-editor:empty:before{content:attr(data-placeholder);color:#717987}.rich-note p:first-child{margin-top:0}.rich-note p:last-child{margin-bottom:0}.rich-note ul,.rich-note ol{padding-left:20px}
@media(max-width:760px){.sheet-modal{padding:6px}.sheet-modal-card{width:100%;height:95vh}.character-dock-tab span{display:none}.token-context-menu{width:205px}}

/* v0.6.2: floating global token/item library with drag & drop */
.token-library-window{position:fixed;z-index:180;left:72px;top:105px;width:min(560px,calc(100vw - 430px));min-width:390px;max-height:74vh;display:none;grid-template-rows:auto auto auto minmax(120px,1fr) auto auto;background:#171b21;border:1px solid #414957;border-radius:10px;box-shadow:0 18px 55px rgba(0,0,0,.62);overflow:hidden;color:var(--text)}
.token-library-window.open{display:grid}.token-window-head{height:48px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 9px 0 13px;background:#111419;border-bottom:1px solid #303641;cursor:move;user-select:none}.token-window-head>div{display:flex;flex-direction:column;min-width:0}.token-window-head small{color:var(--muted);font-size:10px;margin-top:2px}.token-window-tools{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:8px 10px;border-bottom:1px solid #303641;background:#15191f}.library-filter,.library-target{display:flex;align-items:center;gap:4px}.library-filter button,.library-target button{width:auto;margin:0;padding:6px 8px;border-radius:6px;background:#2a3039;color:var(--text);font-size:11px;border:1px solid #3b4350}.library-filter button.active,.library-target button.active{background:#443815;border-color:var(--accent);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.library-target>span{font-size:10px;color:var(--muted);margin-right:2px}.token-drag-hint{padding:6px 10px;background:rgba(212,167,44,.08);border-bottom:1px solid #3a3525;color:#d9d2bb;font-size:11px}.token-library-window .token-library-browser{grid-template-columns:repeat(3,minmax(0,1fr));max-height:none;min-height:140px;overflow:auto;padding:9px 10px;border-bottom:1px solid #303641}.token-library-window .token-library-card{grid-template-columns:48px minmax(0,1fr) auto;cursor:grab;transition:transform .12s ease,border-color .12s ease,opacity .12s ease}.token-library-window .token-library-card:hover{border-color:#596270;transform:translateY(-1px)}.token-library-window .token-library-card.dragging{opacity:.4;cursor:grabbing}.token-library-window .token-library-card.is-item{border-color:rgba(213,165,44,.55)}.token-library-window .token-library-thumb{width:46px;height:46px}.token-library-window .token-create-details,.token-library-window .map-token-details{border-top:0;border-bottom:1px solid #303641;background:#15191f}.token-library-window .token-create-details>summary,.token-library-window .map-token-details>summary{padding:8px 11px;cursor:pointer;font-size:11px;font-weight:800;color:#d6dae0}.token-library-window .map-token-details[open]{max-height:270px;overflow:auto}.token-library-window .token-quick-list{max-height:220px}.map-stage.library-drop-active:after{content:'Hier ablegen → ' attr(data-library-drop-layer);position:absolute;z-index:140;inset:8px;border:3px dashed rgba(232,185,47,.9);border-radius:10px;background:rgba(232,185,47,.07);display:grid;place-items:center;color:#fff;font-size:22px;font-weight:900;text-shadow:0 2px 4px #000;pointer-events:none}.token-statuses{display:grid!important;grid-template-columns:repeat(3,20px);gap:2px!important;right:-28px!important;top:-12px!important}.token-statuses span{width:20px!important;height:20px!important;font-size:12px!important}.token-context-menu{max-height:78vh;overflow:auto}.context-status-grid{grid-template-columns:1fr 1fr}.context-status-grid button{min-height:30px}.status-picker{max-height:120px;overflow:auto;padding:2px}.status-toggle{min-width:32px}
@media(max-width:1100px){.token-library-window{width:min(480px,calc(100vw - 390px))}.token-library-window .token-library-browser{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.token-library-window{left:54px!important;right:4px!important;top:64px!important;width:auto;min-width:0;max-height:80vh}.token-library-window .token-library-browser{grid-template-columns:1fr 1fr}.token-window-tools{display:grid}.library-target{flex-wrap:wrap}}

/* v0.6.3: obvious removal of placed map tokens */
.token-context-menu .context-delete{margin-top:4px;background:#4b2529!important;color:#ffd9dc!important;border-color:#7b343b!important;font-weight:800}.token-context-menu .context-delete:hover{background:#6a2c34!important}.map-token-details summary span{margin-left:4px}

/* v0.6.4: keep token removal permanently reachable in the context menu */
.token-context-menu{max-height:calc(100vh - 16px)!important;overflow-y:auto!important;overscroll-behavior:contain}
.token-context-menu .context-delete-top{margin:3px 0 6px!important;background:#5a242b!important;color:#ffe1e3!important;border-color:#8c3942!important;font-weight:900;position:sticky;top:0;z-index:2;box-shadow:0 2px 7px rgba(0,0,0,.35)}
.token-context-menu .context-delete-top:hover{background:#7a303a!important}

/* v0.6.5: readable token status badges, independent of map zoom */
.token-statuses{
  position:absolute!important;
  left:50%!important;
  right:auto!important;
  top:var(--status-top,-9px)!important;
  z-index:12!important;
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:wrap!important;
  justify-content:center!important;
  align-items:center!important;
  gap:var(--status-gap,4px)!important;
  width:max-content!important;
  max-width:var(--status-max,150px)!important;
  pointer-events:none!important;
  transform:translate(-50%,-100%)!important;
  transform-origin:center bottom!important;
}
.token-statuses .token-status-badge{
  box-sizing:border-box;
  display:grid!important;
  place-items:center!important;
  width:var(--status-size,26px)!important;
  height:var(--status-size,26px)!important;
  min-width:var(--status-size,26px)!important;
  border-radius:50%!important;
  border:2px solid rgba(255,255,255,.92)!important;
  background:#20252d!important;
  color:#fff!important;
  font-size:var(--status-font,15px)!important;
  font-weight:900!important;
  line-height:1!important;
  text-shadow:0 1px 2px #000!important;
  box-shadow:0 2px 6px rgba(0,0,0,.85)!important;
}
.token-statuses .status-wounded{background:#9d2831!important}
.token-statuses .status-stunned{background:#9b7614!important}
.token-statuses .status-poisoned{background:#2f6f46!important}
.token-statuses .status-burning{background:#b4511d!important}
.token-statuses .status-prone{background:#315e8b!important}
.token-statuses .status-hidden{background:#6c4688!important}
.token-statuses .status-red_x{background:#d5222d!important;border-color:#fff!important;font-size:1.27em!important}
.token-statuses .status-dead{background:#090a0d!important;border-color:#d9d9d9!important;font-size:1.2em!important}
.token-statuses .status-number{background:#176b9b!important;border-color:#d8f2ff!important;font-family:Arial,sans-serif!important;font-size:1.07em!important;text-shadow:none!important}
/* Move the SL-only layer marker away from the readable status rail. */
.map-token.gm-monster-token .gm-layer-badge{top:auto!important;bottom:-12px!important;left:-12px!important}
/* v0.6.6: per-token player name visibility */
.token-context-menu .context-name-visibility.active-name-visible{background:rgba(73,139,91,.18)!important;border-color:rgba(106,190,129,.48)!important;color:#dff7e5!important}
.token-name-visibility{min-width:31px}

/* v0.6.9: three-level character sheet + formula variables */
.character-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.character-sheet-head h1{margin:0}.character-level-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}.character-level-tabs a{display:flex;flex-direction:column;gap:1px;min-width:150px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#1b1f26;color:var(--text);text-decoration:none;font-weight:800}.character-level-tabs a small{font-weight:500;color:var(--muted)}.character-level-tabs a.active{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent);background:#2b2a22}.character-level-card{max-width:1100px}.character-level-title h2{margin:0 0 2px}.character-level-title p{margin:0 0 12px}.formula-variable-box{margin:8px 0 14px;padding:10px;border:1px solid #39414c;border-radius:8px;background:#15191f}.formula-variable-box>div{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0}.formula-variable-box code{padding:3px 6px;border-radius:5px;background:#0e1115;color:#d8e7ff;border:1px solid #313843}.formula-variable-box small{color:var(--muted)}.character-field-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(90px,.6fr) minmax(180px,1.4fr) 120px auto;gap:8px;align-items:end;padding:9px 0;border-bottom:1px solid #303641}.character-field-row input,.character-field-row select{margin:3px 0 0}.character-field-row label{font-size:12px}.field-roll-button{padding-bottom:1px}.field-roll-button .btn{white-space:nowrap}.character-add-field{max-width:1100px}.inventory-card{max-width:1100px}.inventory-editor{min-height:360px}.inventory-readonly{min-height:220px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#11141a}.quick-sheet-group{padding:8px 6px 4px;margin-top:3px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);border-bottom:1px solid #303641}.character-embed .character-level-tabs{position:sticky;top:0;z-index:5;padding:4px 0;background:#181c22}.character-embed .character-level-card{margin-bottom:10px}
@media(max-width:900px){.character-field-row{grid-template-columns:1fr 1fr}.formula-cell{grid-column:1/-1}.field-roll-button{grid-column:1/-1}.character-level-tabs a{min-width:0;flex:1}}
@media(max-width:560px){.character-field-row{grid-template-columns:1fr}.formula-cell,.field-roll-button{grid-column:auto}.character-level-tabs{display:grid;grid-template-columns:1fr}.character-level-tabs a{width:100%}}

/* v0.6.10 – Charakterbogen als einseitiger Spielbogen ohne Tabs */
.character-embed-container{max-width:none!important;padding:8px!important}.character-onepage{max-width:1600px;margin:0 auto;border:1px solid #455361;border-radius:12px;overflow:hidden;background:#0d1721;box-shadow:0 18px 55px rgba(0,0,0,.42);color:#eef2f6}.character-onepage-head{min-height:142px;display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:18px;align-items:center;padding:14px 20px;background:linear-gradient(115deg,#101d2a,#14283a 65%,#0d1824);border-bottom:2px solid #5e6f7f}.character-portrait{width:112px;height:112px;border:2px solid #b8944c;border-radius:9px;overflow:hidden;background:#263646;display:grid;place-items:center;color:#f1dfb2;font:800 32px/1 Georgia,serif;box-shadow:0 4px 14px rgba(0,0,0,.35)}.character-portrait img{width:100%;height:100%;object-fit:cover;display:block}.character-onepage-title h1{margin:0 0 5px;font:700 clamp(28px,3vw,42px)/1.05 Georgia,serif;color:#fff;text-shadow:0 2px 2px #000}.character-onepage-title>div{font:600 17px/1.3 Georgia,serif;color:#e4e7eb}.character-onepage-title p{margin:9px 0 0;color:#c5ccd4;font:italic 15px/1.35 Georgia,serif}.character-onepage-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.character-save-button{min-width:130px;background:#1474bd;border-color:#2e91de;color:#fff}.character-onepage-form{margin:0}.character-onepage-grid{display:grid;grid-template-columns:minmax(470px,1fr) minmax(500px,1.08fr);gap:10px;padding:10px;background:#26313a}.character-left-column{display:grid;grid-template-rows:auto auto;gap:10px;align-content:start}.sheet-panel{overflow:hidden;background:#f5f2ea;color:#15191e;border:1px solid #d0c6af;border-radius:9px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 3px 10px rgba(0,0,0,.28)}.sheet-panel-head{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:linear-gradient(#34495d,#26394c);color:#fff;border-bottom:1px solid #192735}.sheet-panel-head h2{margin:0;font:700 23px/1.15 Georgia,serif;text-shadow:0 1px 1px #000}.sheet-add-button,.sheet-fullscreen-button{width:auto;margin:0;padding:7px 10px;border:1px solid #73869a;background:#53687d;color:#fff;border-radius:6px;font-size:12px;box-shadow:inset 0 1px rgba(255,255,255,.15)}.sheet-add-button:hover,.sheet-fullscreen-button:hover{background:#657b91}.sheet-table{padding:0 10px 10px}.sheet-table-head,.sheet-table-row{display:grid;align-items:center}.sheet-attributes-table .sheet-table-head,.attribute-row{grid-template-columns:minmax(140px,1.05fr) 92px minmax(160px,1.35fr) 94px}.sheet-skills-table .sheet-table-head,.skill-row{grid-template-columns:minmax(145px,.9fr) minmax(210px,1.45fr) 94px}.sheet-table-head{min-height:38px;margin:0 -10px;padding:0 10px;background:#e6e7e8;border-bottom:1px solid #c4c8cc;font:700 13px/1.2 Georgia,serif;color:#20252a}.sheet-table-head span{padding:0 7px}.sheet-table-head small{font-weight:400}.sheet-table-row{min-height:48px;border-bottom:1px solid #d6d5d0}.sheet-table-row:last-child{border-bottom:0}.sheet-table-row>input{height:34px;margin:5px 7px;padding:5px 8px;background:#fff;color:#171b20;border:1px solid #b8c6d4;border-radius:5px;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}.sheet-name-input{font-weight:700}.sheet-value-input{text-align:center;font-size:17px}.sheet-skill-expression{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.sheet-table-row>input[readonly]{background:#f4f4f1;border-color:transparent;box-shadow:none}.sheet-row-actions{display:flex;align-items:center;justify-content:center;gap:5px}.sheet-dice-button,.sheet-delete-button{width:34px;height:34px;display:grid;place-items:center;margin:0;padding:0;border-radius:5px;text-decoration:none;border:1px solid #aebdcc;background:#f6f8f9;color:#183149;font-size:16px}.sheet-dice-button:hover{background:#dceaf5}.sheet-delete-button{color:#6d7377;background:transparent;border-color:transparent}.sheet-delete-button:hover{background:#f1d8d8;color:#9a3030}.new-sheet-row{background:#edf5fb}.sheet-empty{padding:22px 10px;text-align:center;color:#6c737a;font-style:italic}.inventory-onepage-panel{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:685px}.inventory-onepage-editor{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);padding:8px}.inventory-toolbar{border-radius:6px 6px 0 0;background:#eceff1;border-color:#c6cdd3}.inventory-toolbar button{background:#fff;color:#182028;border-color:#ccd2d7}.onepage-inventory-editor{min-height:590px;height:100%;overflow:auto;background:#fff;color:#111;border-color:#c4cbd1;border-radius:0 0 6px 6px;font:16px/1.55 Georgia,serif}.onepage-inventory-editor h2,.onepage-inventory-editor h3{font-family:Georgia,serif}.onepage-inventory-readonly{min-height:610px;margin:8px;background:#fff;color:#111;border-color:#c4cbd1;font:16px/1.55 Georgia,serif}.character-formula-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:64px;padding:10px 18px;background:linear-gradient(#182b3b,#10202e);border-top:1px solid #4d5f70;color:#f1f4f6;font:13px/1.4 Georgia,serif}.character-formula-footer code{padding:5px 9px;background:#172a3a;border:1px solid #53697d;border-radius:5px;color:#f4f6f8}.formula-values-hint{margin-left:auto;color:#d6dce2;font-style:italic}.inventory-fullscreen{position:fixed!important;z-index:650!important;inset:16px!important;min-height:0!important;border-radius:10px!important;box-shadow:0 20px 70px rgba(0,0,0,.75)!important}.inventory-fullscreen .onepage-inventory-editor{min-height:0}.inventory-fullscreen-open{overflow:hidden}.character-embed .character-onepage{margin:0;max-width:none}.character-embed .character-onepage-head{min-height:118px;grid-template-columns:92px minmax(0,1fr) auto;padding:10px 14px}.character-embed .character-portrait{width:82px;height:82px}.character-embed .character-onepage-title h1{font-size:30px}.character-embed .character-onepage-grid{grid-template-columns:minmax(420px,1fr) minmax(440px,1.06fr)}.character-embed .sheet-panel-head h2{font-size:19px}.character-embed .inventory-onepage-panel{min-height:580px}.character-embed .onepage-inventory-editor{min-height:500px}
@media(max-width:1050px){.character-onepage-grid,.character-embed .character-onepage-grid{grid-template-columns:1fr}.inventory-onepage-panel{min-height:520px}.onepage-inventory-editor{min-height:430px}.formula-values-hint{margin-left:0;width:100%}}
@media(max-width:720px){.character-onepage-head,.character-embed .character-onepage-head{grid-template-columns:72px minmax(0,1fr);gap:10px}.character-portrait,.character-embed .character-portrait{width:68px;height:68px}.character-onepage-title h1,.character-embed .character-onepage-title h1{font-size:24px}.character-onepage-title p{display:none}.character-onepage-actions{grid-column:1/-1;justify-content:flex-start}.sheet-panel-head{align-items:flex-start;flex-direction:column}.sheet-attributes-table .sheet-table-head,.attribute-row{grid-template-columns:minmax(110px,1fr) 72px minmax(130px,1.25fr) 76px}.sheet-skills-table .sheet-table-head,.skill-row{grid-template-columns:minmax(110px,.85fr) minmax(155px,1.35fr) 76px}.sheet-table{overflow-x:auto}.sheet-table-head,.sheet-table-row{min-width:520px}.inventory-fullscreen{inset:4px!important}}
/* v0.6.10 popup is intentionally wide so the one-page two-column sheet remains visible. */
.sheet-modal-card{width:min(1380px,96vw);height:min(900px,94vh)}

/* v0.6.11: profile avatar, external character window and print/PDF export */
.sheet-modal-actions{display:flex;align-items:center;gap:7px}
.sheet-modal-head .sheet-modal-external{width:auto;height:32px;padding:0 10px;font-size:12px;background:#303742;color:var(--text);border:1px solid #414957;border-radius:6px}
.sheet-modal-head .sheet-modal-external:hover{background:#414a58}
.character-standalone{min-height:100vh;background:#11161c}
.character-standalone .character-embed-container{padding:12px!important}
@media(max-width:720px){.sheet-modal-head .sheet-modal-external{font-size:0;width:34px;padding:0}.sheet-modal-head .sheet-modal-external::before{content:'↗';font-size:18px}}

@media print{
  @page{size:A4 landscape;margin:8mm}
  html,body{background:#fff!important;color:#111!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  body{overflow:visible!important}
  .topbar,.character-onepage-actions,.sheet-add-button,.sheet-delete-button,.sheet-fullscreen-button,.inventory-toolbar{display:none!important}
  .container,.character-embed-container{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}
  .character-onepage{max-width:none!important;width:100%!important;margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important}
  .character-onepage-head{min-height:96px!important;grid-template-columns:82px minmax(0,1fr)!important;padding:8px 12px!important;break-inside:avoid}
  .character-portrait{width:72px!important;height:72px!important}
  .character-onepage-title h1{font-size:28px!important}
  .character-onepage-grid,.character-embed .character-onepage-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr)!important;gap:6px!important;padding:6px!important;background:#dfe3e6!important}
  .character-left-column{gap:6px!important}
  .sheet-panel{box-shadow:none!important;break-inside:avoid}
  .sheet-panel-head{min-height:40px!important;padding:5px 8px!important}
  .sheet-panel-head h2{font-size:17px!important}
  .sheet-table-row{min-height:36px!important}
  .sheet-table-row>input{height:28px!important;margin:3px 5px!important;padding:2px 5px!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:#111!important}
  .sheet-dice-button{display:none!important}
  .sheet-row-actions{display:none!important}
  .sheet-attributes-table .sheet-table-head,.attribute-row{grid-template-columns:minmax(120px,1fr) 75px minmax(150px,1.2fr) 0!important}
  .sheet-skills-table .sheet-table-head,.skill-row{grid-template-columns:minmax(130px,.9fr) minmax(190px,1.35fr) 0!important}
  .sheet-table-head span:last-child{display:none!important}
  .inventory-onepage-panel{min-height:0!important;break-inside:auto}
  .inventory-onepage-editor,.onepage-inventory-editor,.onepage-inventory-readonly{min-height:500px!important;height:auto!important;background:#fff!important;border:0!important;color:#111!important;overflow:visible!important}
  .wysiwyg-editor{border:0!important}
  .character-formula-footer{min-height:40px!important;padding:6px 10px!important;break-inside:avoid}
  .character-formula-footer code{padding:2px 5px!important}
}

/* v0.6.15: campaign-specific dice rules */
.dice-preset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 20px}.dice-preset-card{display:flex;flex-direction:column;gap:7px;min-height:154px;padding:14px;background:#171b21;border:1px solid #3a414c;border-radius:9px}.dice-preset-card strong{font-size:16px}.dice-preset-card span{flex:1;color:var(--muted);font-size:12px;line-height:1.45}.dice-preset-card button{width:100%;margin-top:4px}.dice-rules-list{max-width:820px}.dice-rule-row{padding-left:2px;padding-right:2px}.dice-rule-row strong{font-size:14px}
@media(max-width:900px){.dice-preset-grid{grid-template-columns:1fr}}


/* v0.6.16: expanded symbol picker for campaign dice rules */
.dice-symbol-picker{margin:12px 0 14px;padding:12px;background:#15191f;border:1px solid #353d48;border-radius:8px}.dice-symbol-picker-title{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:9px}.dice-symbol-grid{display:grid;grid-template-columns:repeat(10,minmax(38px,1fr));gap:6px}.dice-symbol-grid button{height:40px;min-width:0;margin:0;padding:0;display:grid;place-items:center;background:#242a33;border:1px solid #3d4653;border-radius:6px;color:var(--text);font-size:20px;line-height:1}.dice-symbol-grid button:hover{background:#343d49;border-color:#596575;transform:translateY(-1px)}.dice-symbol-grid button.selected{background:#4b4020;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
@media(max-width:900px){.dice-symbol-grid{grid-template-columns:repeat(8,minmax(38px,1fr))}}@media(max-width:620px){.dice-symbol-picker-title{align-items:flex-start;flex-direction:column}.dice-symbol-grid{grid-template-columns:repeat(6,minmax(38px,1fr))}}

/* v0.6.17 – Text-Handouts und optionale Anlagen */
.handout-view-page{max-width:1100px;margin:18px auto;padding:0 16px 36px}.handout-view-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.handout-view-head h1{margin:0 0 4px}.handout-text{min-height:180px;padding:24px;background:#f5f2ea;color:#171b20;border:1px solid #d0c6af;border-radius:10px;box-shadow:0 6px 24px rgba(0,0,0,.22);font:17px/1.6 Georgia,serif}.handout-text h2,.handout-text h3{font-family:Georgia,serif}.handout-attachment{margin-top:18px;padding:16px;background:#141a20;border:1px solid #333c46;border-radius:10px}.handout-attachment h2{margin:0 0 12px}.handout-attachment img{display:block;max-width:100%;max-height:78vh;margin:auto;border-radius:8px}.handout-attachment iframe{display:block;width:100%;height:75vh;border:0;border-radius:8px;background:#fff}@media(max-width:700px){.handout-view-head{display:block}.handout-view-head .btn{margin-top:10px}.handout-text{padding:16px}}

/* v0.6.18 – gezielte Handout-Freigaben */
.handout-manage-row{align-items:flex-start}.handout-share-menu{position:relative}.handout-share-menu>summary{list-style:none;cursor:pointer}.handout-share-menu>summary::-webkit-details-marker{display:none}.handout-share-menu[open]>summary{background:#38414d}.handout-visibility-form{position:absolute;right:0;top:calc(100% + 6px);z-index:20;width:min(360px,82vw);padding:12px;background:#171c22;border:1px solid #3a4450;border-radius:8px;box-shadow:0 14px 38px rgba(0,0,0,.48)}.share-choice{display:flex!important;align-items:center;gap:7px;margin:0!important;padding:7px 5px;border-radius:5px;cursor:pointer}.share-choice:hover{background:#222a33}.share-choice input{width:auto!important;margin:0!important}.handout-recipient-list{display:grid;gap:5px;max-height:220px;overflow:auto;margin:8px 0 10px;padding:8px;background:#101419;border:1px solid #303945;border-radius:6px}.handout-recipient-list[hidden]{display:none!important}.handout-recipient-list label{display:flex;align-items:center;gap:7px;margin:0;padding:5px 4px}.handout-recipient-list input{width:auto!important;margin:0!important}.handout-share-create{margin:12px 0;padding:12px;border:1px solid #353e49;border-radius:8px;background:#151a20}.handout-share-create>strong{display:block;margin-bottom:6px}.handout-share-create .handout-recipient-list{max-height:260px}.handout-actions{position:relative}@media(max-width:720px){.handout-manage-row{display:block}.handout-actions{margin-top:10px}.handout-visibility-form{left:0;right:auto;width:min(360px,88vw)}}

/* v0.6.20 – campaign standard checks against character field values */
.standard-check-box{margin:14px 0 24px;padding:16px;background:#141a20;border:1px solid #3b4652;border-radius:10px;box-shadow:0 6px 22px rgba(0,0,0,.22)}
.standard-check-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.standard-check-head h3{margin:0 0 4px}.standard-check-head p{margin:0}
.standard-check-state{padding:4px 9px;border-radius:999px;border:1px solid #555;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.standard-check-state.is-on{background:#173b27;border-color:#3f8d5e;color:#c9f5d8}.standard-check-state.is-off{background:#34282a;border-color:#755059;color:#e4c3c8}
.standard-check-examples{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.check-example-card{display:flex;flex-direction:column;gap:7px;padding:12px;background:#1b2128;border:1px solid #343e49;border-radius:8px}.check-example-card strong{font-size:14px}.check-example-card span{flex:1;color:var(--muted);font-size:12px;line-height:1.45}.check-example-card button{width:100%;margin-top:3px}
.standard-check-form{padding-top:12px;border-top:1px solid #333c46}.standard-check-form .row{align-items:end}.inline-label-fields{display:grid;grid-template-columns:62px minmax(0,1fr);gap:7px}.inline-label-fields input{min-width:0}.standard-check-preview{margin:10px 0;padding:9px 11px;background:#10151a;border:1px solid #303944;border-radius:7px;color:#d9e3ec;font-size:13px}.sub-manage-title{margin-top:24px}.sub-manage-title h3{margin:0}
.character-check-help{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 14px;border-bottom:1px solid #4a5560;background:#16212b;color:#e9edf1;font-size:13px}.character-check-help.is-enabled{box-shadow:inset 4px 0 #4e9c6a}.character-check-help.is-disabled{color:#c2c8ce;box-shadow:inset 4px 0 #7b6570}.character-check-help span{color:#cbd3da}.character-probe-table .sheet-table-head,.character-probe-row{grid-template-columns:minmax(115px,.9fr) 76px minmax(190px,1.5fr) 82px}.sheet-probe-cell{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(110px,1fr);gap:5px;align-items:center;padding:5px}.sheet-probe-cell select,.sheet-probe-cell input{height:34px;margin:0;min-width:0;padding:5px 7px;background:#fff;color:#171b20;border:1px solid #b8c6d4;border-radius:5px}.sheet-probe-cell [hidden]{display:none!important}.probe-readonly{grid-column:1/-1;padding:5px 7px;color:#394550;font-size:12px}.character-probe-row .sheet-value-input{text-align:center}.character-probe-row .sheet-row-actions{padding-right:4px}
@media(max-width:1050px){.standard-check-examples{grid-template-columns:1fr}.character-probe-table{overflow-x:auto}.character-probe-table .sheet-table-head,.character-probe-row{min-width:610px}}
@media(max-width:720px){.standard-check-head{display:block}.standard-check-state{display:inline-block;margin-top:8px}.inline-label-fields{grid-template-columns:55px minmax(0,1fr)}}
@media print{.character-check-help{display:none!important}.sheet-probe-cell select{border:0!important;background:transparent!important}.custom-probe-formula[hidden]{display:none!important}}

/* v0.6.21 – vereinfachte, regelwerkneutrale Probenmechanik */
.simple-dice-config{max-width:980px}.simple-dice-grid{display:grid;grid-template-columns:minmax(220px,1.25fr) minmax(150px,.8fr) minmax(210px,1fr);gap:10px;align-items:end;margin:12px 0}.simple-dice-grid>div{min-width:0}.simple-dice-grid [hidden]{display:none!important}.simple-dice-preview code,.dice-mechanic-examples code{display:inline-block;padding:3px 7px;border-radius:5px;background:#0e141a;border:1px solid #39434d;color:#edf4fa}.dice-help-details,.advanced-dice-rules{margin-top:14px;border:1px solid #39434d;border-radius:9px;background:#11171d;overflow:hidden}.dice-help-details>summary,.advanced-dice-rules>summary{cursor:pointer;padding:12px 14px;font-weight:800;color:#eef3f7;user-select:none}.dice-help-details[open]>summary,.advanced-dice-rules[open]>summary{border-bottom:1px solid #333d47;background:#171e25}.dice-mechanic-examples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:12px}.dice-mechanic-examples>div{padding:12px;border:1px solid #343d47;border-radius:8px;background:#171d23}.dice-mechanic-examples strong{display:block;margin-bottom:6px}.dice-mechanic-examples p{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.advanced-dice-body{padding:0 14px 16px}.advanced-dice-body .sub-manage-title{margin-top:14px}
.character-simple-table .sheet-table-head,.character-simple-row{grid-template-columns:minmax(150px,1.25fr) 90px 112px}.character-field-wrap{border-bottom:1px solid #d6d5d0}.character-field-wrap .character-simple-row{border-bottom:0}.character-field-advanced{display:flex;flex-direction:column;gap:7px;margin:0 8px 9px;padding:9px 10px;border:1px dashed #a9b6c1;border-radius:6px;background:#e9eef2;color:#27313a}.character-field-advanced[hidden]{display:none!important}.field-advanced-controls{display:grid;grid-template-columns:minmax(170px,.75fr) minmax(180px,1.25fr);gap:7px}.field-advanced-controls select,.field-advanced-controls input{height:34px;margin:0;padding:5px 7px;background:#fff;color:#171b20;border:1px solid #b8c6d4;border-radius:5px;min-width:0}.sheet-gear-button{width:34px;height:34px;display:grid;place-items:center;margin:0;padding:0;border-radius:5px;border:1px solid transparent;background:transparent;color:#53616c}.sheet-gear-button:hover,.sheet-gear-button.is-custom{background:#e2eaf0;border-color:#b8c6d4}.character-simple-row.new-sheet-row,.character-field-wrap.new-sheet-row{background:#edf5fb}
@media(max-width:900px){.simple-dice-grid,.dice-mechanic-examples{grid-template-columns:1fr}.character-simple-table{overflow-x:auto}.character-simple-table .sheet-table-head,.character-simple-row{min-width:420px}.field-advanced-controls{grid-template-columns:1fr}}
@media print{.sheet-gear-button,.character-field-advanced{display:none!important}.character-simple-table .sheet-table-head,.character-simple-row{grid-template-columns:minmax(140px,1fr) 80px 0!important}.character-simple-table .sheet-table-head span:last-child{display:none!important}}

/* v0.6.22 – Spielercharaktere als besitzbare Tokens */
.token-library-window .token-library-card.is-character{border-color:rgba(76,155,214,.7);background:linear-gradient(135deg,#111923,#111419)}
.token-library-window .token-library-card.is-character .token-library-thumb{border-color:#4c9bd6;box-shadow:0 0 0 2px rgba(76,155,214,.12)}
.character-token-badge{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#18334a;border:1px solid #386a91;font-size:14px}
.my-token-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:center;margin:8px;padding:8px;border:1px solid #39414c;border-radius:8px;background:#151a20}
.my-token-card.is-on-map{border-color:#356f4b;background:#142019}
.my-token-avatar{width:42px;height:42px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:#242b34;border:1px solid #47515e;font-size:18px}
.my-token-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.my-token-info{min-width:0;display:flex;flex-direction:column;gap:3px}.my-token-info strong{font-size:12px}.my-token-info small{font-size:10px;line-height:1.3;color:var(--muted)}


/* v0.6.23 – Token per Ziehgriff stufenlos skalieren */
.token-resize-handle{position:absolute;right:var(--token-resize-offset,-5px);bottom:var(--token-resize-offset,-5px);z-index:95;width:var(--token-resize-size,18px);height:var(--token-resize-size,18px);min-width:0;margin:0;padding:0;border:var(--token-resize-border,2px) solid #fff;border-radius:50%;background:#1d7ec2;box-shadow:0 1px 5px rgba(0,0,0,.8);cursor:nwse-resize;touch-action:none;opacity:.86}
.token-resize-handle::after{content:'↘';display:grid;place-items:center;width:100%;height:100%;color:#fff;font-size:calc(var(--token-resize-size,18px) * .62);line-height:1;font-weight:900}
.token-resize-handle:hover,.map-token[data-resizing="1"] .token-resize-handle{opacity:1;background:#2498e8}
.map-token[data-resizing="1"]{outline:2px dashed rgba(255,255,255,.85);outline-offset:3px}

/* v0.6.25 – optionale Kampagnenmodule / Pokerkartendeck */
.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin:16px 0}.module-card{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:14px;align-items:start;padding:16px;border:1px solid #39434e;border-radius:10px;background:#151b21}.module-card.is-enabled{border-color:#6e8645;box-shadow:inset 3px 0 0 #7ca34b}.module-card-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:10px;background:#262e37;font-size:28px}.module-card-body h3{margin:0 0 6px}.module-card-body p{margin:0 0 8px;color:var(--muted)}.module-card-body ul{margin:6px 0 0;padding-left:18px;color:#cfd5dd;font-size:13px}.module-card-body li{margin:3px 0}.module-toggle-form{margin:0}.module-switch{display:flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap}.module-switch input{position:absolute;opacity:0;pointer-events:none}.module-switch span{width:42px;height:23px;position:relative;border-radius:999px;background:#353d46;border:1px solid #4b5561;transition:.15s}.module-switch span::after{content:'';position:absolute;width:17px;height:17px;left:2px;top:2px;border-radius:50%;background:#bbc2ca;transition:.15s}.module-switch input:checked+span{background:#416b34;border-color:#63934f}.module-switch input:checked+span::after{transform:translateX(19px);background:#fff}.module-switch b{font-size:12px}.module-hint{margin-top:12px}.poker-panel{padding-bottom:10px}.poker-deck-count{font-size:11px;color:var(--muted);font-weight:700}.poker-gm-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px}.poker-gm-actions button{margin:0;font-size:11px;padding:7px 6px}.poker-gm-actions #pokerReset{grid-column:1/-1}.poker-help{padding:3px 10px 9px;line-height:1.45}.poker-requests{display:grid;gap:7px;padding:0 8px 8px}.poker-request{display:grid;gap:7px;padding:9px;border:1px solid #47515c;border-radius:7px;background:#191f26}.poker-request.incoming{border-color:#8b6c20;background:#201c12}.poker-request>div:first-child{display:grid;gap:2px}.poker-request small{color:var(--muted)}.poker-request>div:last-child{display:flex;gap:5px}.poker-request button{margin:0;padding:5px 7px;font-size:10px}.poker-request.outgoing{grid-template-columns:minmax(0,1fr) auto;align-items:center;font-size:11px;color:#d4d9df}.poker-player-list{display:grid;gap:5px;padding:0 8px 8px}.poker-player-row{display:grid;grid-template-columns:minmax(0,1fr) 62px auto;gap:8px;align-items:center;padding:8px;border:1px solid #303842;border-radius:8px;background:#151a20}.poker-player-row.is-me{border-color:#6b5c2a;background:#1c1b16}.poker-player-who{display:flex;align-items:center;gap:7px;min-width:0}.poker-player-avatar{width:30px;height:30px;display:grid;place-items:center;flex:0 0 30px;border-radius:50%;overflow:hidden;background:#303842;font-size:11px;font-weight:800}.poker-player-avatar img{width:100%;height:100%;object-fit:cover}.poker-player-who>span:last-child{display:flex;min-width:0;flex-direction:column}.poker-player-who strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.poker-player-who small{font-size:9px;color:#d7ad33}.poker-player-card{display:flex;justify-content:center}.poker-card{width:44px;height:61px;position:relative;display:grid;place-items:center;background:#f7f4ec;color:#151515;border:1px solid #ddd6c6;border-radius:5px;box-shadow:0 2px 6px rgba(0,0,0,.35);font-family:Georgia,serif}.poker-card.is-red{color:#bd2430}.poker-card-rank{position:absolute;top:4px;left:5px;font-size:11px;font-weight:800}.poker-card-suit{font-size:23px;line-height:1}.poker-card.is-joker .poker-card-rank{font-size:7px;letter-spacing:-.2px}.poker-card.is-joker .poker-card-suit{font-size:25px}.poker-card-empty{font-size:10px;text-align:center;color:var(--muted)}.poker-player-actions button{margin:0;padding:5px 6px;font-size:9px;white-space:nowrap}.poker-player-actions:empty{display:none}@media(max-width:720px){.module-card{grid-template-columns:48px minmax(0,1fr)}.module-card-icon{width:44px;height:44px}.module-toggle-form{grid-column:1/-1}.poker-player-row{grid-template-columns:minmax(0,1fr) 58px}.poker-player-actions{grid-column:1/-1}.poker-player-actions button{width:100%}}

/* v0.6.26 – Pokerdeck: Avatar-Hardlimit */
.poker-player-avatar,.poker-player-avatar img{max-width:30px!important;max-height:30px!important}.poker-player-avatar img{width:30px!important;height:30px!important;object-fit:cover!important;display:block!important}

/* v0.6.27 – Pokerdeck: Drag & Drop + mehrere Karten für die Spielleitung */
.poker-player-row{grid-template-columns:minmax(0,1fr) minmax(62px,auto) auto}
.poker-player-row.is-gm{border-color:#4b5564;background:#171d24}
.poker-player-row.is-dragging{opacity:.55;border-style:dashed;box-shadow:0 0 0 1px #d8a91f}
.poker-drag-handle{display:grid;place-items:center;width:18px;height:28px;flex:0 0 18px;border-radius:4px;color:#87919d;cursor:grab;font-weight:900;letter-spacing:-3px;user-select:none}
.poker-drag-handle:hover{color:#e1b52b;background:#232b34}.poker-drag-handle:active{cursor:grabbing}
.poker-player-cards{display:flex;justify-content:flex-start;gap:5px;flex-wrap:wrap;max-width:150px}
.poker-gm-card-item{position:relative;display:inline-flex}
.poker-card-discard{position:absolute!important;right:-5px;top:-5px;width:17px!important;height:17px!important;min-width:17px!important;margin:0!important;padding:0!important;display:grid;place-items:center;border-radius:50%!important;background:#922f35!important;border:1px solid #c75760!important;color:#fff!important;font:700 12px/1 Arial,sans-serif!important;z-index:2}
.poker-card-discard:hover{background:#bd3843!important}
@media(max-width:720px){.poker-player-row{grid-template-columns:minmax(0,1fr) auto}.poker-player-card{grid-column:1/-1;justify-content:flex-start}.poker-player-cards{max-width:none}.poker-player-actions{grid-column:1/-1}}

/* v0.6.28 – Savage-Worlds-Initiative: jede SL-Karte als eigener Eintrag */
.poker-gm-actions{grid-template-columns:1fr 1fr}
.poker-gm-actions #pokerCollect{grid-column:auto}
.poker-initiative-position{width:20px;flex:0 0 20px;text-align:right;font-size:11px;font-weight:900;color:#e0b127}
.poker-player-row.is-gm .poker-initiative-position{color:#cfd7e2}
.poker-player-row[data-entry-key^="gmcard:"]{border-color:#4b5564;background:#171d24}
.poker-player-row[data-entry-key^="gmcard:"] .poker-player-actions:empty{display:none}
.poker-player-row .poker-player-card{justify-content:center}
@media(max-width:720px){.poker-gm-actions{grid-template-columns:1fr}.poker-gm-actions #pokerCollect{grid-column:auto}.poker-initiative-position{width:18px;flex-basis:18px}}
/* v0.6.29 – offene/geheime SL-Karten */
.poker-player-row.is-secret{border-color:#745e29;background:#1e1a12;box-shadow:inset 3px 0 0 #c99d2b}
.poker-gm-card-item.is-secret .poker-card{box-shadow:0 0 0 2px rgba(222,174,42,.35),0 2px 6px rgba(0,0,0,.35)}
.poker-card-reveal{position:absolute!important;left:-7px;bottom:-6px;width:22px!important;height:22px!important;min-width:22px!important;margin:0!important;padding:0!important;display:grid;place-items:center;border-radius:50%!important;background:#bd8f16!important;border:1px solid #e3b83c!important;color:#111!important;font:700 12px/1 Arial,sans-serif!important;z-index:3}
.poker-card-reveal:hover{background:#e2b229!important}

/* v0.6.32 – Aktionskarte umdrehen = fertig */
.poker-card.is-flippable{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.poker-card.is-flippable:hover,.poker-card.is-flippable:focus{transform:translateY(-2px);box-shadow:0 0 0 2px rgba(224,177,39,.45),0 4px 10px rgba(0,0,0,.5);outline:none}
.poker-card-back{overflow:hidden;background:repeating-linear-gradient(45deg,#26384d 0,#26384d 5px,#172434 5px,#172434 10px);border-color:#73859a;color:#fff;text-align:center;box-shadow:inset 0 0 0 3px #d9dee5,inset 0 0 0 5px #384d65,0 2px 6px rgba(0,0,0,.35)}
.poker-card-back::before{content:'';position:absolute;inset:7px;border:1px solid rgba(255,255,255,.38);border-radius:3px;pointer-events:none}
.poker-card-back-mark{font-size:17px;line-height:1;filter:grayscale(1) brightness(1.5)}
.poker-card-back-done{position:absolute;left:2px;right:2px;bottom:4px;font:800 7px/1 Arial,sans-serif;letter-spacing:.2px;text-transform:uppercase;color:#fff;text-shadow:0 1px 2px #000}
.poker-player-row.is-finished{opacity:.82}
.poker-player-row.is-finished .poker-initiative-position{color:#7f8a96}

/* v0.6.34 – eindeutige Löschaktionen für Charaktere und Handouts */
.character-manage-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.character-manage-actions .inline-form,.handout-actions .inline-form{display:inline-flex}
.character-manage-actions .danger-mini,.handout-actions .danger-mini{white-space:nowrap;padding:8px 10px}
@media(max-width:720px){.character-manage-row{align-items:flex-start}.character-manage-actions{justify-content:flex-start}}

/* v0.6.35 – Spielerfarben, Flüstern und private Würfe */
.profile-color-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 12px}.profile-color-row input[type=color]{width:54px;height:36px;padding:2px;margin:0;border-radius:6px;cursor:pointer}.chatmsg{--player-color:#5B9BD5;border-left:3px solid var(--player-color);padding-left:6px}.chatmsg .chat-avatar{border:2px solid var(--player-color)}.chatmsg .meta{color:var(--player-color);font-weight:700}.secret-chatmsg{border-left-color:#9b6fe1}.whisper-chatmsg{background:rgba(89,126,184,.10);border-radius:5px;padding-top:5px;padding-bottom:5px}.chat-input-wrap{position:relative}.chat-command-help{font-size:11px;color:var(--muted);padding:3px 2px 6px}.chat-command-help code{color:#d6deea;background:#242a33;border:1px solid #39404b;border-radius:4px;padding:1px 4px}.whisper-recipient-picker{display:flex;gap:4px;flex-wrap:wrap;padding:6px;margin-bottom:6px;border:1px solid #353c47;border-radius:6px;background:#13171d}.whisper-recipient-picker[hidden]{display:none!important}.whisper-recipient-picker button{display:flex;align-items:center;gap:5px;width:auto;padding:5px 7px;background:#2c333d;color:var(--text);font-size:11px;border:1px solid #414957}.player-color-dot{width:10px;height:10px;flex:0 0 10px;border-radius:50%;background:var(--player-color,#5B9BD5);box-shadow:0 0 0 1px rgba(255,255,255,.35)}

/* v0.6.38 – GM chat clear control */
.chat-heading-actions{display:flex;align-items:center;gap:7px;min-width:0}.chat-clear-button{width:auto;margin:0;padding:5px 7px;background:var(--danger);color:#fff;border-radius:6px;font-size:11px;white-space:nowrap}.chat-clear-button:hover{filter:brightness(1.08)}.chat-clear-button:disabled{opacity:.55;cursor:wait}.chat-heading-actions .dice-sound-control{min-width:0}

/* v0.6.39 – Kampagnen kopieren und Vorlagen */
.manage-head-actions{flex-wrap:wrap}.manage-head-actions .inline-form{margin:0}.template-library{margin-top:28px}.template-library-head{margin-bottom:10px}.template-row{border-style:dashed}.template-row .game-badge{background:linear-gradient(145deg,#473768,#27243b)}.template-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.template-create-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.template-create-form input[name="name"]{width:220px;min-width:160px;margin:0}.template-copy-info{margin-top:16px;line-height:1.55}@media(max-width:780px){.template-actions{width:100%;justify-content:flex-start}.template-create-form{width:100%}.template-create-form input[name="name"]{flex:1;width:auto}.manage-head-actions{justify-content:flex-start}}

/* v0.6.42 – globale Tokenverwaltung */
.global-token-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.global-token-head h1{margin-bottom:5px}.global-token-count{padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#171b21;color:var(--muted);white-space:nowrap}.global-token-count strong{color:var(--text)}
.global-token-create h2{margin-top:0}.global-token-create-form{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(130px,.65fr) minmax(120px,.55fr) minmax(220px,1.2fr) auto;gap:10px;align-items:end}.global-token-create-form label,.global-token-edit-form label{display:flex;flex-direction:column;gap:5px}.global-token-create-form input,.global-token-create-form select,.global-token-edit-form input,.global-token-edit-form select{margin:0}.global-token-create-form button{margin:0;white-space:nowrap}
.global-token-toolbar{display:flex;align-items:center;gap:6px;margin:16px 0 10px;flex-wrap:wrap}.global-token-toolbar button{width:auto;margin:0;padding:7px 10px}.global-token-toolbar button.active{background:#443815!important;border-color:var(--accent)!important}.global-token-toolbar input{margin:0 0 0 auto;max-width:260px}
.global-token-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.global-token-card{position:relative;display:grid;grid-template-columns:92px minmax(0,1fr);gap:13px;align-items:start;padding:13px}.global-token-card[hidden]{display:none!important}.global-token-preview{width:92px;height:92px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:#171b21;border:2px solid #566170;color:#e8ebef;font-size:32px;box-shadow:inset 0 0 0 3px rgba(255,255,255,.025)}.global-token-preview.is-item{border-radius:12px;border-color:#8a7027}.global-token-preview img{width:100%;height:100%;display:block;object-fit:cover}.global-token-edit-form{min-width:0}.global-token-edit-form .two-col{grid-template-columns:1fr 90px}.global-token-card-actions{display:flex;justify-content:flex-end;margin-top:8px}.global-token-card-actions button{margin:0;width:auto}.global-token-delete-form{grid-column:1/-1;margin:0;padding-top:9px;border-top:1px solid var(--line);display:flex;justify-content:flex-end}.global-token-delete-form button{width:auto;margin:0;padding:6px 9px}.global-token-empty{grid-column:1/-1;text-align:center;padding:30px}
@media(max-width:1100px){.global-token-create-form{grid-template-columns:1fr 1fr}.global-token-create-form button{grid-column:1/-1}.global-token-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.global-token-head{display:block}.global-token-count{display:inline-block;margin-top:7px}.global-token-create-form{grid-template-columns:1fr}.global-token-create-form button{grid-column:auto}.global-token-toolbar input{margin-left:0;max-width:none;width:100%}.global-token-grid{grid-template-columns:1fr}.global-token-card{grid-template-columns:76px minmax(0,1fr)}.global-token-preview{width:76px;height:76px}}
/* v0.6.43 – bestehende Spieler können weiteren Spielen per Einladungscode beitreten */
.join-game-card{max-width:720px}.join-game-card h2{margin:0 0 4px}.join-game-form{margin-top:10px}.join-code-row{align-items:flex-end}.join-code-row input{margin-bottom:0;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.join-code-row button{flex:0 0 auto;min-width:130px}.notice.danger{border-left-color:var(--danger);background:#2a1c20;color:#ffdfe3}@media(max-width:620px){.join-code-row>*{flex-basis:100%}.join-code-row button{width:100%}}

/* v0.6.44 – Waffen im Charakterbogen */
.character-left-column{grid-template-rows:none;grid-auto-rows:auto}
.character-weapons-table .sheet-table-head,.weapon-row{grid-template-columns:minmax(120px,.9fr) minmax(185px,1.25fr) minmax(170px,1.15fr) 58px}
.weapon-formula-cell{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:4px;align-items:center;padding:5px 4px}
.weapon-formula-cell>input{height:34px;min-width:0;margin:0;padding:5px 7px;background:#fff;color:#171b20;border:1px solid #b8c6d4;border-radius:5px;box-shadow:inset 0 1px 2px rgba(0,0,0,.08);font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.weapon-formula-cell>input[readonly]{background:#f4f4f1;border-color:transparent;box-shadow:none}
.weapon-formula-cell .sheet-dice-button{width:34px;height:34px}
.weapon-help{padding:0 12px 11px;color:#58636d;font-size:12px;line-height:1.45}.weapon-help code{padding:2px 4px;border-radius:4px;background:#e4e9ed;color:#273642}
@media(max-width:900px){.character-weapons-table{overflow-x:auto}.character-weapons-table .sheet-table-head,.weapon-row{min-width:650px}}
@media print{.character-weapons-table .sheet-table-head,.weapon-row{grid-template-columns:minmax(110px,.85fr) minmax(150px,1.2fr) minmax(140px,1.1fr) 0!important}.weapon-formula-cell{grid-template-columns:1fr;padding:2px 4px}.weapon-formula-cell .sheet-dice-button{display:none!important}.weapon-formula-cell>input{height:28px!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important}.weapon-help{display:none!important}}

/* v0.6.45 calculated character values */
.character-value-hint{padding:7px 10px;background:#eef3f7;border-bottom:1px solid #ccd4db;color:#46515b;font-size:12px}.character-value-hint code{padding:2px 5px;background:#fff;border:1px solid #d2d9de;border-radius:4px;color:#24384a}

/* v0.6.46 – Roll20-artige Rasterausrichtung */
.grid-align-values{display:flex;gap:12px;flex-wrap:wrap;margin:-3px 0 8px;color:var(--muted);font-size:11px}.grid-align-values strong{color:var(--text)}
.grid-align-overlay{position:absolute;inset:0;z-index:120;display:none;cursor:crosshair;pointer-events:none;background:rgba(20,70,110,.06)}.grid-align-overlay.active{display:block;pointer-events:auto}.grid-align-selection{position:absolute;width:0;height:0;border:2px solid #50b9ff;background:rgba(80,185,255,.13);box-shadow:0 0 0 1px rgba(0,0,0,.8),inset 0 0 0 1px rgba(255,255,255,.2);pointer-events:none}.grid-align-selection::before,.grid-align-selection::after{content:'';position:absolute;pointer-events:none}.grid-align-selection::before{left:33.333%;top:0;bottom:0;width:33.333%;border-left:1px dashed rgba(255,255,255,.8);border-right:1px dashed rgba(255,255,255,.8)}.grid-align-selection::after{top:33.333%;left:0;right:0;height:33.333%;border-top:1px dashed rgba(255,255,255,.8);border-bottom:1px dashed rgba(255,255,255,.8)}
.grid-align-hint{position:absolute;z-index:145;top:42px;left:50%;transform:translateX(-50%);max-width:min(600px,82%);padding:9px 13px;border-radius:8px;border:1px solid #54b9ef;background:rgba(12,27,39,.95);box-shadow:0 4px 18px rgba(0,0,0,.55);text-align:center;pointer-events:none}.grid-align-hint strong{display:block;color:#8bd6ff}.grid-align-hint span{font-size:12px;color:#dce9f1}.map-stage.grid-aligning{cursor:crosshair}

/* v0.6.48: fail-closed map reveal — Fog is ready before the map can become visible */
.map-privacy-gate{position:absolute;inset:0;z-index:170;display:grid;place-items:center;background:#030405;color:#eef1f5;pointer-events:auto;text-align:center;padding:18px}
.map-privacy-gate>div{display:flex;flex-direction:column;gap:5px;padding:11px 15px;border:1px solid #303641;border-radius:9px;background:#111419;box-shadow:0 8px 30px rgba(0,0,0,.55)}
.map-privacy-gate strong{font-size:13px}.map-privacy-gate span{font-size:11px;color:var(--muted)}
.map-privacy-gate.is-error>div{border-color:#7b343b}.map-privacy-gate.is-error strong{color:#ffd9dc}
.map-stage.map-privacy-locked .map-img,.map-stage.map-privacy-locked .grid-overlay,.map-stage.map-privacy-locked .token-layer,.map-stage.map-privacy-locked .measure-layer,.map-stage.map-privacy-locked .interaction-layer,.map-stage.map-privacy-locked .fog-brush-cursor,.map-stage.map-privacy-locked .grid-align-overlay{visibility:hidden!important}
.map-stage.map-privacy-locked .fog-layer{visibility:visible!important}
.map-stage.map-privacy-ready .map-privacy-gate{display:none}
