/* Præsenter: chromen følger Wardrobes neutrale stil (wardrobeui.com, sfære A):
   hvid, system-font, sort og mørkegrå tekst, hairlines i #e5e5e5, 8px radius,
   ingen skygger, sort knap. Slidene står i shadow roots med deckets egen CSS,
   så husets stil og Produktlands slides blander sig aldrig. Fonte til slidene
   kommer fra værten (/__praesenter/fonte.css) eller løftes op fra decket.
   Slidets størrelse (--sw, --sh, --ratio) sættes pr. deck af motoren. */
:root{
  --bg:#FFFFFF; --flade:#FAFAFA; --hover:#F0F0F0; --ink:#0A0A0A; --tekst:#525252; --dim:#737373; --rule:#E5E5E5; --rule-2:#D4D4D4;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --r:8px; --top:52px; --side:232px;
  --w:420px;   /* slidebredde på lærredet */
  --sw:1600px; --sh:900px; --ratio:.5625;   /* slidets egen størrelse, sat af motoren */
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:inherit}
kbd{font:inherit;font-size:11px;color:var(--dim);margin-left:.4em;border:1px solid var(--rule);border-radius:4px;padding:0 5px;line-height:1.5}
svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
[hidden]{display:none !important}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* ===== fælles bidder ===== */
.maerke{display:flex;align-items:center;gap:9px;text-decoration:none;font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--ink)}
.maerke img{display:block}
.knap{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:var(--r);padding:7px 14px;font-size:13px;font-weight:500;text-decoration:none;line-height:1.2;transition:background 120ms ease}
.knap:hover{background:#2a2a2a}
/* Knapperne har tre slags, i hele appen (1 Nov 2026, Martin: "vi har gang i
   lidt for mange knap-typer"): VISNING er runde (.pills, .pill): hvordan du ser
   decket; HANDLING er firkantede med kant (.knap.stille): det, der får AI'en
   eller appen til at gøre noget; HOVEDHANDLINGEN er én sort (.knap) pr. skærm. */
.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--rule);border-radius:999px;background:var(--bg);font-size:13px;color:var(--tekst);line-height:1.3;white-space:nowrap;font-variant-numeric:tabular-nums;transition:background 120ms ease,color 120ms ease}
.pill:hover{color:var(--ink);background:var(--hover)}
.pill[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.pill svg{width:14px;height:14px}
.knap.stille{background:var(--bg);color:var(--ink);border-color:var(--rule)}
.knap.stille:hover{background:var(--hover);border-color:var(--rule-2)}
.pills{display:flex;gap:4px;padding:3px;background:var(--flade);border:1px solid var(--rule);border-radius:999px}
.pills button{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:13px;color:var(--tekst);line-height:1.3;transition:background 120ms ease,color 120ms ease}
.pills button:hover{color:var(--ink);background:var(--hover)}
.pills button.valgt{background:var(--ink);color:#fff}
.pills button:focus-visible{outline-offset:-2px;outline-color:#fff}
.pills button svg{width:14px;height:14px}
.status{min-width:140px;text-align:right;color:var(--dim);font-size:13px;white-space:nowrap}
.status.fejl{color:var(--ink)}
.status.fejl::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ink);margin-right:8px;vertical-align:1px}
.tom{padding:80px 32px;color:var(--dim);text-align:center}

/* ===== startsiden: sidepanel + indhold ===== */
body.start .main{position:absolute;inset:0;display:grid;grid-template-columns:var(--side) 1fr}
.side{border-right:1px solid var(--rule);padding:18px 12px 24px;overflow:auto;display:flex;flex-direction:column;gap:14px;background:var(--bg)}
.side .maerke{padding:4px 8px}
.soeg{display:flex;align-items:center;gap:8px;padding:0 10px;height:34px;background:var(--flade);border:1px solid var(--rule);border-radius:var(--r);color:var(--dim)}
.soeg:focus-within{border-color:var(--ink);background:var(--bg)}
.soeg input{flex:1;min-width:0;border:0;background:none;font:inherit;color:var(--ink);outline:none;-webkit-appearance:none}
.soeg input::placeholder{color:var(--dim)}
.soeg kbd{margin:0}
.side-nav{display:flex;flex-direction:column;gap:1px;flex:1}
.side-fod{padding:0 4px;display:flex;flex-direction:column;gap:2px}
.side-fod .side-raekke{font-size:13px;padding:6px 10px}
.side-fod .side-raekke kbd{margin:0}
.side-fod .side-raekke svg{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.stil .forbind-veje{max-height:50vh;overflow:auto}
#nyt-deck{padding:6px 12px;font-size:13px;white-space:nowrap}
.side-fod .side-raekke i{font-style:normal;font-size:12px;color:var(--dim)}
.side-overskrift{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);padding:18px 10px 6px}
.side-raekke{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 10px;border-radius:var(--r);color:var(--tekst);font-size:14px;line-height:1.3}
.side-raekke span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-raekke i{font-style:normal;font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}
.side-raekke:hover{background:var(--hover);color:var(--ink)}
.side-raekke.valgt{background:var(--hover);color:var(--ink);font-weight:500}
.side-fold{flex:none;width:20px;height:20px;margin:-2px -6px -2px 0;display:grid;place-items:center;border-radius:4px;color:var(--dim)}
.side-fold svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transform:rotate(90deg);transition:transform 120ms ease}
.side-fold.lukket svg{transform:rotate(0)}
.side-fold:hover{background:var(--hover);color:var(--ink)}
.side-gruppe[hidden]{display:none}
.side-raekke.under{padding-left:26px;font-size:13px}
.side-raekke.under::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--rule-2);margin-left:-14px;margin-right:2px;flex:none}
.indhold{overflow:auto;padding:28px 36px 96px}
.indhold-hoved{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:16px;margin-bottom:24px;border-bottom:1px solid var(--rule)}
.indhold-hoved h1{font-size:22px;font-weight:600;letter-spacing:-.01em}
.indhold-hoved .antal{color:var(--dim);font-size:13px}
.indhold-styring{margin-left:auto;display:flex;gap:8px;align-items:center}
.gitter{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}
.kort{display:flex;flex-direction:column;text-decoration:none;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;background:var(--bg);transition:border-color 160ms ease}
.kort:hover,.kort:focus-visible{border-color:var(--ink);outline:none}
.kort-forside{background:var(--flade);border-bottom:1px solid var(--rule)}
.kort .thumb-view{width:100%;height:auto;aspect-ratio:16/9;background:var(--bg);position:relative;overflow:hidden}
/* A length divided by a length is a number only in newer Chromium (not in
   Electron 33's), so the scale factor is tan(atan2(a, b)) = a / b everywhere. */
