*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{font-family:var(--font);font-size:15px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
h1,h2,h3{font-family:var(--mono);font-weight:500;margin:0 0 .5rem}
h2{font-size:1.15rem} h3{font-size:.95rem;margin-top:1.25rem}
.hint{color:var(--text-2);font-size:.88rem;margin:.25rem 0 .75rem}
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:0 1.1rem;border:1px solid var(--border);border-radius:var(--r);background:var(--surface-2);color:var(--text);font:inherit;font-weight:500;cursor:pointer;transition:background .18s,border-color .18s,opacity .18s}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-hover)}
.btn.danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}
.btn.small{min-height:36px;padding:0 .8rem;font-size:.9rem}
.btn.big{min-height:52px;font-size:1.05rem;padding:0 1.6rem}
.btn:disabled{opacity:.5;cursor:default}
.icon-btn{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;border:0;border-radius:var(--r);background:transparent;color:var(--text);cursor:pointer;transition:background .18s}
.icon-btn:hover{background:var(--surface-2)}
.badge{position:absolute;top:2px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--accent);color:var(--on-accent);font-size:.7rem;line-height:16px;text-align:center;font-weight:600}

/* Startseite */
#landing{min-height:100%;display:grid;place-items:center;padding:24px 16px}
.landing-card{max-width:460px;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:32px 24px;text-align:center}
.landing-card .logo{border-radius:12px}
.landing-card h1{font-size:1.7rem;margin-top:.75rem}
.lead{color:var(--text-2);margin:.25rem 0 1.25rem}
.steps{text-align:left;margin:0 auto 1.5rem;padding-left:1.4rem;max-width:340px;color:var(--text)}
.steps li{padding:.15rem 0}

/* Raum-Layout */
#room{display:flex;flex-direction:column;height:100dvh;overflow:hidden}
.bar{display:flex;align-items:center;gap:6px;background:var(--surface);border-color:var(--border);padding:6px 10px}
.bar.top{border-bottom:1px solid var(--border);padding-top:max(6px,env(safe-area-inset-top))}
.bar.bottom{border-top:1px solid var(--border);justify-content:center;padding-bottom:max(6px,env(safe-area-inset-bottom))}
.brand{display:flex;align-items:center;gap:8px;margin-right:4px;padding:4px 6px;border:0;border-radius:var(--r);background:transparent;color:var(--text);font-family:var(--mono);font-size:.9rem;cursor:pointer;transition:background .18s}
.brand:hover{background:var(--surface-2)}
.brand img{border-radius:6px}
.grow{flex:1}
.pager{display:flex;align-items:center;gap:2px;min-width:0;flex:0 1 auto}
.pager .icon-btn{width:32px;flex:none}
.pages{display:flex;gap:4px;overflow-x:auto;min-width:0;scrollbar-width:none;padding:2px 0}
.pages button{flex:none;min-width:34px;height:34px;padding:0 6px;border:1px solid var(--border);border-radius:var(--r);background:transparent;color:var(--text-2);font:inherit;font-size:.88rem;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .18s,border-color .18s}
.pages button.first{margin-left:8px}
.pages button:first-child{margin-left:0}
.pages button:hover:not(:disabled){border-color:var(--accent)}
.pages button[aria-current="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--text);font-weight:600}
.pages button:disabled{cursor:default}
.page-name{min-width:0;max-width:22vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;color:var(--text-3)}
.status{position:absolute;top:calc(56px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:5;pointer-events:none;padding:4px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);font-size:.85rem;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis}
.status:empty{display:none}

.stage{position:relative;flex:1;min-height:0;background:var(--canvas);overflow:hidden}
#canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block;cursor:grab;user-select:none;-webkit-user-select:none}
#canvas[data-tool="pen"],#canvas[data-tool="arrow"],#canvas[data-tool="ellipse"]{cursor:crosshair}
#canvas[data-tool="text"]{cursor:text}
#canvas[data-tool="none"]{cursor:default}
.icon-btn:disabled{opacity:.35;cursor:default}
#canvas.grabbing{cursor:grabbing}
.empty{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;text-align:center;color:var(--text-2);padding:16px}
.empty p{margin:0}
.text-input{position:absolute;z-index:4;min-width:140px;max-width:80vw;padding:2px 4px;border:2px dashed var(--accent);border-radius:4px;background:rgba(255,255,255,.92);color:#111;font:inherit;resize:none;overflow:hidden;line-height:1.2}
.chip{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:5;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid var(--accent);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:.9rem;box-shadow:var(--shadow);cursor:pointer}
.float{position:absolute;right:12px;bottom:12px;z-index:5;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}

.toasts{position:absolute;right:12px;top:12px;z-index:6;display:grid;gap:8px;width:min(340px,calc(100% - 24px))}
.toast{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);font-size:.92rem}
.toast.request{border-color:var(--accent)}
.toast .row{display:flex;gap:8px;margin-top:8px}
.toast .row .btn{flex:1}
.toast .bar-time{height:3px;margin-top:8px;border-radius:2px;background:var(--accent);transform-origin:left;animation:shrink linear forwards}
@keyframes shrink{to{transform:scaleX(0)}}

/* Werkzeugleiste */
.tools{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none;padding:2px}
.tool{flex:none;display:inline-grid;place-items:center;width:44px;height:44px;border:1px solid transparent;border-radius:var(--r);background:transparent;color:var(--text);cursor:pointer;transition:background .18s,border-color .18s}
.tool:hover{background:var(--surface-2)}
.tool[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.tool.danger:hover{background:var(--danger-soft);color:var(--danger)}
.tool:disabled{opacity:.4;cursor:default}
.sep{flex:none;width:1px;height:26px;background:var(--border);margin:0 4px}
.colors,.widths{display:flex;gap:2px}
.swatch{flex:none;width:34px;height:44px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;padding:0}
.swatch i{display:block;width:22px;height:22px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--border)}
.swatch[aria-checked="true"] i{box-shadow:0 0 0 2px var(--accent)}
.wbtn{flex:none;width:34px;height:44px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;padding:0;color:var(--text-2)}
.wbtn i{display:block;width:20px;border-radius:2px;background:currentColor}
.wbtn[aria-checked="true"]{color:var(--accent)}
.who{padding:0 8px;font-size:.9rem;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40vw}
.who b{color:var(--text);font-weight:600}

/* Dialoge */
dialog{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);color:var(--text);padding:22px;width:min(420px,calc(100% - 32px));box-shadow:var(--shadow)}
dialog::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(3px)}
dialog input[type=text],dialog select{width:100%;min-height:44px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);color:var(--text);font:inherit;font-size:16px}
dialog input:focus,dialog select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.hint.center{text-align:center;margin:.5rem 0 0}
/* Weißer Grund mit Rand ist für das Scannen nötig, auch im dunklen Theme */
.qr{width:min(240px,100%);aspect-ratio:1;margin:14px auto 0;padding:12px;border-radius:var(--r);background:#fff;line-height:0}
.qr svg{width:100%;height:100%;display:block}
.actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}
.actions.col{flex-direction:column;align-items:stretch}
.field{display:grid;gap:6px;margin:10px 0;font-size:.9rem;color:var(--text-2)}
.check{display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}
.check input{width:20px;height:20px;accent-color:var(--accent)}
.people{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.people li{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r)}
.people .dot{width:12px;height:12px;border-radius:50%;flex:none}
.people .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.people .tag{font-size:.75rem;color:var(--text-2);border:1px solid var(--border);border-radius:999px;padding:1px 8px}
.people .tag.on{color:var(--accent);border-color:var(--accent)}
.people li.off{opacity:.55}
.people li{flex-wrap:wrap;padding-top:6px;padding-bottom:6px}
.people .nm{min-width:9ch}
.people .info{order:10;flex:1 0 100%;padding-left:22px;font-size:.78rem;color:var(--text-2)}   /* Geräteangabe in eigener Zeile unter dem Namen */
.frame-toggle{display:inline-flex;align-items:center;gap:6px;min-height:32px;font-size:.82rem;color:var(--text-2);cursor:pointer}
.frame-toggle input{width:18px;height:18px}
.icon-btn.toggle[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent)}
.people .btn{min-height:32px;padding:0 .6rem;font-size:.82rem}
.icon-btn.small{width:32px;height:32px}
.icon-btn.small .ic{width:16px;height:16px}