.kort .thumb-host{transform:scale(tan(atan2(var(--kw,250px), var(--sw))))}
.kort-body{padding:12px 14px 13px}
.kort-navn{font-weight:500;font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kort-meta{color:var(--tekst);font-size:13px;margin-top:3px}
.kort{position:relative}
.kort-slet{position:absolute;right:8px;top:8px;padding:4px 10px;border:0;border-radius:6px;background:rgba(255,255,255,.92);color:var(--ink);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity 120ms ease;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.kort:hover .kort-slet,.kort-slet:focus-visible{opacity:1}
.kort-slet:hover{background:var(--ink);color:#fff}
.raekkeliste .kort-slet{position:static;margin-left:auto;opacity:1;box-shadow:none;background:transparent}
.kort-sti{color:var(--dim);font-size:12px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kort.gammel .thumb-view::after{content:attr(data-note);position:absolute;inset:0;display:grid;place-items:center;color:var(--dim);font-size:12px}
.raekkeliste{display:flex;flex-direction:column}
.raekkeliste .kort{flex-direction:row;align-items:center;gap:16px;border:0;border-bottom:1px solid var(--rule);border-radius:0;padding:10px 4px}
.raekkeliste .kort:hover{background:var(--flade);border-color:var(--rule)}
.raekkeliste .kort-forside{flex:none;background:none;border:0}
.raekkeliste .kort .thumb-view{width:128px;height:72px;aspect-ratio:auto;flex:none;border:1px solid var(--rule);border-radius:4px}
.raekkeliste .kort-body{padding:0;display:grid;grid-template-columns:1fr auto;gap:2px 24px;flex:1;min-width:0;align-items:baseline}
.raekkeliste .kort-sti{grid-column:1;margin:0}
.raekkeliste .kort-meta{grid-column:2;grid-row:1 / 3;margin:0;color:var(--dim)}

/* ===== deck-visning: toppen ===== */
.top{position:fixed;inset:0 0 auto 0;height:var(--top);display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--rule);z-index:20}
.top-skel{width:1px;height:22px;background:var(--rule)}
.titel{flex:1;min-width:0;display:flex;align-items:baseline;gap:10px;white-space:nowrap;overflow:hidden}
.titel b{font-weight:500;overflow:hidden;text-overflow:ellipsis;flex:none;max-width:50%}
.titel span{overflow:hidden;text-overflow:ellipsis}
.titel span{color:var(--dim);font-size:13px}
.styring{display:flex;align-items:center;gap:10px;margin-left:auto}
.top .status{min-width:0;flex:none}
body.deck .main{position:absolute;inset:var(--top) 0 0 0}

/* ===== zoom-boksen, som Miros ===== */
.zoom{position:fixed;right:16px;bottom:16px;display:flex;align-items:stretch;background:var(--bg);border:1px solid var(--rule);border-radius:999px;z-index:20;padding:2px}
.zoom button{padding:6px 10px;border-radius:999px;font-size:15px;line-height:1;display:flex;align-items:center}
.zoom button:hover{background:var(--hover)}
.zoom #tilpas{border-right:1px solid var(--rule);border-radius:999px 0 0 999px;margin-right:2px}
.zoom span{display:flex;align-items:center;min-width:52px;justify-content:center;font-size:12px;color:var(--tekst);font-variant-numeric:tabular-nums}

/* ===== lærredet ===== */
.canvas{position:absolute;inset:0;background:var(--flade)}
.canvas.raekker{overflow:auto;overscroll-behavior:contain}
.canvas.raekker .flade{display:flex;flex-wrap:wrap;gap:calc(var(--w) * .09) calc(var(--w) * .07);padding:36px 40px 160px;align-content:flex-start;min-height:100%}
.canvas.frit{overflow:hidden;cursor:grab;touch-action:none;
  background-image:radial-gradient(var(--rule-2) 1px,transparent 1.2px);background-size:32px 32px}
.canvas.frit .flade{position:absolute;left:0;top:0;transform-origin:0 0}
.canvas.frit .flade.bevaeger{will-change:transform}
.canvas.frit .thumb{position:absolute;cursor:grab}
.canvas.frit.haand,.canvas.frit.haand .thumb{cursor:grab}
.canvas.frit.panorerer,.canvas.frit.panorerer .thumb{cursor:grabbing}
.canvas.frit .thumb.flytter-frit{z-index:10;cursor:grabbing}
.canvas.frit .thumb-fod b{cursor:grab}
.canvas.frit.nummer-traek,.canvas.frit.nummer-traek *{cursor:grabbing}
.canvas.frit .thumb.nr-kilde{opacity:.45}
.canvas.frit .thumb.nr-maal .thumb-view{outline:3px solid var(--ink);outline-offset:4px}
.nr-chip{position:fixed;z-index:40;pointer-events:none;transform:translate(-50%,-50%) scale(1.15);display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 9px;border-radius:8px;background:var(--ink);color:#fff;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.canvas.frit .frit-linje{position:absolute;pointer-events:none;background:#e0346c;z-index:11}
.canvas.frit .frit-linje.lodret{width:1px}
.canvas.frit .frit-linje.vandret{height:1px}

.thumb{width:var(--w);user-select:none;-webkit-user-select:none;touch-action:none;cursor:grab;flex:none;outline:none}
.thumb.flytter{opacity:.3}
.thumb-view{position:relative;width:var(--w);height:calc(var(--w) * var(--ratio));overflow:hidden;background:var(--bg);border:1px solid var(--rule);border-radius:var(--r);transition:border-color 120ms ease}
.thumb:hover .thumb-view{border-color:var(--ink)}
.thumb.aktiv .thumb-view,.thumb:focus-visible .thumb-view{border-color:var(--ink);outline:2px solid var(--ink);outline-offset:2px}
.thumb:active{cursor:grabbing}
.canvas.traek,.canvas.traek .thumb{cursor:grabbing}
.thumb-host{width:var(--sw);height:var(--sh);transform-origin:0 0;transform:scale(tan(atan2(calc(var(--w) - 2px), var(--sw))));pointer-events:none;display:block}
/* The number is what you say to the chat ("add a slide after 5"), so it is a badge (29 Oct 2026, Martin). */
.thumb-fod{display:flex;gap:10px;align-items:center;margin-top:10px;padding:0 2px;font-size:13px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb-fod b{flex:none;display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 8px;border-radius:7px;background:var(--ink);color:#fff;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}

/* slip-markøren i rækker: en sort lodret streg, der hvor slidet lander */
.drop{position:absolute;width:3px;border-radius:2px;background:var(--ink);pointer-events:none;display:none;z-index:5}
.drop::before,.drop::after{content:'';position:absolute;left:-4px;width:11px;height:3px;border-radius:2px;background:var(--ink)}
.drop::before{top:0}.drop::after{bottom:0}
.canvas.traek .drop{display:block}
/* spøgelset, der følger markøren under et træk */
.spoegelse{position:fixed;pointer-events:none;z-index:30;display:none;overflow:hidden;border:1px solid var(--ink);border-radius:var(--r);background:var(--bg);
  width:var(--gw,240px);height:calc(var(--gw,240px) * var(--ratio));transform:rotate(-1.5deg);transform-origin:0 0}
.spoegelse .thumb-host{transform:scale(tan(atan2(var(--gw,240px), var(--sw))))}
.spoegelse.vis{display:block}

/* ===== stor visning ===== */
.stor{position:fixed;inset:0;background:var(--bg);z-index:40;display:flex;flex-direction:column}
.stor-bar{height:var(--top);display:flex;align-items:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--rule)}
.stor-bar #stor-titel{font-weight:500;white-space:nowrap}
.stor-hint{flex:1;color:var(--dim);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stor-status{color:var(--dim);font-size:13px;min-width:60px;text-align:right}
.stor iframe{flex:1;border:0;width:100%;background:var(--flade)}
#stat-chat{background:var(--ink);color:#fff;border-color:var(--ink)}
#stat-chat kbd{color:#bbb;border-color:#444}
/* Chatten: nederst til højre over slidet. En knap, der folder sig ud til et panel. */
.chat{position:absolute;right:20px;bottom:20px;z-index:45;display:flex;flex-direction:column;align-items:flex-end}
.chat-aabn kbd{margin-left:2px}
.chat-panel{width:360px;max-width:calc(100vw - 40px);display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--rule-2);border-radius:var(--r);box-shadow:0 8px 32px rgba(0,0,0,.14);overflow:hidden}
.chat-hoved{display:flex;align-items:center;justify-content:space-between;padding:10px 8px 8px 14px;border-bottom:1px solid var(--rule)}
.chat-hoved b{font-weight:500;flex:1}
.chat-luk{background:none;border:0;font-size:18px;line-height:1;color:var(--dim);cursor:pointer;padding:2px 6px;border-radius:4px}
.chat-luk:hover{background:var(--hover);color:var(--ink)}
.chat-liste{list-style:none;margin:0;padding:0 14px;max-height:220px;overflow:auto}
.chat-liste:empty{display:none}
.chat-raekke{padding:10px 0;border-bottom:1px solid var(--rule)}
.chat-raekke:last-child{border-bottom:0}
.chat-besked{white-space:pre-wrap}
.chat-status{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:12px;color:var(--dim)}
.chat-status.gjort span::before,.chat-status.fortrudt span::before{content:'✓ '}
.chat-status.fejl{color:#B3261E}
.chat-status.koe{color:var(--dim)}
.chat-status.arbejder span::before{content:'';display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;border:1.5px solid var(--dim);border-top-color:transparent;animation:chat-snur .8s linear infinite;vertical-align:-1px}
@keyframes chat-snur{to{transform:rotate(360deg)}}
.chat-fortryd{font:inherit;font-size:12px;color:var(--ink);background:none;border:1px solid var(--rule);border-radius:4px;padding:1px 7px;cursor:pointer}
.chat-fortryd:hover{background:var(--hover)}
.chat-panel textarea{font:inherit;color:var(--ink);background:var(--bg);border:0;border-top:1px solid var(--rule);padding:12px 14px;resize:none;outline:0;width:100%}
.chat-liste:empty + textarea{border-top:0}
.chat-panel textarea:disabled{color:var(--dim)}
.chat-fod{padding:0 14px 10px;font-size:12px;color:var(--dim)}
.chat-fod:empty{display:none}
.chat-fod a{color:var(--ink)}
.chat-fod .knap{display:inline-flex;margin-top:8px;font-size:12px;padding:5px 11px}
.chat-link{font:inherit;font-size:12px;color:var(--ink);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
/* On the canvas the chat stands left of the zoom bar, so the two never overlap. */
.laerred-chat{position:fixed;z-index:30;right:calc(16px + var(--zoom-b, 190px) + 12px);bottom:16px}
.chat-status.svar{display:block;color:var(--ink);white-space:pre-wrap}
/* Forbind din AI */
.forbind-t{padding:12px 20px 0;color:var(--tekst);line-height:1.5}
.forbind-veje{display:flex;flex-direction:column;gap:6px;padding:16px 20px 0}
.forbind-vej{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border:1px solid var(--rule);border-radius:var(--r);cursor:pointer}
.forbind-vej:hover{background:var(--hover)}
.forbind-vej.valgt{border-color:var(--ink)}
.forbind-vej.mangler{color:var(--dim);cursor:default}
.forbind-vej.mangler:hover{background:none}
.forbind-vej input[type=radio]{margin:3px 0 0;accent-color:var(--ink)}
.forbind-krop{flex:1;min-width:0}
.forbind-krop b{display:block;font-weight:500}
.forbind-note{display:block;font-size:12px;color:var(--dim);margin-top:2px}
.forbind-note a{color:var(--ink)}
.forbind-felt{display:flex;gap:8px;margin-top:8px}
.forbind-felt input{flex:1;min-width:0;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--ink);background:var(--bg);border:1px solid var(--rule);border-radius:6px;padding:7px 10px}
.forbind-felt input:focus{outline:2px solid var(--ink);outline-offset:-1px}
.forbind-fjern{font:inherit;font-size:12px;color:var(--dim);background:none;border:1px solid var(--rule);border-radius:6px;padding:0 10px;cursor:pointer}
.forbind-fjern:hover{color:var(--ink);background:var(--hover)}
.forbind-sti{padding:14px 20px 18px;font-size:12px;color:var(--dim);line-height:1.5}
.forbind-sti code{font:11px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--flade);border:1px solid var(--rule);border-radius:4px;padding:1px 5px;word-break:break-all}
.forbind-status.fejl{color:#B3261E}
#side-ai svg{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}

/* ===== onboarding: tom tilstand og hjælp ===== */
.tomt{position:relative;border:1px solid var(--rule);border-radius:var(--r);padding:28px 32px;margin-bottom:32px;max-width:720px}
.tomt-luk{position:absolute;top:10px;right:10px;width:30px;height:30px;border:0;border-radius:999px;background:transparent;color:var(--dim);font:20px/1 var(--font);cursor:pointer}
.tomt-luk:hover{background:var(--hover);color:var(--ink)}
.tomt h2{font-size:18px;font-weight:600;margin-bottom:8px}
.tomt-t{color:var(--tekst);line-height:1.5}
.tomt code{display:inline-block;margin-top:14px;font:13px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--flade);border:1px solid var(--rule);border-radius:6px;padding:8px 12px}
.tomt>.knap{margin-top:16px}
.tomt-eks{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px;padding-top:18px;border-top:1px solid var(--rule);color:var(--tekst)}
.hjaelp{margin:auto;border:1px solid var(--rule);border-radius:12px;padding:0;width:min(560px,calc(100vw - 32px));color:var(--ink);background:var(--bg)}
.snippet-t{padding:12px 20px 0;color:var(--tekst);line-height:1.5}
.snippet textarea{display:block;width:calc(100% - 40px);margin:14px 20px 18px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--ink);background:var(--flade);border:1px solid var(--rule);border-radius:6px;padding:10px 12px;resize:vertical}
.snippet textarea:focus{outline:2px solid var(--ink);outline-offset:-1px}
.hjaelp::backdrop{background:rgba(0,0,0,.25)}
.hjaelp-hoved{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 0}
.hjaelp-hoved b{font-size:16px;font-weight:600}
.hjaelp-luk{font-size:20px;line-height:1;color:var(--dim);padding:4px 8px;border-radius:6px}
.hjaelp-luk:hover{background:var(--hover);color:var(--ink)}
.hjaelp dl{display:grid;grid-template-columns:150px 1fr;gap:14px 18px;padding:18px 20px 20px}
.hjaelp dt{font-weight:500}
.hjaelp dd{color:var(--tekst);line-height:1.5}
.hjaelp-fod{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--rule);background:var(--flade);border-radius:0 0 12px 12px;color:var(--tekst);font-size:13px}
.hjaelp-fod code{font:12px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--bg);border:1px solid var(--rule);border-radius:6px;padding:4px 8px}

/* Nyt deck: the name field in the dialog. */
.nyt-navn{display:block;padding:14px 20px 0}
.nyt-navn span{display:block;font-size:13px;color:var(--dim);margin-bottom:6px}
.nyt-navn input{font:inherit;width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--rule-2);border-radius:6px;background:var(--bg);color:var(--ink);outline:0}
.nyt-navn input:focus{border-color:var(--ink)}
.nyt .forbind-t[hidden],.nyt .stil-veje[hidden]{display:none}
/* The welcome box: the first deck as one question. */
.tomt{max-width:1040px}
.tomt-veje{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px}
.tomt-vej{border:1px solid var(--rule);border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;min-width:0}
.tomt-vej h3{font-size:15px;font-weight:600;margin:0 0 4px}
.tomt-vej .tomt-t{font-size:13px;margin:0 0 12px}
.tomt-form{margin:0}
.tomt-fil .tomt-slip{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:150px;border:1.5px dashed var(--rule-2);border-radius:10px;color:var(--tekst);font-size:13px;text-align:center;padding:16px;cursor:pointer;margin-bottom:12px}
.tomt-fil .tomt-slip:hover{border-color:var(--ink);color:var(--ink)}
.tomt-fil .tomt-slip svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tomt-fil>.knap{align-self:flex-start}
.tomt-linje{margin:16px 0 0;font-size:13px;color:var(--dim);display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}
.tomt-skel{margin:0 4px}
@media (max-width:820px){.tomt-veje{grid-template-columns:1fr}}
/* The slim bar once there are decks: field, button and drop target on one line. */
.tomt.kompakt{max-width:none;padding:16px 20px;margin-bottom:28px}
.tomt.kompakt h2,.tomt.kompakt .tomt-t,.tomt.kompakt .tomt-vej h3,.tomt.kompakt .tomt-fil>.knap{display:none}
.tomt.kompakt .tomt-luk{top:6px;right:6px;width:26px;height:26px;font-size:17px}
.tomt.kompakt .tomt-veje{grid-template-columns:minmax(0,1fr) 360px;gap:16px;margin-top:0;align-items:center;padding-right:28px}
.tomt.kompakt .tomt-vej{border:0;border-radius:0;padding:0}
.tomt.kompakt .tomt-form{display:flex;flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap}
.tomt.kompakt .tomt-form textarea{flex:1 1 260px;width:auto;height:auto;resize:none;padding:9px 12px}
.tomt.kompakt .tomt-knapper{margin-top:0}
.tomt.kompakt .tomt-fil .tomt-slip{min-height:0;flex-direction:row;padding:9px 14px;margin:0;gap:10px;text-align:left;justify-content:flex-start}
.tomt.kompakt .tomt-fil .tomt-slip svg{width:20px;height:20px;flex:none}
@media (max-width:820px){.tomt.kompakt .tomt-veje{grid-template-columns:1fr}}
/* Rename on the card, and the AI's mark while it writes a deck. */
.kort-navn{cursor:text}
.kort-navn:has(>.kort-omdoeb){overflow:visible}
.kort-omdoeb{font:inherit;font-weight:500;width:calc(100% + 14px);box-sizing:border-box;border:1px solid var(--ink);border-radius:6px;padding:2px 6px;margin:-3px -7px;background:var(--bg);color:var(--ink);outline:0}
.kort[data-ai]{border-color:var(--ink)}
.kort[data-ai] .kort-meta::before{content:attr(data-ai) " · ";color:var(--ink);font-weight:500}
.tomt-form textarea{font:inherit;width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--rule-2);border-radius:8px;background:var(--bg);color:var(--ink);outline:0;resize:vertical;line-height:1.45}
.tomt-form textarea:focus{border-color:var(--ink)}
.tomt-knapper{display:flex;align-items:center;gap:12px;margin-top:10px}
.tomt-status{font-size:13px;color:var(--dim)}
.tomt-mappe{margin:14px 0 0;font-size:13px;color:var(--dim);line-height:1.7}
.tomt-mappe .knap{margin-left:8px;vertical-align:middle}
.tomt-mappe code{font-size:12px;margin-top:0;padding:4px 8px}
.tomt-mappe b{font-weight:500;color:var(--fg);word-break:break-all}
.tomt-har{margin-top:6px}
.side-tilfoej{color:var(--dim);font-size:13px}
.tomt-mappe .knap{font-size:12px;padding:4px 10px}
.tomt-eks-link{color:var(--ink)}

/* ---------- rundvisningen (29 Oct 2026): intro screen + five coach marks ---------- */
.intro{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:var(--bg)}
.intro-kort{max-width:440px;padding:0 24px;text-align:center}
.intro-kort img{margin-bottom:18px}
.intro-kort h1{font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0 0 10px}
.intro-kort p{color:var(--tekst);font-size:15px;line-height:1.55;margin:0 0 26px}
.intro-knapper{display:flex;gap:10px;justify-content:center}
.vaelg-ai .intro-kort{max-width:480px}
.vaelg-ai-veje{display:flex;flex-direction:column;gap:8px;margin:0 0 24px;text-align:left}
.vaelg-ai-vej{display:grid;grid-template-columns:1fr;gap:2px;padding:12px 14px;border:1px solid var(--rule);border-radius:10px;cursor:pointer;position:relative}
.vaelg-ai-vej:hover{background:var(--hover)}
.vaelg-ai-vej.valgt{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.vaelg-ai-vej input[type=radio]{position:absolute;opacity:0;pointer-events:none}
.vaelg-ai-vej input[type=radio]:focus-visible~b{text-decoration:underline}
.vaelg-ai-vej b{font-size:15px;font-weight:600}
.vaelg-ai-vej span{font-size:13px;color:var(--tekst);line-height:1.45}
.rv-lys{position:fixed;z-index:61;border-radius:10px;box-shadow:0 0 0 9999px rgba(10,10,10,.45);pointer-events:none;transition:left 220ms ease,top 220ms ease,width 220ms ease,height 220ms ease}
.rv-boks{position:fixed;z-index:62;width:300px;background:var(--bg);border:1px solid var(--rule);border-radius:12px;padding:16px 18px 14px;box-shadow:0 12px 40px rgba(0,0,0,.18);transition:left 220ms ease,top 220ms ease}
.rv-nr{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:6px}
.rv-boks p{margin:0 0 14px;font-size:14px;line-height:1.5;color:var(--ink)}
.rv-knapper{display:flex;justify-content:flex-end;gap:8px}


/* Design system: a grid of covers to choose from (29 Oct 2026). */
.stil-gitter-dialog{width:min(820px,calc(100vw - 32px))}
.stil-gitter{position:relative;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;padding:16px 20px 4px;max-height:58vh;overflow:auto}
.nyt-faner{display:flex;gap:4px;padding:12px 20px 0}
.nyt-faner button{background:none;border:0;border-radius:8px;padding:6px 12px;font:inherit;font-size:13px;color:var(--dim);cursor:pointer}
.nyt-faner button:hover{background:var(--hover)}
.nyt-faner button[aria-selected=true]{background:var(--hover);color:var(--ink);font-weight:500}
.nyt-bibliotek[hidden],.nyt .nyt-navn[hidden],.nyt #nyt-ok[hidden]{display:none}
.bib-piller{display:flex;flex-wrap:wrap;gap:6px;padding:14px 20px 0}
.bib-pille{background:none;border:1px solid var(--rule);border-radius:100px;padding:4px 12px;font:inherit;font-size:12px;color:inherit;cursor:pointer}
.bib-pille.valgt{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.bib-kort{background:none;font:inherit;text-align:left;color:inherit;position:relative}
.bib-gitter.arbejder{opacity:.4;pointer-events:none}
.nyt-import{margin-left:auto;background:none;border:0;padding:0;font:inherit;font-size:13px;color:var(--muted,#666);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.nyt-import:hover{color:inherit}
.tomt-stil{font-size:13px;color:var(--tekst);white-space:nowrap}
.stil-afsnit{grid-column:1/-1;margin:8px 0 -4px;font-size:13px;font-weight:600;color:var(--muted,#666)}
.stil-afsnit:first-child{margin-top:0}
.stil-kort{display:flex;flex-direction:column;gap:3px;cursor:pointer;padding:6px;border-radius:10px;border:2px solid transparent;min-width:0}
.stil-kort:hover{background:var(--hover)}
.stil-kort.valgt{border-color:var(--ink)}
.stil-kort input{position:absolute;opacity:0;pointer-events:none}
.stil-kort input:focus-visible+.stil-forside{outline:2px solid var(--ink);outline-offset:2px}
.stil-forside{border-radius:6px;overflow:hidden;border:1px solid var(--rule);margin-bottom:6px;min-width:0;width:100%}
.stil-kort .thumb-view{width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:0;background:var(--flade)}
/* Absolute, so the full-size slide never widens the card (Electron's Chromium sized the button by it, 30 Oct 2026). */
.stil-kort .thumb-host{position:absolute;top:0;left:0;transform:scale(tan(atan2(var(--stw,168px), var(--sw))))}
.stil-kort .thumb-view[data-ingen]::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 9px,var(--rule) 9px 10px)}
.stil-kort b{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stil-kort .forbind-note{font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Delete on a slide (29 Oct 2026): on hover or when the slide is selected. */
.thumb-titel{min-width:0;overflow:hidden;text-overflow:ellipsis}
.thumb-slet{margin-left:auto;flex:none;padding:3px 10px;border:1px solid var(--rule);border-radius:6px;background:var(--bg);color:var(--ink);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity 120ms ease}
.thumb:hover .thumb-slet,.thumb.aktiv .thumb-slet,.thumb:focus-within .thumb-slet{opacity:1}
.thumb-slet:hover{background:var(--ink);color:#fff;border-color:var(--ink)}

/* Peg: a red brush over the large slide (29 Oct 2026). */
.peg-lag{position:absolute;z-index:42;pointer-events:none}
.peg-lag.til{pointer-events:auto}
.peg-lag svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.peg-streg{fill:none;stroke:#E5322D;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
#stor-peg .peg-ikon,#laerred-peg .peg-ikon{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round}
#stor-peg[aria-pressed="true"],#laerred-peg[aria-pressed="true"]{background:#E5322D;border-color:#E5322D;color:#fff}
#stor-peg[aria-pressed="true"] kbd,#laerred-peg[aria-pressed="true"] kbd{color:#fff;border-color:rgba(255,255,255,.5)}
.chat-peg{display:flex;align-items:center;gap:8px;margin:0 10px 6px;padding:6px 6px 6px 10px;border-radius:6px;background:#FDECEB;color:#9B1C17;font-size:12px;line-height:1.35}
.chat-peg[hidden]{display:none}
.chat-peg span{flex:1;min-width:0}
.chat-peg-ryd{flex:none;width:22px;height:22px;border-radius:5px;color:#9B1C17;font-size:15px;line-height:1}
.chat-peg-ryd:hover{background:rgba(155,28,23,.1)}
.peg-laerred{position:fixed;inset:var(--top,52px) 0 0 0;z-index:35}
.canvas.frit .thumb.ny-plads .thumb-view{outline:2px dashed var(--ink);outline-offset:4px}
.forbind-kontekst{display:flex;gap:10px;align-items:flex-start;margin:12px 20px 0;padding:10px 12px;border:1px solid var(--rule);border-radius:var(--r);cursor:pointer;font-size:13px;line-height:1.45}
.forbind-kontekst input{margin-top:3px;accent-color:var(--ink)}
.forbind-kontekst b{font-weight:500;display:block}

/* Your own chat: copy the prompt, paste the answer (29 Oct 2026). */

/* Indstillinger (29 Oct 2026). */
.indstillinger{width:min(600px,calc(100vw - 32px))}
.ind-liste{display:flex;flex-direction:column;padding:8px 20px 18px}
.ind-raekke{display:flex;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--rule)}
.ind-raekke:last-child{border-bottom:0}
.ind-krop{flex:1;min-width:0}
.ind-krop b{display:block;font-weight:500}
.ind-note{display:block;color:var(--dim);font-size:13px;line-height:1.45;margin-top:2px}
.ind-styr{flex:none}
.ind-kasse{width:18px;height:18px;accent-color:var(--ink)}
.rv-lys.rv-pensel::after{content:'';position:absolute;inset:-14px -22px;border:3px solid #E5322D;border-radius:50%;transform:rotate(-3deg);animation:rv-tegn 1.4s ease-out both}
@keyframes rv-tegn{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion:reduce){.rv-lys.rv-pensel::after{animation:none}}
.rv-boks.med-video{width:380px}
.rv-video{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:8px;border:1px solid var(--rule);margin:2px 0 12px;background:var(--flade)}

/* Læs højt (29 Oct 2026). */
#laes-knap{flex:none}
#laes-knap .laes-ikon{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}
#laes-knap[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.laes-panel{position:fixed;z-index:31;top:calc(var(--top,52px) + 12px);right:12px;bottom:72px;width:360px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--rule-2);border-radius:var(--r);box-shadow:0 8px 32px rgba(0,0,0,.14)}
.laes-hoved{display:flex;align-items:center;justify-content:space-between;padding:10px 8px 8px 14px;border-bottom:1px solid var(--rule)}
.laes-hoved b{font-weight:500}
.laes-liste{flex:1;overflow:auto;margin:0;padding:6px 0;list-style:none}
.laes-vent{padding:16px 14px;color:var(--dim);font-size:13px}
.laes-status{padding:12px 14px 10px;border-bottom:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-size:13px}
.laes-hvad{flex:1;min-width:0;color:var(--ink);font-weight:500}
.laes-tal{color:var(--dim);font-variant-numeric:tabular-nums}
.laes-bjaelke{flex-basis:100%;height:3px;border-radius:2px;background:var(--rule);overflow:hidden;margin-top:6px}
.laes-bjaelke i{display:block;height:100%;width:4%;background:var(--ink);transition:width 400ms ease}
.laes-status:not(.klar) .laes-bjaelke i{animation:laes-puls 1.4s ease-in-out infinite}
@keyframes laes-puls{50%{opacity:.45}}
.laes-traad{padding:12px 14px;border-bottom:1px solid var(--rule);background:var(--flade)}
.laes-traad b{display:block;font-size:12px;font-weight:600;margin-bottom:4px}
.laes-traad p{margin:0;font-size:14px;line-height:1.5}
.laes-akt{padding:14px 14px 2px;font-size:12px;font-weight:600;color:var(--dim)}
.laes-del.venter p{color:var(--dim)}
.laes-del.venter{cursor:default}
@media (prefers-reduced-motion:reduce){.laes-status .laes-bjaelke i{animation:none}}
.laes-del{display:grid;grid-template-columns:28px 1fr;gap:2px 8px;padding:10px 14px;cursor:pointer;border-left:3px solid transparent}
.laes-del:hover{background:var(--hover)}
.laes-del.nu{background:var(--flade);border-left-color:var(--ink)}
.laes-nr{font-size:12px;font-weight:600;color:var(--dim);font-variant-numeric:tabular-nums;padding-top:2px}
.laes-del p{margin:0;font-size:14px;line-height:1.5;color:var(--ink)}
.laes-note{grid-column:2;margin-top:6px;padding:6px 8px;border-radius:6px;background:#FDECEB;color:#9B1C17;font-size:12px;line-height:1.4}
.laes-fod{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--rule);font-size:12px;color:var(--dim)}
.thumb.laeses .thumb-view{outline:3px solid var(--ink);outline-offset:3px}
.peg-lag.til.gennem{pointer-events:none}

/* The "?" after Hør historien: what it is, on hover or focus (29 Oct 2026). */
.laes-info{position:relative;overflow:visible !important;flex:none;align-self:center;display:inline-grid;place-items:center;width:18px;height:18px;margin-left:4px;border-radius:50%;border:1px solid var(--rule-2);color:var(--dim);font-size:11px;font-weight:600;cursor:help;line-height:1}
.laes-info:hover,.laes-info:focus-visible{color:var(--ink);border-color:var(--ink)}
.titel .laes-info .laes-tip{position:fixed;z-index:60;top:calc(var(--top,52px) - 4px);width:300px;padding:10px 12px;border-radius:8px;background:var(--ink);color:#fff;font-size:13px;font-weight:400;line-height:1.45;white-space:normal;overflow:visible;text-overflow:clip;box-shadow:0 8px 24px rgba(0,0,0,.2);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity 120ms ease,transform 120ms ease}
.laes-info:hover .laes-tip,.laes-info:focus-visible .laes-tip{opacity:1;transform:none}
/* Choose your AI (30 Oct 2026): three choices, a login button on the right, the key folded away */
.forbind .forbind-vej{align-items:center}
.forbind .forbind-vej input[type=radio]{margin:0}
.forbind-vej.klar .forbind-note{color:#1E7B34}
.forbind-handling:empty{display:none}
.forbind-handling .knap{white-space:nowrap}
.forbind-noegle{padding:12px 20px 0}
.forbind-noegle[hidden]{display:none}
.forbind-noegle .forbind-felt{margin-top:0}
.forbind-noegle .forbind-sti{padding:8px 0 0}
.forbind-noegle .forbind-sti a{color:var(--ink)}
.forbind .forbind-veje{padding-bottom:4px}
.forbind .hjaelp-fod{flex-wrap:wrap}
.forbind-vis-noegle{margin-left:auto;font:inherit;font-size:12px;color:var(--dim);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.forbind-vis-noegle:hover{color:var(--ink)}
.forbind-vis-noegle[hidden]{display:none}
.forbind-status a{color:var(--ink)}
.forbind-kode{display:block;width:100%;margin-top:8px;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border:1px solid var(--rule);border-radius:6px;padding:7px 10px;background:var(--bg);color:var(--ink)}
/* Design system from a file (30 Oct 2026) */
.stil-fra-fil{margin-left:auto;font:inherit;font-size:12px;color:var(--dim);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-align:right}
.stil-fra-fil:hover{color:var(--ink)}
.stil-fra-fil:disabled{opacity:.4;cursor:default}
dialog.stil.slip{outline:2px dashed var(--ink);outline-offset:-8px}
dialog.stil.arbejder .stil-veje{opacity:.4;pointer-events:none}
/* Feedback (1 Nov 2026) */
.feedback-form{display:grid;gap:10px;padding:14px 20px 20px}
.feedback-note{margin:0;color:var(--tekst);line-height:1.5}
.feedback-form textarea,.feedback-form input{font:inherit;width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--rule-2);border-radius:8px;background:var(--bg);color:var(--ink);outline:0;line-height:1.45}
.feedback-form textarea{resize:vertical}
.feedback-form textarea:focus,.feedback-form input:focus{border-color:var(--ink)}
.feedback-fod{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.feedback-status{color:var(--tekst);font-size:13px}
.ind-felt{font:inherit;width:160px;box-sizing:border-box;padding:6px 10px;border:1px solid var(--rule-2);border-radius:8px;background:var(--bg);color:var(--ink);outline:0}
.ind-felt:focus{border-color:var(--ink)}
/* A slide the chat is working on (1 Nov 2026) */
.thumb.ai-arbejder{position:relative}
.thumb.ai-arbejder::after{content:'';position:absolute;top:10px;right:10px;width:14px;height:14px;border-radius:50%;border:2px solid var(--ink);border-top-color:transparent;animation:chat-snur .8s linear infinite;z-index:3}
.chat-besked small{color:var(--dim);font-size:11px;margin-right:4px}
/* Drop a PDF, PowerPoint or Keynote on the list (1 Nov 2026) */
.slip-import{position:fixed;inset:12px;z-index:60;display:flex;align-items:center;justify-content:center;border:2px dashed var(--ink);border-radius:16px;background:color-mix(in srgb,var(--bg) 88%,transparent);pointer-events:none}
.slip-import div{display:grid;gap:6px;text-align:center}
.slip-import b{font-size:20px;font-weight:600}
.slip-import span{color:var(--tekst)}
/* Tegn (1 Nov 2026): a white sheet over everything, like Peg's sketch */
.tegn{position:fixed;inset:0;z-index:300;background:#fff;cursor:crosshair}
.tegn canvas{display:block;touch-action:none}
.tegn-bjaelke{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--rule);border-radius:12px;padding:8px 8px 8px 14px;cursor:default;max-width:calc(100vw - 32px)}
.tegn-hint{color:var(--tekst);font-size:13px;margin-right:6px}
.tegn-felt{position:absolute;font-family:-apple-system,"Segoe UI",system-ui,sans-serif;line-height:1.2;color:#111;background:transparent;border:1px dashed #bbb;border-radius:4px;outline:0;resize:none;padding:2px;min-width:200px;overflow:hidden}
.chat-billeder{display:flex;flex-wrap:wrap;gap:8px;padding:8px 14px;border-top:1px solid var(--rule)}
.chat-billede{position:relative;display:block}
.chat-billede img{display:block;height:48px;max-width:96px;object-fit:cover;border:1px solid var(--rule);border-radius:6px;background:#fff}
.chat-billede.henter img{opacity:.45}
.chat-billede.fejl img{outline:2px solid #9B1C17;outline-offset:-2px}
.chat-billede .chat-peg-ryd{position:absolute;top:-8px;right:-8px;background:var(--bg);border:1px solid var(--rule);border-radius:50%;width:20px;height:20px;font-size:13px}
.chat-sendte-billeder{display:flex;gap:4px;margin-top:6px}
.chat-sendte-billeder img{height:32px;max-width:64px;object-fit:cover;border-radius:4px;border:1px solid var(--rule)}
.chat-panel{position:relative}
.chat-panel.slip-billede::after{content:attr(data-slip);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.92);border:2px dashed var(--tekst);border-radius:inherit;font-size:14px;color:var(--tekst);pointer-events:none;z-index:5}
.chat-tegning{display:flex;align-items:center;gap:8px;padding:8px 14px;border-top:1px solid var(--rule);font-size:12px;color:var(--tekst)}
.chat-tegning img{height:36px;border:1px solid var(--rule);border-radius:4px;background:#fff}
.chat-tegning span{flex:1}

/* ===== tider på slides (1 Nov 2026): kun på lærredet, aldrig i decket ===== */
.tid-start{display:flex;align-items:center;gap:6px;flex:none;font-size:12px;color:var(--dim)}
.tid-start input{width:50px;padding:2px 6px;border:1px solid var(--rule);border-radius:6px;font:inherit;color:var(--ink);text-align:center;background:var(--bg)}
.bane-slut{flex:none;font-size:12px;color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums;align-self:flex-start;padding-top:4px}
.bane-midt{flex:1;min-width:0}
.thumb-kl{flex:none;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.thumb-kl:empty{display:none}
.thumb-min{flex:none;margin-left:auto;display:inline-flex;align-items:center;gap:3px;padding:1px 6px 1px 2px;border:1px solid var(--rule);border-radius:6px;background:var(--bg);font-size:12px;color:var(--dim);cursor:text}
.thumb-min input{width:3ch;border:0;background:none;font:inherit;font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;padding:2px 0;outline:0}
.thumb-min input::placeholder{color:var(--dim)}
.thumb-min:focus-within{border-color:var(--ink)}
.thumb-min.tom{border-style:dashed}
body.tider-paa .thumb-min + .thumb-slet{margin-left:0}
body:not(.tider-paa) .thumb-min,body:not(.tider-paa) .thumb-kl{display:none}
body:not(.har-tider):not(.bane-paa) .thumb-min.tom{opacity:0;transition:opacity 120ms ease}
body:not(.har-tider) .thumb:hover .thumb-min.tom,body:not(.har-tider) .thumb:focus-within .thumb-min.tom{opacity:1}
.tidsbane{position:fixed;left:0;right:0;top:var(--top);height:48px;padding:7px 16px 0;display:flex;gap:14px;align-items:flex-start;background:var(--bg);border-bottom:1px solid var(--rule);z-index:19}
body.bane-paa .main{top:calc(var(--top) + 48px)}
.bane-blokke{display:flex;gap:2px;height:22px}
.bane-blok{flex:1 1 0;min-width:4px;border-radius:4px;background:var(--rule-2);color:var(--ink);font-size:11px;text-align:left;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bane-blok:hover{background:var(--ink);color:#fff}
.bane-blok.pause{background:var(--hover);color:var(--dim)}
.bane-ur{position:relative;height:14px;margin-top:2px;font-size:10px;color:var(--dim);font-variant-numeric:tabular-nums}
.bane-ur span{position:absolute;transform:translateX(-50%)}
.bane-ur span:first-child{transform:none}
.bane-blok.smal{color:transparent;padding:0}
.canvas.frit .thumb-fod{transform:scale(var(--fod-z,1));transform-origin:left top;width:calc(100% / var(--fod-z,1))}
.bane-blok{position:relative;cursor:pointer}
.bane-blok::after{content:"";position:absolute;top:0;right:0;bottom:0;width:10px;cursor:ew-resize}
.bane-blok:hover::after{background:rgba(0,0,0,.18)}
.bane-blok.traekkes{background:var(--ink);color:#fff;padding:0 6px}
.tid-valg{position:fixed;z-index:60;display:flex;gap:4px;padding:4px;background:var(--bg);border:1px solid var(--rule);border-radius:8px}
.tid-valg button{min-width:34px;padding:4px 0;border-radius:6px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink)}
.tid-valg button:hover{background:var(--hover)}
.tid-valg button.valgt{background:var(--ink);color:#fff}
.bane-tom{margin:3px 0 0;font-size:12px;color:var(--dim)}
.tomt-linje .tomt-mappe{margin:0;line-height:inherit}
.vaelg-ai-noegle{display:none;grid-column:1;margin-top:8px}
.vaelg-ai-vej.valgt .vaelg-ai-noegle{display:block}
.vaelg-ai-noegle .forbind-felt{margin-top:0}
.vaelg-ai-noegle a{display:inline-block;margin-top:6px;font-size:12px;color:var(--tekst)}
.vaelg-ai-status{display:block;margin-top:6px;font-size:12px;color:var(--tekst)}
.vaelg-ai-status.fejl{color:#b3261e}

/* ---------- ANIMER (3 Nov 2026) ---------- */
dialog.animer{width:min(820px,calc(100vw - 40px))}
.animer-faner{margin:14px 20px 0;width:max-content}
.animer-gitter{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:14px 20px 18px}
.animer-kort{display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:2px;padding:10px;border:1px solid var(--rule);border-radius:10px;background:var(--bg);cursor:pointer;color:var(--ink)}
.animer-kort:hover{border-color:#bdbdbd}
.animer-kort.valgt{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.animer-kort[hidden]{display:none}
.am-prev{height:76px;border-radius:6px;background:var(--flade);display:grid;place-items:center;overflow:hidden;margin-bottom:6px;position:relative}
.am-navn{font-size:13px;font-weight:600}
.am-hint{font-size:11px;color:var(--tekst);line-height:1.35}
.animer-fod{gap:8px}
.animer-etiket{font-size:13px;color:var(--tekst)}
.animer-status{margin-left:auto;font-size:13px;color:var(--tekst)}
#animer-ok{margin-left:4px}
.am-bar{display:block;width:70px;height:10px;border-radius:3px;background:var(--ink)}
.am-bar.am-b2{width:50px;background:#8a8a8a}.am-bar.am-b3{width:60px;background:#bdbdbd}
.am-bar.am-bred{width:96px}.am-bar.am-tynd{height:3px}
.am-stak{display:grid;gap:6px}
.am-tal{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;display:inline-block}
.am-mark{font-size:13px;font-weight:600;background:linear-gradient(#ffe045,#ffe045) no-repeat 0 92%/0 .3em;padding:0 2px}
@keyframes am-op{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes am-ind{from{opacity:0}to{opacity:1}}
@keyframes am-venstre{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
@keyframes am-vokser{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
@keyframes am-afsloer{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes am-streg{from{transform:scaleX(0)}to{transform:none}}
@keyframes am-rul{from{opacity:0;transform:translateY(.6em);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
@keyframes am-mark{from{background-size:0 .3em}to{background-size:100% .3em}}
@keyframes am-puls{0%,100%{transform:none}40%{transform:scale(1.12)}}
@keyframes am-skaer{from{transform:translateX(-120%) skewX(-18deg)}to{transform:translateX(220%) skewX(-18deg)}}
.am-op .am-bar{animation:am-op 1.1s cubic-bezier(.2,.7,.2,1) infinite alternate}
.am-punkter .am-bar{animation:am-op 2s cubic-bezier(.2,.7,.2,1) infinite}
.am-punkter .am-bar:nth-child(2){animation-delay:.3s}.am-punkter .am-bar:nth-child(3){animation-delay:.6s}
.am-afsloer .am-bar{animation:am-afsloer 1.6s cubic-bezier(.6,0,.2,1) infinite alternate}
.am-venstre .am-bar{animation:am-venstre 1.2s cubic-bezier(.2,.7,.2,1) infinite alternate}
.am-vokser .am-bar{animation:am-vokser 1.2s cubic-bezier(.2,.8,.2,1) infinite alternate}
.am-streg .am-bar{transform-origin:0 50%;animation:am-streg 1.4s cubic-bezier(.6,0,.2,1) infinite alternate}
.am-tal .am-tal{animation:am-rul 1.4s cubic-bezier(.2,.7,.2,1) infinite alternate}
.am-markering .am-mark{animation:am-mark 1.4s cubic-bezier(.6,0,.2,1) infinite alternate}
.am-skrives .am-bar{animation:am-afsloer 1.6s steps(12,end) infinite alternate}
.am-toner .am-bar{animation:am-ind 1.2s ease infinite alternate}
.am-puls .am-bar{transform-origin:0 50%;animation:am-puls 1.6s cubic-bezier(.3,.7,.3,1) infinite}
.am-skaer{overflow:hidden}.am-skaer::after{content:"";position:absolute;inset:0 auto 0 0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);animation:am-skaer 1.8s cubic-bezier(.4,0,.2,1) infinite}
@media (max-width:700px){.animer-gitter{grid-template-columns:repeat(2,1fr)}}