/* Schnellwerkzeuge (Hand, Stift, Zurück, Mülleimer): nur auf Touchgeräten als eigene schwebende Knöpfe über der Zeichnung */
.quick{display:none}
.qbtn{display:grid;place-items:center;width:48px;height:48px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--text);box-shadow:var(--shadow);cursor:pointer;transition:background .18s,border-color .18s}
.qbtn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.qbtn.danger{color:var(--danger)}
.qbtn:disabled{opacity:.45;cursor:default}
@media (pointer:coarse){
  .quick{position:absolute;z-index:5;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:10px}
  #tools-draw .quick-src{display:none}
  .bar.top .btn.small span{display:none}                 /* Einladen: nur das Link-Symbol */
  .bar.top .btn.small{padding:0 .6rem}
  .tool{width:38px}
  .bar.bottom{padding-left:6px;padding-right:6px}
  .bar.bottom .tools{gap:0}
}

/* Textseiten (Datenschutz) */
.legal{max-width:760px;margin:0 auto;padding:24px 16px max(64px,env(safe-area-inset-bottom))}
.legal h1{font-size:1.6rem;margin:.5rem 0}
.legal h2{font-size:1.15rem;margin:2rem 0 .5rem}
.legal h3{font-size:1rem;margin:1.2rem 0 .3rem}
.legal p,.legal li{color:var(--text);line-height:1.6}
.legal ul{padding-left:1.3rem}
.legal li{margin:.35rem 0}
.legal a{color:var(--accent)}
.legal .meta{color:var(--text-2);font-size:.88rem}
.legal .back{text-decoration:none}
.legal code{font-family:var(--mono);font-size:.85em;background:var(--surface-2);padding:1px 5px;border-radius:4px}
.legal .table-wrap{overflow-x:auto;margin:.5rem 0}
.legal table{width:100%;border-collapse:collapse;font-size:.9rem}
.legal th,.legal td{text-align:left;vertical-align:top;padding:8px 10px;border:1px solid var(--border)}
.legal th{background:var(--surface-2)}
.foot-links{margin:.75rem 0 0;font-size:.85rem}
.foot-links a{color:var(--text-2)}

.who .avatar{display:none}
.who .avatar{width:32px;height:32px;border-radius:50%;place-items:center;color:#fff;font:600 .9rem var(--font);font-style:normal}

/* Smartphone/Tablet im Querformat: die untere Leiste wandert als schmale Spalte an den rechten Rand und spart so Höhe für die Zeichnung */
@media (orientation:landscape) and (pointer:coarse){
  #room{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr)}
  #room>.bar.top{grid-column:1/-1}
  #room>.stage{grid-column:1;grid-row:2}
  #room>.bar.bottom{grid-column:2;grid-row:2;flex-direction:column;justify-content:flex-start;align-items:center;min-height:0;overflow-y:auto;scrollbar-width:none;padding:6px 4px;padding-right:max(4px,env(safe-area-inset-right));border-top:0;border-left:1px solid var(--border)}
  .bar.bottom .tools{flex-direction:column;overflow:visible;max-width:none;gap:4px}
  #tools-draw{display:grid;grid-template-columns:repeat(2,36px);gap:2px}
  #tools-draw[hidden],#tools-view[hidden]{display:none}
  #tools-draw .colors,#tools-draw .widths{display:contents}
  #tools-draw .sep{grid-column:1/-1;width:100%;height:1px;margin:2px 0}
  #tools-draw .tool,#tools-draw .swatch,#tools-draw .wbtn{width:36px;height:36px}
  #tools-draw .tool .ic{width:18px;height:18px}
  /* Querformat: die vier Schnellwerkzeuge nebeneinander oben rechts, die Meldungen rutschen darunter */
  .quick{left:auto;right:10px;top:10px;bottom:auto;transform:none}
  .toasts{top:70px}
  #tools-view .who{padding:0;max-width:none}
  #tools-view .who-text{display:none}
  #tools-view .who .avatar{display:grid}
  #tools-view .btn{width:40px;height:40px;min-height:40px;padding:0}
  #tools-view .btn span{display:none}
}
@media (max-width:640px){
  .brand span{display:none}
  .bar.top .btn.small span{display:none}
  .bar.top .btn.small{padding:0 .6rem}
  .bar.top .icon-btn{width:36px}
  .pager .icon-btn{display:none}                 /* schmal: die Seitenzahlen genügen, Pfeile sparen Platz */
  .page-name{display:none}
  .bar.top{gap:0;padding-left:4px;padding-right:4px}
  .brand{margin-right:0;padding:4px}
  .pager{margin:0 4px}
  .swatch{width:30px}.wbtn{width:30px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:.01ms!important}}
