/* ═══════════════════════════════════════════════════════════════════
   PLANNER - fælles styles (v2 rewrite 2026-05-19, design-sync 2026-05-19)
   Bruger /css/design-tokens.css som base. Sidebar/topbar/nav matcher
   Workspace (public/index.html) og Canvas (public/canvas.html) så
   brugeren oplever én sammenhængende UI på tværs af /app, /canvas, /planner.
═══════════════════════════════════════════════════════════════════ */

/* ── Layout-vars (matcher Workspace index.html:264-265 + topbar 56px) ─ */
.pln-view {
    --pln-sw: 240px;          /* sidebar expanded */
    --pln-sw-x: 72px;         /* sidebar collapsed */
    --pln-th: 56px;           /* topbar height */
    --pln-sidebar-bg: var(--sidebar-bg);   /* repoint til delt chrome-flip-token (genbruges af .pln-set-panel m.fl.) */
    --pln-topbar-bg: var(--topbar-bg);     /* repoint til delt chrome-flip-token */
    /* Shift-type farver - single source of truth. F4.2 2026-05-26:
       konsolideret fra 2 hardcoded steder (timeline + grid). Tilføj nye
       typer her, ikke i flere selectorer. Kobolt-bauhaus-paletten:
       dag=kobolt, aften=tangerine, nat=blæk; ferie=success-grøn (distinkt,
       harmonisk), syg=kalibreret gul status, fri=ink-3. bauhaus-skin.css
       overstyrer disse til samme værdier på .pln-shell — defineres også her
       så baggrunds-tints + ikke-.pln-shell-kontekster matcher. */
    /* RUDE 2026-06-04: vagt-typer skal være FLER-TONEDE (mockup .s1/.s2/.s3 = grøn/blå/violet).
       Før arvede dag/default --bh-blue (= grøn for planner) → kollideren med ferie+accent.
       Nu distinkte kategori-toner (suite-palettens blå+violet), intuitiv aften-orange bevaret. */
    --pln-shift-dag: #0A84FF;      /* dag = system-blå (mockup .s2), distinkt fra grøn accent */
    --pln-shift-aften: var(--bh-pop, #F2A965);   /* aften = varm orange (intuitiv + distinkt) */
    --pln-shift-nat: #7C5CFF;      /* nat = violet (mockup .s3), tema-sikker i både lys+mørk */
    --pln-shift-laege: #0D9488;    /* læge = teal — distinkt fra dag(blå)/nat(violet)/aften(orange)/ferie(grøn)/syg(amber). Var #0A84FF = kollideren m. dag. Tema-stabil absolut-farve. */
    --pln-shift-ferie: var(--bh-green, #1F9E5A);   /* kobolt-bauhaus: success-grøn (ferie) */
    --pln-shift-syg: #E5A11A;      /* kobolt-bauhaus: kalibreret gul (syg) — semantisk amber, ej brand */
    --pln-shift-fri: var(--bh-ink-3, #8C857A);      /* kobolt-bauhaus: ink-3 (fri) */
    /* Bløde tints til kort-baggrunde (afledt af shift-farverne) */
    --pln-shift-ferie-bg: rgba(var(--success-rgb, 31, 158, 90), 0.10);
    --pln-shift-syg-bg: rgba(229, 161, 26, 0.12);
}
[data-theme="light"] .pln-view {
    /* Repointet til delte chrome-flip-tokens (--sidebar-bg/--topbar-bg flipper allerede pr. tema) */
    --pln-sidebar-bg: var(--sidebar-bg);
    --pln-topbar-bg: var(--topbar-bg);
}

/* ── Reset + root ───────────────────────────────────────────── */
.pln-view { min-height:100vh; background:var(--color-bg); color:var(--color-text-1); font-family:var(--font-sans, 'Inter', sans-serif); }
.pln-view * { box-sizing:border-box; }

/* ── Shell-layout: sidebar + main-area ───────────────────────── */
/* App-shell: bounded højde + intern scroll (paritet m. Workspace/Canvas).
   Var min-height:100vh → body scrollede → sidebar scrollede væk. */
.pln-shell { position:relative; display:flex; height:100vh; overflow:hidden; }   /* position:relative = containing-block for collapsed:hover-overlay (paritet m. App/Canvas) */
.pln-main-area { flex:1; display:flex; flex-direction:column; min-width:0; min-height:0; overflow:hidden; }

/* ── SIDEBAR (matcher Workspace .sidebar - index.html:443+) ─── */
.pln-sidebar {
    width: var(--pln-sw);
    min-width: var(--pln-sw);
    background: var(--sidebar-bg);
    border-right: 1px solid var(--color-border);
    padding: 16px 10px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-height: 0;       /* tillad at indre <nav> kan krympe + scrolle */
    overflow: hidden;    /* sidebar-roden scroller ikke selv (kun .nav gør) */
}
.pln-sidebar.collapsed { width: var(--pln-sw-x); min-width: var(--pln-sw-x); padding: 12px 8px; }
.pln-sidebar.collapsed .pln-nav-btn__label,
.pln-sidebar.collapsed .pln-nav-section,
.pln-sidebar.collapsed .pln-brand__text { display:none; }
.pln-sidebar.collapsed .pln-nav-btn { justify-content:center; padding:8px 0; gap:0; }
.pln-sidebar.collapsed:hover {
    width: var(--pln-sw);
    position: absolute; top:0; left:0; bottom:0;
    z-index: 200;
    box-shadow: 4px 0 24px rgba(0,0,0,.22);
}
.pln-sidebar.collapsed:hover .pln-nav-btn__label,
.pln-sidebar.collapsed:hover .pln-nav-section,
.pln-sidebar.collapsed:hover .pln-brand__text { display:inline; }
.pln-sidebar.collapsed:hover .pln-nav-btn { justify-content:flex-start; padding:7px 10px; gap:10px; }

/* Brand-header */
.pln-brand { display:flex; align-items:center; justify-content:space-between; padding:6px 8px 16px; gap:8px; }
.pln-brand__logo { display:inline-flex; align-items:center; gap:2px; font-family:var(--bh-body); font-weight:800; font-size:1.15rem; color:var(--color-text-1); letter-spacing:-.02em; }
.pln-brand__dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--color-accent); margin-left:3px; }
.pln-brand__text { margin-left:2px; font-weight:400; }
.pln-sidebar-toggle { background:transparent; border:0; color:var(--color-text-3); cursor:pointer; padding:4px; border-radius:var(--radius-md, 14px); display:flex; align-items:center; font-family:inherit; }
.pln-sidebar-toggle:hover { background:var(--color-surface); color:var(--color-text-1); }

/* Nav-sections + items */
.pln-nav-section { font-size:.62rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--color-text-3); padding:14px 10px 6px; }
.pln-nav-btn {
    display:flex; align-items:center; gap:10px;
    width:100%; padding:7px 10px;
    background:transparent; border:0; border-radius:8px;
    color:var(--color-text-2); font-size:.78rem; font-weight:500;
    cursor:pointer; text-align:left; font-family:inherit;
    position:relative;
    transition: background .15s, color .15s;
}
.pln-nav-btn:hover { background:var(--color-surface); color:var(--color-text-1); }
.pln-nav-btn--active {
    background: var(--color-accent-dim);
    color: var(--accent-ink, var(--color-accent));
    font-weight:600;
}
.pln-nav-btn--active::before {
    content:''; position:absolute; left:-2px; top:8px; bottom:8px;
    width:3px; background:var(--color-accent); border-radius:0 2px 2px 0;
}
.pln-nav-btn__icon { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; flex-shrink:0; color:var(--color-text-3); transition:color .15s; }
.pln-nav-btn__icon .pln-ic { width:15px; height:15px; }
.pln-nav-btn:hover .pln-nav-btn__icon, .pln-nav-btn--active .pln-nav-btn__icon { color: var(--accent-ink, var(--color-accent)); }
.pln-nav-btn__label { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pln-nav-btn__badge {
    margin-left:auto; background:var(--color-warn-bg); color:var(--color-warn);
    font-size:.65rem; font-weight:700; padding:2px 7px; border-radius:999px;
    min-width:18px; text-align:center;
}

/* <nav> er det scrollende område (paritet m. Workspace .sidebar-nav):
   brand + product-switcher + hjælp forbliver pinned i top, bund pinned i bund. */
.pln-sidebar nav[role="tablist"] { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; }
.pln-nav-spacer { display:none; }   /* overflødig nu hvor <nav> har flex:1 */

/* Sidebar bottom (user + logout) */
.pln-sidebar-bottom { display:flex; flex-direction:column; gap:2px; padding-top:8px; border-top:1px solid var(--color-border); margin-top:8px; flex-shrink:0; }

/* ── TOPBAR (matcher Workspace .topbar - index.html:651+) ────── */
.pln-topbar {
    height: var(--pln-th); min-height: var(--pln-th);
    padding: 0 clamp(12px, 2vw, 22px);
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    background: var(--topbar-bg);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-bottom:1px solid var(--color-border);
    position:sticky; top:0; z-index:50;
}
.pln-topbar__title { font-size:clamp(1rem, 2.2vw, 1.2rem); font-weight:700; letter-spacing:-.015em; color:var(--color-text-1); margin:0; }
.pln-topbar__sub { font-size:.78rem; color:var(--color-text-3); font-weight:500; }
.pln-topbar__actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }

/* User-pill */
.pln-user-pill { display:inline-flex; align-items:center; gap:8px; padding:5px 12px 5px 5px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:999px; font-size:.82rem; color:var(--color-text-2); }
.pln-user-pill__avatar { width:26px; height:26px; border-radius:50%; background:var(--color-accent-dim); color: var(--accent-ink, var(--color-accent)); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.78rem; }
.pln-user-pill__role { font-size:.62rem; text-transform:uppercase; letter-spacing:.06em; color: var(--accent-ink, var(--color-accent)); font-weight:700; }

/* ── LOCATION-FILTER (matcher Workspace buildLocationFilterHTML) ── */
.pln-loc-filter { display:inline-flex; align-items:center; gap:8px; }
.pln-loc-filter__label { font-size:.65rem; font-weight:600; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.06em; }
.pln-loc-filter__select {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    padding: 5px 26px 5px 10px;
    font-size: .75rem; font-weight: 600;
    color: var(--color-text-1);
    font-family: inherit;
    cursor: pointer; outline: none;
    appearance: none; -webkit-appearance: none;
    /* Chevron tegnet med to currentColor-gradienter (ds-select-teknik) → flipper med tema, ingen hardcodet grå */
    background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
                      linear-gradient(135deg, currentColor 50%, transparent 50%);
    background-position: right 12px center, right 8px center;
    background-size: 4px 4px;
    background-repeat: no-repeat;
}
.pln-loc-filter__select:focus { border-color: var(--color-accent); }

/* ── Main content area ─────────────────────────────────────── */
.pln-main { flex:1; min-height:0; overflow-y:auto; padding:clamp(14px, 2.5vw, 26px); max-width:none; margin:0 auto; width:100%; }

/* ── Filter-bar over content (matcher Workspace .lb2-filters-bar) ── */
.pln-filter-bar {
    display:flex; align-items:center; gap:16px; flex-wrap:wrap;
    margin-bottom: 14px;
}
.pln-filter-bar > * { flex-shrink:0; }
.pln-filter-bar__spacer { flex:1; min-width:0; }

/* ── Timeline (phoner Min uge - kronologiske kort uden dag-grupper) ── */
.pln-timeline { display:flex; flex-direction:column; gap:10px; }
/* QoL: "Næste vagt"-fremhævning øverst i Min uge (phoner). Genbruger shift-type-venstrekant
   via .pln-shift--* (sat på elementet). Token-baseret → theme-flip-sikker. */
.pln-next-shift {
    display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 12px;
    padding:12px 16px; margin-bottom:14px;
    background:var(--color-card-solid, var(--color-surface)); border:1px solid var(--color-border);
    border-left:4px solid var(--pln-shift-dag, var(--color-accent)); border-radius:12px;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.pln-next-shift__label { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--color-text-3); }
.pln-next-shift__when { font-size:1.05rem; font-weight:700; color:var(--color-text-1); }
.pln-next-shift__time { font-size:1.05rem; font-weight:600; color:var(--color-text-2); font-variant-numeric:tabular-nums; }
.pln-next-shift.pln-shift--aften { border-left-color:var(--pln-shift-aften); }
.pln-next-shift.pln-shift--nat { border-left-color:var(--pln-shift-nat); }
.pln-next-shift.pln-shift--ferie { border-left-color:var(--pln-shift-ferie); }
.pln-next-shift.pln-shift--syg { border-left-color:var(--pln-shift-syg); }
.pln-tl-card {
    position: relative;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-info);
    border-radius: 12px;
    padding: 14px 16px;
    display: flex; align-items: center; gap: 14px;
}
.pln-tl-card--today {
    border-color: var(--color-accent);
    box-shadow: 0 0 0 1px var(--color-accent-dim);
}
.pln-tl-card--past { opacity: .7; }
.pln-tl-card--past .pln-tl-card__time,
.pln-tl-card--past .pln-tl-card__date,
.pln-tl-card--past .pln-tl-card__type { color: var(--color-text-3); }
.pln-tl-card--today-tag { margin-left:auto; }
.pln-tl-card__main { flex:1; min-width:0; }
.pln-tl-card__head { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px; font-size:.92rem; }
.pln-tl-card__date { color: var(--color-text-1); font-weight:600; }
.pln-tl-card__time { color: var(--color-text-1); font-weight:600; }
.pln-tl-card__type { color: var(--color-text-2); }
.pln-tl-card__sep { color: var(--color-text-3); }
.pln-tl-card__done { color: var(--color-success); margin-left:4px; display:inline-flex; align-items:center; }
.pln-tl-card__done .pln-ic { width:14px; height:14px; stroke-width:2.6; }
.pln-tl-card__status {
    display: inline-block;
    margin-top: 6px;
    padding: 2px 9px;
    border-radius: 999px;
    background: var(--color-warn-bg);
    color: var(--color-warn);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.pln-tl-card__note { color: var(--color-text-3); font-size:.78rem; margin-top:4px; }
.pln-tl-card__dept { color: var(--color-text-3); font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; margin-top:2px; }
/* Type-farver - bruger samme palette som grid */
.pln-tl-card.pln-shift--dag { border-left-color: var(--pln-shift-dag); }
.pln-tl-card.pln-shift--aften { border-left-color: var(--pln-shift-aften); }
.pln-tl-card.pln-shift--nat { border-left-color: var(--pln-shift-nat); }
.pln-tl-card.pln-shift--ferie { border-left-color: var(--pln-shift-ferie); background: var(--pln-shift-ferie-bg); }
.pln-tl-card.pln-shift--syg { border-left-color: var(--pln-shift-syg); background: var(--pln-shift-syg-bg); }
.pln-tl-card.pln-shift--fri { border-left-color: var(--pln-shift-fri); }
/* Hover-lift for timeline-cards (skipper past-cards) */
.pln-tl-card { transition: background .12s, transform .14s, box-shadow .14s, border-color .12s; }
.pln-tl-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.18); }
.pln-tl-card--past:hover { transform: none; box-shadow: none; }

/* ── Animationer ───────────────────────────────────────────────
   B-variant (Hammer 2026-05-19): subtile fade/lift, ingen stagger.
   Alle under .25s. Respekterer prefers-reduced-motion.
─────────────────────────────────────────────────────────────── */
@keyframes pln-fade-in {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: none; }
}
@keyframes pln-fade-up {
    from { opacity: 0; transform: translateY(8px) scale(.92); }
    to   { opacity: 1; transform: none; }
}
@keyframes pln-pulse-success {
    0%   { box-shadow: 0 0 0 0 var(--color-success); }
    100% { box-shadow: 0 0 0 10px rgba(0,0,0,0); }
}
/* Tab-skift: indhold fader ind */
.pln-tab[data-tab] { animation: pln-fade-in .18s ease; }
/* Empty-state ikon: float-in (.22s - under .25s-grænsen) */
.pln-empty__icon { animation: pln-fade-up .22s ease; }
/* Success-pulse - bruges af approve/reject-flows (.24s - kort men registrerbar) */
.pln-pulse--success { animation: pln-pulse-success .24s ease; }

/* Reduced motion: respekter brugerens preference (a11y) */
@media (prefers-reduced-motion: reduce) {
    .pln-tab[data-tab], .pln-empty__icon, .pln-toast, .pln-modal, .pln-modal__box,
    .pln-shift, .pln-tl-card, .pln-btn, .pln-pulse--success { animation: none !important; }
    .pln-shift:hover, .pln-tl-card:hover { transform: none !important; box-shadow: none !important; }
    .pln-btn:active { transform: none !important; }
}

/* ── Responsive (mobile/tablet) ────────────────────────────────
   - <=900px: sidebar auto-collapser (matcher Workspace 768/1100-cutoff)
   - <=640px: tighter padding, modal-fuldskærm-feel, gridder reflow'er
   - pointer:coarse: større touch-targets på nav-btns + .pln-btn
─────────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .pln-sidebar:not(.collapsed) {
        width: var(--pln-sw-x);
        min-width: var(--pln-sw-x);
        padding: 12px 8px;
    }
    .pln-sidebar:not(.collapsed) .pln-nav-btn__label,
    .pln-sidebar:not(.collapsed) .pln-nav-section,
    .pln-sidebar:not(.collapsed) .pln-brand__text { display: none; }
    /* 2026-07-11: også underteksten (tenant-navn fra branding.js) - kun __text blev
       skjult, så "Shift" + "Børns Vilkår" ombrød klemt i 72px-skinnen (audit 800px). */
    .pln-sidebar:not(.collapsed) .pln-brand__sub { display: none; }
    .pln-sidebar:not(.collapsed) .pln-nav-btn { justify-content: center; padding: 9px 0; gap: 0; }
    /* Hover-expand virker stadig (også som tap-to-expand på touch) */
    .pln-sidebar:not(.collapsed):hover {
        width: var(--pln-sw); position: absolute; top: 0; left: 0; bottom: 0;
        z-index: 200; box-shadow: 4px 0 24px rgba(0,0,0,.22);
    }
    .pln-sidebar:not(.collapsed):hover .pln-nav-btn__label,
    .pln-sidebar:not(.collapsed):hover .pln-nav-section,
    .pln-sidebar:not(.collapsed):hover .pln-brand__text { display: inline; }
    .pln-sidebar:not(.collapsed):hover .pln-brand__sub { display: inline; }
    .pln-sidebar:not(.collapsed):hover .pln-nav-btn { justify-content: flex-start; padding: 9px 12px; gap: 10px; }
}
@media (max-width: 640px) {
    .pln-main { padding: 12px 10px; }
    .pln-modal { padding: 8px; }
    .pln-modal__box { max-height: 96vh; border-radius: 12px; }
    .pln-modal__head, .pln-modal__body, .pln-modal__foot { padding-left: 14px; padding-right: 14px; }
    .pln-field__row { grid-template-columns: 1fr; } /* stack dato/type osv ovenpå hinanden */
    .pln-filter-bar { gap: 8px; }
    /* Tving location-filter på egen række så week-nav + 'I dag' bliver
       sammen, ikke splittet over 2 linjer. Targets immediate child-divs. */
    .pln-filter-bar > #loc-filter-host,
    .pln-filter-bar > #loc-filter-host-aabne { flex-basis: 100%; }
    .pln-topbar { padding: 0 10px; }
    .pln-topbar__title { font-size: 1rem; }
    .pln-user-pill__role { display: none; } /* spar plads - kun navn */
    .pln-tl-card { padding: 12px; gap: 10px; }
    .pln-tl-card__head { font-size: .85rem; }
}
/* Touch-targets: 44x44px-anbefaling fra Apple HIG på pointer:coarse */
/* 2026-05-22 audit-fix: .pln-btn + .pln-btn--sm løftet til 44px-gulvet -
   "Tag vagt", "Foreslå byt" og week-nav-pile var under tærsklen på touch. */
@media (pointer: coarse) {
    /* 2026-07-10 komponent-konsolidering: .pst-btn/.bdg-btn (settings/budget-fragmenter)
       foelger samme touch-gulv som .pln-btn - de er nu visuelt 1:1 med .pln-btn. */
    .pln-btn, .pst-btn, .bdg-btn { min-height: 44px; padding: 10px 16px; }
    .pln-btn--sm { min-height: 44px; padding: 8px 12px; }
    .pln-nav-btn { padding: 12px 14px; min-height: 44px; }
    .pln-sidebar-toggle { padding: 8px; }
    .pln-modal__close { padding: 8px 12px; font-size: 1.4rem; }
}

/* ── Light-theme overrides ─────────────────────────────────────
   De fleste farver kommer fra design-tokens.css ([data-theme="light"]).
   Her overrider vi kun de planner-specifikke hardcoded værdier (shadows
   + SVG-chevron-farve) der ellers ville være for kraftige på lys baggrund.
─────────────────────────────────────────────────────────────── */
[data-theme="light"] .pln-toast { box-shadow: 0 8px 24px rgba(15, 20, 35, 0.14); }
[data-theme="light"] .pln-shift:hover,
[data-theme="light"] .pln-tl-card:hover { box-shadow: 0 4px 12px rgba(15, 20, 35, 0.10); }
[data-theme="light"] .pln-sidebar.collapsed:hover { box-shadow: 4px 0 24px rgba(15, 20, 35, 0.12); }
[data-theme="light"] .pln-modal { background: rgba(15, 20, 35, 0.30); } /* lysere overlay */
/* (Chevron i location-select bruger nu currentColor-gradienter → flipper automatisk, ingen light-override nødvendig) */

/* ── Card-blok (sektioner) ───────────────────────────────────── */
.pln-card { background:var(--color-card); backdrop-filter:blur(10px); border:1px solid var(--color-border); border-radius:var(--radius-xl, 24px); padding:clamp(14px, 2.5vw, 22px); margin-bottom:var(--space-4); }
.pln-card__head { display:flex; align-items:baseline; gap:var(--space-3); margin-bottom:var(--space-3); flex-wrap:wrap; }
.pln-card__title { font-size:1rem; font-weight:600; margin:0; color:var(--color-text-1); }
.pln-card__title--sm { font-size:.9rem; }
.pln-card__sub { font-size:.8rem; color:var(--color-text-3); }
.pln-card__head-spacer { flex:1; min-width:0; }

/* ── Knapper ─────────────────────────────────────────────────── */
.pln-btn { display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border:1px solid var(--color-border-strong); background:var(--color-surface); color:var(--color-text-1); border-radius:var(--radius-md, 14px); font-size:var(--text-sm, .78rem); font-weight:500; cursor:pointer; transition:background .15s, transform .08s; font-family:inherit; }  /* font-size ENS m. app/canvas/hrm (.78) */
.pln-btn:hover { background:var(--color-surface-hover); }
.pln-btn:active { transform: scale(.97); }
.pln-btn:disabled { opacity:.5; cursor:not-allowed; }
.pln-btn--primary { background:var(--color-accent); color:var(--color-on-accent); border-color:transparent; font-weight:600; }
.pln-btn--primary:hover { background:var(--color-accent-hover); }
.pln-btn--danger { background:var(--color-danger-bg); color:var(--color-danger); border-color:transparent; }
.pln-btn--ghost { background:transparent; border-color:transparent; color:var(--color-text-2); }
.pln-btn--ghost:hover { background:var(--color-surface); color:var(--color-text-1); }
.pln-btn--sm { padding:5px 10px; font-size:.78rem; }

/* ── Week-nav ────────────────────────────────────────────────── */
.pln-weeknav { display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; }
.pln-weeknav__label { font-weight:600; font-size:clamp(.9rem, 1.6vw, 1rem); min-width:14ch; text-align:center; }

/* ── Shift-grid (manager) ────────────────────────────────────── */
.pln-grid { display:grid; gap:1px; background:var(--color-border); border-radius:12px; overflow:hidden; container-type:inline-size; box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.pln-grid__day { background:var(--color-card-solid); padding:var(--space-3); min-height:160px; display:flex; flex-direction:column; gap:8px; position:relative; }
.pln-grid__day__head { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; padding-bottom:8px; margin-bottom:2px; border-bottom:1px solid var(--color-border); }
.pln-grid__day__head__date { display:flex; flex-direction:column; gap:1px; min-width:0; }
.pln-grid__day__weekday { font-size:.62rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--color-text-3); line-height:1; }
.pln-grid__day__dom { font-size:1.05rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; line-height:1.1; }
.pln-grid__day__count { font-size:.62rem; font-weight:700; padding:2px 7px; border-radius:999px; background:var(--color-surface); color:var(--color-text-3); border:1px solid var(--color-border); flex-shrink:0; align-self:center; line-height:1.3; }
.pln-grid__day__count[data-zero="1"] { opacity:.45; }
/* Today-tile: subtle accent-tint + accent-stripe top, weekday i accent-farve. */
.pln-grid__day--today { background: color-mix(in srgb, var(--color-accent) 4%, var(--color-card-solid)); }
.pln-grid__day--today::before { content:""; position:absolute; left:0; right:0; top:0; height:2px; background:var(--color-accent); }
.pln-grid__day--today .pln-grid__day__weekday { color: var(--accent-ink, var(--color-accent)); }
.pln-grid__day--today .pln-grid__day__count { background:var(--color-accent-dim); color: var(--accent-ink, var(--color-accent)); border-color:transparent; }
/* Empty-per-day: subtil dashed placeholder, centreret vertikalt i resten af dagens kort. */
.pln-grid__day__empty { margin:auto 0; padding:14px 10px; border:1px dashed var(--color-border); border-radius:8px; text-align:center; font-size:.72rem; color:var(--color-text-3); font-style:normal; line-height:1.3; }
.pln-grid--week { grid-template-columns:repeat(7, minmax(0, 1fr)); }
@container (max-width: 720px) { .pln-grid--week { grid-template-columns:repeat(2, 1fr); } }
/* Loading/error/empty-tilstand i selve grid-containeren skal spænde alle kolonner
   ellers tager den kun 1 af 7 og ser sammenpresset ud. */
.pln-grid > .pln-empty { grid-column: 1 / -1; background:var(--color-card-solid); }

/* ── Shift-card ──────────────────────────────────────────────── */
.pln-shift { background:var(--color-surface); border:1px solid var(--color-border); border-left:3px solid var(--color-info); border-radius:8px; padding:9px 11px; font-size:.8rem; cursor:pointer; transition: background .12s, transform .14s, box-shadow .14s, border-left-width .14s; }
.pln-shift:hover { background:var(--color-surface-hover); transform: translateY(-2px); box-shadow: 0 6px 14px rgba(0,0,0,.18); border-left-width:4px; padding-left:10px; }
.pln-shift__time { font-weight:700; color:var(--color-text-1); font-size:.85rem; letter-spacing:-.01em; line-height:1.15; }
.pln-shift__name { color:var(--color-text-2); font-size:.78rem; font-weight:500; margin-top:3px; line-height:1.25; }
.pln-shift__dept { color:var(--color-text-3); font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; margin-top:3px; line-height:1.2; }
.pln-shift__status { color:var(--color-warn, #E5A11A); font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-top:4px; opacity:.85; display:inline-block; padding:1px 6px; border-radius:4px; background:var(--color-warn-bg); }
/* 2026-05-22 audit-fix: dag-vagter manglede egen regel - faldt tilbage til
   generisk blå .pln-shift-default. Matcher nu phoner-timeline (.pln-tl-card.pln-shift--dag). */
.pln-shift--dag { border-left-color:var(--pln-shift-dag); }
.pln-shift--ferie { border-left-color:var(--pln-shift-ferie); background:var(--pln-shift-ferie-bg); }
.pln-shift--syg { border-left-color:var(--pln-shift-syg); background:var(--pln-shift-syg-bg); }
.pln-shift--fri { border-left-color:var(--pln-shift-fri); }
.pln-shift--aften { border-left-color:var(--pln-shift-aften); }
.pln-shift--nat { border-left-color:var(--pln-shift-nat); }

/* ── Roster-layout (Plan) ────────────────────────────────────────
   2026-06-08 redesign: medarbejder pr. række (navn sticky i venstre
   kolonne), dage som kolonner, vagt-chips i cellerne. Alle farver via
   design-tokens → RUDE-skin-sikkert i både lyst og mørkt tema. */
.pln-roster-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:14px; }
.pln-roster {
    display:grid;
    grid-template-columns: minmax(150px, 1.4fr) repeat(7, minmax(90px, 1fr));
    gap:1px;
    background:var(--color-border);
    border:1px solid var(--color-border);
    border-radius:14px;
    overflow:hidden;
    min-width:780px;
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}
/* Header-celler */
.pln-roster__corner, .pln-roster__dayhead { background:var(--color-card-solid); padding:9px 12px; position:relative; }
.pln-roster__corner { position:sticky; left:0; z-index:4; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.pln-roster__corner__label { font-size:.62rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--color-text-3); }
.pln-roster__corner__sub { font-size:.62rem; font-weight:700; color:var(--color-text-3); background:var(--color-surface); border:1px solid var(--color-border); border-radius:999px; padding:1px 7px; line-height:1.3; }
.pln-roster__dayhead { display:flex; flex-direction:column; align-items:flex-start; gap:1px; }
.pln-roster__dayhead__wk { font-size:.6rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--color-text-3); line-height:1; }
.pln-roster__dayhead__dom { font-size:.95rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; line-height:1.1; }
.pln-roster__dayhead__count { position:absolute; top:9px; right:11px; font-size:.58rem; font-weight:700; color:var(--color-text-3); }
.pln-roster__dayhead__count[data-zero="1"] { opacity:.4; }
.pln-roster__dayhead.is-today { background: color-mix(in srgb, var(--color-accent) 8%, var(--color-card-solid)); }
.pln-roster__dayhead.is-today::after { content:""; position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--color-accent); }
.pln-roster__dayhead.is-today .pln-roster__dayhead__wk { color: var(--accent-ink, var(--color-accent)); }
/* Navn-kolonne (sticky left) */
.pln-roster__name {
    background:var(--color-card-solid);
    padding:8px 12px;
    position:sticky; left:0; z-index:2;
    display:flex; flex-direction:column; gap:2px; justify-content:center;
    min-height:48px;
}
.pln-roster__name__txt { font-size:.8rem; font-weight:600; color:var(--color-text-1); line-height:1.2; display:flex; align-items:center; gap:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pln-roster__name__hrs { font-size:.64rem; font-weight:600; color:var(--color-text-3); letter-spacing:.01em; }
/* 2026-06-20: vagt-kvote-flag pr. medarbejder (for få vagter ift. stilling, fravær-justeret) */
.pln-roster__name__quota { font-size:.62rem; font-weight:600; color:var(--color-text-3); letter-spacing:.01em; display:inline-flex; align-items:center; gap:3px; }
.pln-roster__name__quota.is-under, .pln-roster__name__quota.is-over { padding:1px 5px; border-radius:6px; }
.pln-roster__name__quota.is-under { color:var(--color-danger, var(--color-warn)); background:var(--color-danger-bg, var(--color-warn-bg)); }
.pln-roster__name__quota.is-under[data-quota-add] { cursor:pointer; }
.pln-roster__name__quota.is-under[data-quota-add]:hover { filter:brightness(1.08); text-decoration:underline; }
.pln-roster__name__quota.is-over { color:var(--color-warn); background:var(--color-warn-bg); }
.pln-plan-search-count { font-size:.72rem; color:var(--color-text-3); white-space:nowrap; align-self:center; }
.pln-quota-empty { padding:16px 12px; color:var(--color-text-3); font-size:.85rem; }
/* 2026-06-20 (kritik-fase F+G): kvote periode-overblik (måned) */
.pln-quota-ov__head { display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.pln-quota-ov__title { font-weight:600; min-width:130px; text-align:center; }
.pln-quota-ov__toggle { margin-left:auto; font-size:.82rem; display:flex; align-items:center; gap:5px; cursor:pointer; }
.pln-quota-ov__sum { font-size:.8rem; color:var(--color-text-3); margin-bottom:8px; }
.pln-quota-ov__tbl { width:100%; border-collapse:collapse; font-size:.85rem; }
.pln-quota-ov__tbl th, .pln-quota-ov__tbl td { text-align:left; padding:6px 8px; border-bottom:1px solid var(--color-border); }
.pln-quota-ov__tbl th { color:var(--color-text-3); font-weight:600; font-size:.74rem; text-transform:uppercase; letter-spacing:.02em; }
.pln-qov-dev { font-weight:600; font-size:.78rem; padding:1px 6px; border-radius:6px; white-space:nowrap; }
.pln-qov-dev.is-under { color:var(--color-danger, var(--color-warn)); background:var(--color-danger-bg, var(--color-warn-bg)); }
.pln-qov-dev.is-over { color:var(--color-warn); background:var(--color-warn-bg); }
.pln-qov-dev.is-ok { color:var(--color-text-3); }
.pln-roster__name__quota .pln-ic { width:.85em; height:.85em; }
.pln-quota-banner { display:flex; align-items:center; gap:8px; padding:8px 12px; margin:0 0 10px; background:var(--color-warn-bg); color:var(--color-warn); border:1px solid var(--color-border); border-radius:10px; font-size:.82rem; font-weight:600; }
.pln-quota-banner .pln-ic { width:1.1em; height:1.1em; flex:0 0 auto; }
/* Dag-celler */
.pln-roster__cell { background:var(--color-card-solid); padding:5px; display:flex; flex-direction:column; gap:4px; min-height:48px; content-visibility:auto; contain-intrinsic-size:auto 48px; } /* 2026-06-20 kritik-fase H: CSS-virtualisering — springer off-screen chip-render over (navne-kol. forankrer rækkehøjde → ingen hop); graceful på ældre browsere */
.pln-roster__cell.is-today { background: color-mix(in srgb, var(--color-accent) 4%, var(--color-card-solid)); }
/* Vagt-chip */
.pln-rchip {
    appearance:none; -webkit-appearance:none; width:100%; text-align:left; cursor:pointer; font:inherit;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-left:3px solid var(--color-info);
    border-radius:7px;
    padding:5px 8px;
    transition: background .12s, transform .12s, box-shadow .12s;
}
.pln-rchip:hover { background:var(--color-surface-hover); transform:translateY(-1px); box-shadow: 0 4px 10px rgba(0,0,0,.16); }
.pln-rchip__label { display:block; font-size:.74rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; white-space:nowrap; line-height:1.2; }
.pln-rchip.is-unapproved { border-left-style:dashed; }
.pln-rchip.is-unapproved .pln-rchip__label { color:var(--color-text-2); }
.pln-rchip.is-absence .pln-rchip__label { font-weight:600; }
.pln-rchip.pln-shift--dag { border-left-color:var(--pln-shift-dag); }
.pln-rchip.pln-shift--aften { border-left-color:var(--pln-shift-aften); }
.pln-rchip.pln-shift--nat { border-left-color:var(--pln-shift-nat); }
.pln-rchip.pln-shift--ferie { border-left-color:var(--pln-shift-ferie); background:var(--pln-shift-ferie-bg); }
.pln-rchip.pln-shift--syg { border-left-color:var(--pln-shift-syg); background:var(--pln-shift-syg-bg); }
.pln-rchip.pln-shift--fri { border-left-color:var(--pln-shift-fri); }
/* 2026-06-19: Åbne vagter-række (ubesatte Planday-vagter) på Plan — egen overlay-række øverst. */
.pln-roster__name--open { border-left:3px solid var(--color-accent); }
.pln-roster__name--open .pln-roster__name__txt { color:var(--color-accent); }
.pln-roster__cell--open { background:color-mix(in srgb, var(--color-accent) 5%, var(--color-card-solid)); }
.pln-rchip--open { border-left:3px dashed var(--color-accent); }
.pln-rchip--open .pln-rchip__label { color:var(--color-text-2); font-weight:600; }
.pln-rchip__cnt { font-size:.66rem; font-weight:700; color:var(--color-accent); flex-shrink:0; }
.pln-roster__more { font-size:.62rem; color:var(--color-text-3); padding:2px 4px; display:inline-block; }
/* 2026-06-19: bulk-redigering — vælg-tilstand + handlingsbjælke. */
.pln-bulk-bar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 12px; padding:8px 12px; background:var(--color-info-bg); border:1px solid var(--color-border); border-radius:10px; }
.pln-bulk-bar__count { font-size:.82rem; font-weight:600; color:var(--color-text-1); margin-right:4px; }
body.pln-selectmode .pln-rchip:not(.pln-rchip--open) { cursor:cell; }
.pln-rchip.is-selected { outline:2px solid var(--color-accent); outline-offset:1px; background:color-mix(in srgb, var(--color-accent) 14%, var(--color-surface)); }
.pln-rchip.is-selected .pln-rchip__label { color:var(--color-text-1); }
/* 2026-06-19: undgå tekst-markering ved Shift/Ctrl-klik (duplikér/multi-select) — markering sker på mousedown, før preventDefault. */
.pln-rchip { user-select:none; -webkit-user-select:none; }
/* 2026-06-19: åbne-vagter admin-modal (tildel hver ubesat Planday-vagt). */
.pln-open-admin__item { display:flex; align-items:center; gap:10px; padding:8px 0; border-top:1px solid var(--color-border); }
.pln-open-admin__item:first-of-type { border-top:0; }
.pln-open-admin__lbl { flex:1 1 auto; min-width:0; font-size:.82rem; color:var(--color-text-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pln-open-admin__sel { flex:0 0 auto; max-width:200px; }
@media (prefers-reduced-motion: reduce) { .pln-rchip:hover { transform:none; box-shadow:none; } }
/* Rigere chip: tid + status-prik øverst, shift-type som sub (eksakt Planday-data). */
.pln-rchip { display:flex; flex-direction:column; gap:3px; }
.pln-rchip__top { display:flex; align-items:center; justify-content:space-between; gap:6px; }
.pln-rchip__status { width:7px; height:7px; border-radius:50%; flex-shrink:0; box-shadow:0 0 0 2px var(--color-surface); }
/* Status-prik bruger SEMANTISKE status-tokens (success/warn) — IKKE shift-type-paletten
   (--pln-shift-ferie/-syg). Ellers delte "godkendt"-prikken farve med en ferie-vagts
   grønne kant og "tildelt" med syg-amber → to uafhængige betydninger kollapsede visuelt.
   (Audit: statusdot-shares-shifttype-color.) */
.pln-rchip__status.is-approved { background:var(--color-success, #1F9E5A); }
.pln-rchip__status.is-assigned { background:var(--color-warn, #E5A11A); }
/* QoL B1: Plan-legende — forklarer vagt-type-kanter, status-prik og kladde (var implicit). Token-baseret, theme-flip-sikker. */
.pln-plan-legend { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; padding:8px 12px; margin-bottom:10px; font-size:.7rem; color:var(--color-text-2); border:1px solid var(--color-border); border-radius:10px; background:var(--color-card-solid, var(--color-surface)); }
.pln-plan-legend__item { display:inline-flex; align-items:center; gap:6px; }
.pln-plan-legend__sw { width:16px; height:14px; border-radius:4px; border-left:3px solid var(--color-border); background:var(--color-surface); flex-shrink:0; }
.pln-plan-legend__sw.pln-shift--dag { border-left-color:var(--pln-shift-dag); }
.pln-plan-legend__sw.pln-shift--aften { border-left-color:var(--pln-shift-aften); }
.pln-plan-legend__sw.pln-shift--nat { border-left-color:var(--pln-shift-nat); }
.pln-plan-legend__sw.pln-shift--ferie { border-left-color:var(--pln-shift-ferie); }
.pln-plan-legend__sw.pln-shift--syg { border-left-color:var(--pln-shift-syg); }
.pln-plan-legend__dot { width:9px; height:9px; border-radius:50%; box-shadow:0 0 0 2px var(--color-surface); flex-shrink:0; }
.pln-plan-legend__dot.is-approved { background:var(--color-success); }
.pln-plan-legend__dot.is-assigned { background:var(--color-warn); }
.pln-plan-legend__draft { padding:0 5px; border:1px dashed var(--color-text-3); border-radius:4px; font-weight:600; }
.pln-plan-legend__sep { width:1px; height:16px; background:var(--color-border); }
/* QoL C1: medarbejder-søgning på Plan-filter-baren (kompakt, konsistent med øvrige filtre). */
.pln-plan-search { max-width:200px; min-width:120px; padding:6px 10px; font-size:.85rem; }
.pln-rchip__sub { font-size:.62rem; color:var(--color-text-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.2; max-width:100%; }
.pln-rchip.is-unapproved .pln-rchip__sub { color:var(--color-text-3); }

/* ══ PLAN-OVERHAUL 2026-07-11 ═══════════════════════════════════════════════
   Visuelt løft af roster-grid'et: fyldte type-tonede chips, dag-header med timer
   + relativ dæknings-bjælke, weekend-dæmpning, planlagt-vs-mål-meter pr. medarbejder.
   ALT via design-tokens + color-mix → RUDE-skin-sikkert i lys OG mørk. Ingen
   markup-/handler-ændring ud over additive spans (windowing/delimiter uberørt). */

/* Chip: fra tynd venstrekant → blød type-tonet flade med markant accent-skinne. */
.pln-rchip { border-left-width:4px; padding:6px 9px 6px 10px; border-radius:8px; gap:2px; box-shadow:0 1px 1px rgba(0,0,0,.03); }
.pln-rchip__label { font-size:.76rem; }
.pln-rchip.pln-shift--dag   { background:color-mix(in srgb, var(--pln-shift-dag)   9%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-dag) 22%, var(--color-border)); }
.pln-rchip.pln-shift--aften { background:color-mix(in srgb, var(--pln-shift-aften) 12%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-aften) 26%, var(--color-border)); }
.pln-rchip.pln-shift--nat   { background:color-mix(in srgb, var(--pln-shift-nat)   10%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-nat) 24%, var(--color-border)); }
.pln-rchip.pln-shift--ferie { background:color-mix(in srgb, var(--pln-shift-ferie) 11%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-ferie) 24%, var(--color-border)); }
.pln-rchip.pln-shift--syg   { background:color-mix(in srgb, var(--pln-shift-syg)   13%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-syg) 26%, var(--color-border)); }
.pln-rchip.pln-shift--fri   { background:color-mix(in srgb, var(--pln-shift-fri)   10%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--pln-shift-fri) 22%, var(--color-border)); }
.pln-rchip:hover { transform:translateY(-1px); box-shadow:0 5px 14px rgba(0,0,0,.16); filter:brightness(1.02); }
.pln-rchip:active { transform:translateY(0); box-shadow:0 1px 2px rgba(0,0,0,.1); }
.pln-rchip.is-draft { background:repeating-linear-gradient(135deg, var(--color-surface) 0 7px, color-mix(in srgb, var(--color-warn) 8%, var(--color-surface)) 7px 14px); opacity:1; }

/* Dag-header: timer-tal + relativ dæknings-bjælke ("ugens form"). */
.pln-roster__dayhead { padding-bottom:16px; }
.pln-roster__dayhead__hrs { font-size:.62rem; font-weight:700; color:var(--color-text-2); letter-spacing:.01em; line-height:1; margin-top:1px; }
.pln-roster__daycov { position:absolute; left:0; right:0; bottom:0; height:4px; background:color-mix(in srgb, var(--color-text-3) 14%, transparent); }
.pln-roster__daycov__fill { display:block; height:100%; background:color-mix(in srgb, var(--color-accent) 62%, var(--color-text-3)); border-radius:0 2px 2px 0; transition:width .25s ease; }
.pln-roster__dayhead.is-today .pln-roster__daycov__fill { background:var(--color-accent); }
.pln-roster__dayhead.is-weekend { background:color-mix(in srgb, var(--color-text-3) 6%, var(--color-card-solid)); }
.pln-roster__dayhead.is-weekend .pln-roster__dayhead__dom, .pln-roster__dayhead.is-weekend .pln-roster__dayhead__wk { color:var(--color-text-3); }
.pln-roster__cell.is-weekend { background:color-mix(in srgb, var(--color-text-3) 3%, var(--color-card-solid)); }

/* Planlagt-vs-mål-meter i navne-kolonnen. */
.pln-roster__name__hrs__tgt { color:var(--color-text-3); font-weight:600; }
.pln-roster__hmeter { display:block; height:5px; border-radius:3px; margin-top:3px; max-width:150px; background:color-mix(in srgb, var(--color-text-3) 15%, transparent); overflow:hidden; }
.pln-roster__hmeter__fill { display:block; height:100%; border-radius:3px; transition:width .25s ease; }
.pln-roster__hmeter.is-ok    .pln-roster__hmeter__fill { background:var(--color-success, #1F9E5A); }
.pln-roster__hmeter.is-under .pln-roster__hmeter__fill { background:var(--color-warn, #E5A11A); }
.pln-roster__hmeter.is-over  .pln-roster__hmeter__fill { background:var(--color-danger, #E5484D); }

/* Opdagelses-hint i legenden (drag/tastatur). Diskret, kun for ledere. */
.pln-plan-legend__hint { display:inline-flex; align-items:center; gap:5px; flex-wrap:wrap; color:var(--color-text-3); font-size:.66rem; }
.pln-plan-legend__hint[hidden] { display:none; }
.pln-plan-legend__kbd { display:inline-block; padding:0 5px; border:1px solid var(--color-border); border-bottom-width:2px; border-radius:5px; background:var(--color-surface); color:var(--color-text-2); font-size:.62rem; font-weight:700; line-height:1.55; }

/* Drag-drop: flyt/kopiér vagt. Native HTML5-drag → chip-klik uberørt. */
.pln-rchip[draggable] { cursor:grab; }
.pln-rchip.is-dragging { opacity:.35; }
body.pln-dragging .pln-roster__cell[data-cell-email] { transition:background .1s; }
.pln-roster__cell.is-drop-target { outline:2px dashed var(--color-accent); outline-offset:-3px; background:color-mix(in srgb, var(--color-accent) 12%, var(--color-card-solid)) !important; }
.pln-roster__cell.is-drop-target.is-drop-copy { outline-color:var(--pln-shift-nat, #7C5CFF); background:color-mix(in srgb, var(--pln-shift-nat, #7C5CFF) 12%, var(--color-card-solid)) !important; }

/* ══ slut Plan-overhaul 2026-07-11 ═════════════════════════════════════════ */

/* ── Team-grupper i roster ───────────────────────────────────── */
.pln-roster__team {
    grid-column:1 / -1;
    display:flex; align-items:center; gap:9px;
    background:var(--color-surface);
    padding:8px 12px;
    border-top:1px solid var(--color-border);
}
.pln-roster__team.is-orphan { background:var(--color-card-solid); }
.pln-roster__team__dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; }
.pln-roster__team__name { font-size:.82rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; }
.pln-roster__team__meta { font-size:.66rem; font-weight:600; color:var(--color-text-3); }
.pln-roster__team__tools { display:flex; gap:5px; margin-left:auto; }
.pln-roster__tbtn {
    appearance:none; border:1px solid var(--color-border-strong); background:var(--color-card-solid);
    color:var(--color-text-2); font:inherit; font-size:.66rem; font-weight:600;
    padding:3px 9px; border-radius:999px; cursor:pointer; transition:background .12s, color .12s, border-color .12s;
}
.pln-roster__tbtn:hover { background:var(--color-surface-hover); color:var(--color-text-1); }
.pln-roster__tbtn--danger:hover { color:var(--color-danger, #E5484D); border-color:var(--color-danger, #E5484D); }
.pln-roster__tbtn--new { font-size:.72rem; padding:6px 14px; }
.pln-roster__tbtn--icon { padding:3px 5px; line-height:0; display:inline-flex; align-items:center; }
.pln-roster__tbtn--icon .pln-ic { width:13px; height:13px; }
.pln-roster__teamempty, .pln-roster__newteam { grid-column:1 / -1; background:var(--color-card-solid); padding:9px 12px; }
.pln-roster__teamempty { font-size:.72rem; color:var(--color-text-3); font-style:italic; }
/* 2026-07-10: text-transform:capitalize fjernet — den lavede "Ubesat I Planday"
   (kapitaliserede småord); indholdet er allerede korrekt kapitaliserede labels. */
.pln-roster__name__meta { font-size:.62rem; font-weight:600; color:var(--color-text-3); line-height:1.15; }
/* (.pln-roster__name er allerede position:sticky → fungerer som kontekst for den absolutte medlems-knap; ingen separat position:relative, der ville bryde sticky-venstre.) */
.pln-roster__name.is-noshift .pln-roster__name__txt { color:var(--color-text-3); }
.pln-roster__membtn {
    position:absolute; top:6px; right:6px; opacity:0;
    appearance:none; border:none; background:transparent; cursor:pointer; padding:2px; border-radius:6px;
    color:var(--color-text-3); line-height:0; transition:opacity .12s, background .12s, color .12s;
}
.pln-roster__membtn .pln-ic { width:14px; height:14px; }
.pln-roster__name:hover .pln-roster__membtn { opacity:1; }
.pln-roster__membtn:hover { background:var(--color-surface-hover); color:var(--color-text-1); }
@media (hover:none) { .pln-roster__membtn { opacity:.6; } }

/* ── Form-input-aliaser (team-modaler) ───────────────────────── */
.pln-field__lbl { font-size:.8rem; color:var(--color-text-2); font-weight:500; }
.pln-input {
    width:100%; box-sizing:border-box;
    background:var(--color-surface); color:var(--color-text-1);
    border:1px solid var(--color-border); border-radius:8px;
    padding:9px 12px; font-size:.9rem; font-family:inherit;
    transition:border-color .12s, box-shadow .12s, background .12s;
}
.pln-input:focus { outline:none; border-color:var(--color-accent); background:var(--color-bg); }
.pln-team-palette { display:flex; gap:8px; flex-wrap:wrap; }
.pln-team-swatch { width:26px; height:26px; border-radius:50%; border:2px solid transparent; cursor:pointer; padding:0; transition:transform .1s; }
.pln-team-swatch:hover { transform:scale(1.12); }
.pln-team-swatch.is-on { border-color:var(--color-text-1); box-shadow:0 0 0 2px var(--color-bg) inset; }
.pln-member-ctx { font-size:.78rem; color:var(--color-text-3); margin-bottom:var(--space-3); line-height:1.4; }
.pln-member-pick { display:flex; flex-direction:column; gap:2px; max-height:50vh; overflow-y:auto; margin-top:8px; }
.pln-member-pick__row { appearance:none; text-align:left; border:none; background:transparent; color:var(--color-text-1); font:inherit; font-size:.85rem; padding:9px 11px; border-radius:7px; cursor:pointer; }
.pln-member-pick__row:hover { background:var(--color-surface-hover); }
.pln-member-pick__other { color:var(--color-text-3); font-size:.72rem; }
.pln-member-pick__empty { padding:14px; text-align:center; color:var(--color-text-3); font-size:.8rem; }

/* ── Tom-state ───────────────────────────────────────────────── */
.pln-empty { display:flex; flex-direction:column; align-items:center; padding:clamp(24px, 5vw, 52px) 20px; text-align:center; gap:var(--space-3); color:var(--color-text-3); }
.pln-empty__icon {
    width:54px; height:54px;
    border-radius:50%;
    background: var(--color-surface);
    color: var(--color-text-3);
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 4px;
}
.pln-empty__icon .pln-ic { width:24px; height:24px; }
.pln-empty__title { font-family:var(--bh-display); font-size:var(--font-size-lg, 1.05rem); color:var(--color-text-1); font-weight:700; }  /* empty-state-titel ENS m. app/canvas/hrm */
.pln-empty__sub { font-size:var(--font-size-sm, .82rem); max-width:40ch; line-height:1.5; }
.pln-empty__cta { margin-top: var(--space-2); }

/* ── Toast (ikon-led, status-farvet baggrund) ─────────────────── */
.pln-toast-host { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; z-index:9999; pointer-events:none; }
.pln-toast {
    pointer-events:auto;
    display:inline-flex; align-items:center; gap:10px;
    padding:10px 18px 10px 14px;
    border-radius:12px;
    font-size:.85rem; font-weight:500;
    box-shadow:0 10px 30px rgba(0,0,0,.42);
    animation:pln-toast-in .22s ease;
}
.pln-toast__ic { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.pln-toast__ic .pln-ic { width:18px; height:18px; stroke-width:2.4; }
.pln-toast__msg { line-height:1.3; }
/* Info (default): neutral kort-baggrund */
.pln-toast--info { background:var(--color-card-solid); color:var(--color-text-1); border:1px solid var(--color-border); }
/* Ok: accent-grøn baggrund, hvid tekst+ikon */
.pln-toast--ok   { background:var(--color-success); color:var(--color-on-accent); }
/* Warn: gul baggrund, mørk tekst */
.pln-toast--warn { background:var(--color-warn); color:#1a1206; }
/* Err: rød baggrund, hvid tekst+ikon */
.pln-toast--err  { background:var(--color-danger); color:#ffffff; }
/* Kobolt-bauhaus: skinnet sætter .pln-toast{background:var(--bh-surface)!important}
   som ramte ALLE varianter → ok/err fik hvid tekst på hvid flade (usynligt).
   Doblet-klasse (0,2,0) + !important vinder over skinnets 0,1,0 og genskaber
   de solide status-color-blocks med korrekt kontrast. */
.pln-toast.pln-toast--info { background:var(--color-card-solid) !important; color:var(--color-text-1) !important; }
.pln-toast.pln-toast--ok   { background:var(--bh-green, #1F9E5A) !important; color:var(--color-on-accent, #063d22) !important; }
.pln-toast.pln-toast--warn { background:#E5A11A !important; color:#14110D !important; }
.pln-toast.pln-toast--err  { background:var(--bh-danger, #E0392B) !important; color:#FFFFFF !important; }
@keyframes pln-toast-in { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }

/* 2026-05-22 audit-fix: diskret badge når SSE-live-opdateringer er afbrudt.
   Vises nederst til venstre så den ikke kolliderer med toast-host (centreret). */
.pln-sse-offline {
    position:fixed; bottom:24px; left:24px; z-index:9998;
    display:inline-flex; align-items:center;
    padding:7px 13px;
    border-radius:999px;
    background:var(--color-warn-bg); color:var(--color-warn);
    border:1px solid var(--color-warn);
    font-size:.74rem; font-weight:600;
    box-shadow:0 6px 18px rgba(0,0,0,.28);
    pointer-events:none;
}

/* ─── Bemandingsplan (Fravær sub-fane 4, 2026-06-09) ──────────────────────
   Rolle-grupperet fravær-varmekort + "til stede / mål"-stribe for en periode.
   Alle rækker (header/rolle/medlem) deler grid-template-columns (sat inline pr.
   render) → kolonner aligner. Farver fra fravær-tokens (--pln-shift-*). */
.pln-bem-toolbar { display:flex; align-items:flex-end; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
.pln-bem-field { min-width:150px; }
.pln-bem-chips { display:flex; flex-wrap:wrap; gap:6px; }
.pln-bem-toolbar__spacer { flex:1 1 auto; min-width:8px; }
.pln-bem__summary { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-bottom:10px; font-size:.78rem; color:var(--color-text-2); }
.pln-bem__viewtoggle { margin-left:auto; }
.pln-bem-scroll { overflow-x:auto; border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px); background:var(--color-card-solid); }
.pln-bem { min-width:560px; }
.pln-bem__row { display:grid; align-items:stretch; border-bottom:1px solid var(--color-border); }
.pln-bem__row:last-child { border-bottom:0; }
.pln-bem__row--head { position:sticky; top:0; z-index:2; background:var(--color-card-solid); font-weight:700; }
.pln-bem__corner { padding:8px 10px; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); display:flex; align-items:center; }
.pln-bem__colh { padding:7px 4px; text-align:center; font-size:.66rem; font-weight:600; color:var(--color-text-2); border-left:1px solid var(--color-border); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pln-bem__colh.is-weekend { color:var(--color-text-3); background:color-mix(in srgb, var(--color-text-3) 7%, transparent); }
.pln-bem__row--role { background:color-mix(in srgb, var(--color-accent) 4%, var(--color-card-solid)); }
.pln-bem__rolehead { appearance:none; border:0; background:transparent; cursor:pointer; display:flex; align-items:center; gap:7px; padding:8px 10px; font:inherit; color:var(--color-text-1); text-align:left; width:100%; }
.pln-bem__caret { display:inline-flex; color:var(--color-text-3); line-height:0; }
.pln-bem__caret .pln-ic { width:15px; height:15px; }
.pln-bem__rolelbl { font-weight:700; font-size:.82rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pln-bem__rolen { margin-left:auto; flex:0 0 auto; min-width:22px; text-align:center; font-size:.7rem; font-weight:700; padding:1px 7px; border-radius:999px; background:var(--color-surface); color:var(--color-text-2); }
.pln-bem__tally { border-left:1px solid var(--color-border); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; padding:5px 2px; min-height:38px; }
.pln-bem__tnum { font-size:.82rem; font-weight:800; font-variant-numeric:tabular-nums; line-height:1; }
.pln-bem__tgoal { font-size:.62rem; font-weight:600; opacity:.65; }
.pln-bem__tplan { font-size:.58rem; font-weight:700; color:var(--color-text-3); background:var(--color-surface); border-radius:4px; padding:0 4px; line-height:1.4; }
.pln-bem__tally.is-ok { color:var(--color-success, #1F9E5A); background:color-mix(in srgb, var(--color-success, #1F9E5A) 10%, transparent); }
.pln-bem__tally.is-warn { color:var(--pln-shift-syg, #E5A11A); background:color-mix(in srgb, var(--pln-shift-syg, #E5A11A) 14%, transparent); }
.pln-bem__tally.is-under { color:var(--color-danger, #d9534f); background:color-mix(in srgb, var(--color-danger, #d9534f) 15%, transparent); }
.pln-bem__tally.is-weekend { filter:saturate(.6) opacity(.92); }
.pln-bem__members.is-collapsed { display:none; }
.pln-bem__noabs { padding:8px 12px; font-size:.74rem; color:var(--color-text-3); }
.pln-bem__row--m { font-size:.78rem; }
.pln-bem__row--m:hover { background:var(--color-surface); }
.pln-bem__mname { padding:5px 10px 5px 26px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--color-text-1); display:flex; align-items:center; }
.pln-bem__cell { border-left:1px solid var(--color-border); min-height:26px; display:flex; align-items:center; justify-content:center; }
.pln-bem__cell.is-empty { background:transparent; }
.pln-bem__cell.is-empty.is-weekend { background:color-mix(in srgb, var(--color-text-3) 6%, transparent); }
.pln-bem__cell.pln-shift--ferie { background:var(--pln-shift-ferie, #1F9E5A); }
.pln-bem__cell.pln-shift--syg { background:var(--pln-shift-syg, #E5A11A); }
.pln-bem__cell.pln-shift--laege { background:var(--pln-shift-laege); }
.pln-bem__cell.pln-shift--andet { background:var(--pln-shift-nat, #7C5CFF); }
.pln-bem__celln { font-size:.6rem; font-weight:800; color:#fff; text-shadow:0 1px 1px rgba(0,0,0,.35); } /* label på fler-farvede shift-swatches (ferie/syg/læge/nat) — hvid m. text-shadow er tema-stabil, ej accent-fyld */
.pln-bem__legend { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:10px; font-size:.72rem; color:var(--color-text-3); }
.pln-bem__leg-ex { color:var(--color-text-3); }
/* Drift-postures-række (Fase 5) */
.pln-bem__row--drift { background:color-mix(in srgb, var(--color-accent) 3%, var(--color-card-solid)); border-bottom:2px solid var(--color-border); }
.pln-bem__driftlbl { padding:5px 10px; font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); display:flex; align-items:center; }
.pln-bem__drift { border-left:1px solid var(--color-border); display:flex; align-items:center; justify-content:center; padding:3px 2px; min-height:22px; font-size:.58rem; font-weight:700; color:var(--color-text-3); text-align:center; line-height:1.1; }
.pln-bem__drift.is-clickable { cursor:pointer; }
.pln-bem__drift.is-clickable:hover { background:var(--color-surface); }
.pln-bem__drift.is-set { background:color-mix(in srgb, var(--pln-shift-syg, #E5A11A) 20%, transparent); color:var(--pln-shift-syg, #8A6D1B); }
/* Visning-vælger + metrik-overblik-række (drifts-kalender på bemandingsplanen, 2026-06-10) */
.pln-bem-vpick { display:inline-flex; align-items:center; gap:6px; }
.pln-bem-vpick label { font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--color-text-3); }
.pln-bem-vpick__sel { font-size:.82rem; padding:5px 9px; }
.pln-bem__row--metric { background:color-mix(in srgb, var(--color-accent) 4%, var(--color-card-solid)); border-bottom:2px solid var(--color-border); }
.pln-bem__metriclbl { padding:5px 10px; font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-2); display:flex; align-items:center; }
.pln-bem__metriccell { border-left:1px solid var(--color-border); display:flex; align-items:center; justify-content:center; padding:3px 2px; min-height:24px; font-size:.62rem; font-weight:700; color:var(--color-text-1); text-align:center; line-height:1.05; overflow:hidden; }
.pln-bem__metriccell.is-neutral { color:var(--color-text-3); }
.pln-bem__metriccell.is-green { background:color-mix(in srgb, var(--color-success) 22%, transparent); }
.pln-bem__metriccell.is-yellow { background:color-mix(in srgb, var(--color-warn) 26%, transparent); }
.pln-bem__metriccell.is-red { background:color-mix(in srgb, var(--color-danger) 26%, transparent); }
.pln-bem__metriccell.is-heat1 { background:color-mix(in srgb, var(--color-warn) 12%, transparent); }
.pln-bem__metriccell.is-heat2 { background:color-mix(in srgb, var(--color-warn) 24%, transparent); }
.pln-bem__metriccell.is-heat3 { background:color-mix(in srgb, var(--color-danger) 18%, transparent); }
.pln-bem__metriccell.is-heat4 { background:color-mix(in srgb, var(--color-danger) 30%, transparent); }
.pln-bem__metriccell.is-weekend { opacity:.85; }
.pln-bem__row--total { background:color-mix(in srgb, var(--color-accent) 6%, var(--color-card-solid)); border-top:2px solid var(--color-border-strong); }
.pln-bem__totallbl { padding:6px 10px; font-size:.72rem; font-weight:800; color:var(--color-text-1); display:flex; align-items:center; }
.pln-bem__totalcell { border-left:1px solid var(--color-border); display:flex; align-items:center; justify-content:center; padding:4px 2px; min-height:26px; font-size:.84rem; font-weight:800; color:var(--color-text-1); }
.pln-bem__totalcell.is-weekend { color:var(--color-text-3); }
.pln-tilpas-radios { display:flex; flex-direction:column; gap:6px; }
.pln-tilpas-radios label { display:flex; align-items:center; gap:8px; font-size:.88rem; color:var(--color-text-2); cursor:pointer; }
.pln-tilpas-thr { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:.85rem; color:var(--color-text-2); }
.pln-tilpas-thr .pln-input { width:72px; padding:5px 8px; }
.pln-tilpas-managed { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; padding:8px 10px; margin-bottom:10px; border:1px solid var(--color-border); border-radius:8px; background:var(--color-surface); font-size:.85rem; color:var(--color-text-2); }
.pln-tilpas-managed__btns { display:inline-flex; gap:6px; flex-wrap:wrap; }
.pln-bem__row--m.is-present .pln-bem__mname { color:var(--color-text-3); }
.pln-bem-view { display:flex; flex-direction:column; gap:4px; min-width:min(380px, 82vw); }
.pln-bem-view__opt { display:flex; align-items:flex-start; gap:10px; padding:9px 10px; border-radius:9px; cursor:pointer; }
.pln-bem-view__opt:hover { background:var(--color-surface); }
.pln-bem-view__opt input { margin-top:2px; }
.pln-bem-view__txt { display:flex; flex-direction:column; gap:1px; }
.pln-bem-view__lbl { font-size:.88rem; font-weight:600; color:var(--color-text-1); }
.pln-bem-view__sub { font-size:.74rem; color:var(--color-text-3); }
.pln-bem-view__seg-wrap { display:flex; flex-direction:column; gap:3px; padding:9px 10px 4px; border-top:1px solid var(--color-border); margin-top:4px; }
.pln-bem-view__seg { display:flex; gap:4px; margin-top:6px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:9px; padding:3px; }
.pln-bem-view__segbtn { flex:1; appearance:none; border:0; background:none; font:inherit; font-size:.8rem; font-weight:600; color:var(--color-text-2); padding:7px 8px; border-radius:7px; cursor:pointer; }
.pln-bem-view__segbtn:hover { color:var(--color-text-1); }
.pln-bem-view__segbtn.is-on { background:var(--color-card-solid, var(--color-card)); color:var(--color-accent); box-shadow:var(--bh-shadow-flat-sm); }
.pln-bem-posture { display:flex; flex-direction:column; gap:8px; min-width:min(320px, 80vw); }
.pln-bem-posture__opt { appearance:none; border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-text-1); border-radius:10px; padding:11px 14px; font:inherit; font-size:.9rem; font-weight:600; cursor:pointer; text-align:left; }
.pln-bem-posture__opt:hover { background:var(--color-surface-hover); }
.pln-bem-posture__opt.is-on { border-color:var(--color-accent); background:color-mix(in srgb, var(--color-accent) 12%, transparent); }

/* ─── Bemandings-kriterie-editor (dækningsmål pr. rolle/bånd) ─────────────── */
.pln-bem-crit { display:flex; flex-direction:column; gap:18px; min-width:min(540px, 78vw); }
.pln-bem-crit__h { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); margin-bottom:8px; }
.pln-bem-crit__bands { display:flex; flex-direction:column; gap:8px; margin-bottom:8px; }
.pln-bem-crit__band { display:flex; align-items:center; gap:8px; }
.pln-bem-crit__lbl { flex:1 1 auto; min-width:90px; font-size:.85rem; padding:6px 10px; }
.pln-bem-crit__time { width:108px; flex:0 0 auto; font-size:.85rem; padding:6px 8px; }
.pln-bem-crit__dash { color:var(--color-text-3); }
.pln-bem-crit__del { appearance:none; border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-danger); border-radius:8px; width:34px; height:34px; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; line-height:0; }
.pln-bem-crit__del:hover { background:color-mix(in srgb, var(--color-danger) 12%, transparent); }
.pln-bem-crit__del .pln-ic { width:16px; height:16px; }
.pln-bem-crit__delpad { width:34px; flex:0 0 auto; }
.pln-bem-crit__tblwrap { overflow-x:auto; }
.pln-bem-crit__tbl { border-collapse:collapse; width:100%; }
.pln-bem-crit__tbl th, .pln-bem-crit__tbl td { border:1px solid var(--color-border); padding:5px 8px; text-align:center; font-size:.8rem; }
.pln-bem-crit__tbl th { background:var(--color-surface); font-weight:700; color:var(--color-text-2); }
.pln-bem-crit__tbl th:first-child { text-align:left; }
.pln-bem-crit__role { text-align:left; font-weight:600; color:var(--color-text-1); white-space:nowrap; }
.pln-bem-crit__num { width:64px; padding:5px 6px; font-size:.85rem; text-align:center; }
.pln-bem-crit__quota { display:flex; flex-wrap:wrap; gap:18px; align-items:center; font-size:.85rem; color:var(--color-text-2); }
.pln-bem-crit__quota label { display:inline-flex; align-items:center; gap:6px; }
.pln-bem-crit__type { flex:0 0 auto; min-width:46px; text-align:center; font-size:.66rem; font-weight:700; padding:3px 7px; border-radius:6px; background:var(--color-surface); border:1px solid var(--color-border); color:var(--color-text-2); text-transform:uppercase; letter-spacing:.03em; }

/* ─── Auto-vagtplan-generator (dialog + udkast) ──────────────────────────── */
.pln-bem-gen { display:flex; flex-direction:column; gap:14px; min-width:min(540px, 80vw); }
.pln-bem-gen__intro { font-size:.85rem; line-height:1.5; color:var(--color-text-2); margin:0; }
.pln-bem-gen__crit { font-size:.8rem; color:var(--color-text-2); background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; padding:8px 10px; }
.pln-linkbtn { appearance:none; border:0; background:none; color:var(--color-accent); cursor:pointer; font:inherit; font-size:.8rem; text-decoration:underline; padding:0; margin-left:6px; }
.pln-bem-gen__wd { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.pln-bem-gen__lbl { font-size:.8rem; font-weight:600; color:var(--color-text-2); }
.pln-bem-gen__days-pick { display:flex; flex-wrap:wrap; gap:6px; }
.pln-bem-gen__daypick { display:inline-flex; align-items:center; gap:4px; font-size:.8rem; padding:4px 8px; border:1px solid var(--color-border); border-radius:8px; cursor:pointer; }
.pln-bem-gen__sum { font-size:.9rem; color:var(--color-text-1); }
.pln-bem-gen__big { font-size:1.4rem; font-weight:800; color:var(--color-accent); font-variant-numeric:tabular-nums; }
.pln-bem-gen__warn { color:var(--color-danger); font-weight:600; }
.pln-bem-gen__ok { color:var(--color-success); font-weight:600; }
.pln-bem-gen__h { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); margin-bottom:6px; }
.pln-bem-gen__gaps, .pln-bem-gen__list { max-height:260px; overflow-y:auto; border:1px solid var(--color-border); border-radius:8px; }
.pln-bem-gen__gap, .pln-bem-gen__day { font-size:.78rem; padding:5px 10px; border-bottom:1px solid var(--color-border); color:var(--color-text-2); }
.pln-bem-gen__gap:last-child, .pln-bem-gen__day:last-child { border-bottom:0; }
.pln-bem-gen__gap b { color:var(--color-danger); }
.pln-bem-gen__gdate { display:inline-block; min-width:54px; font-weight:700; color:var(--color-text-1); }
.pln-bem-gen__dcounts { color:var(--color-text-2); }

/* ─── Konsekvens-preview ved fravær-godkendelse (Fase 3) + ferie-loft (Fase 4) ─── */
.pln-fravaer-card__impact:empty { display:none; }
.pln-fv-impacts { display:flex; flex-direction:column; align-items:flex-start; gap:4px; margin-top:6px; }
.pln-bem-crit__hint { font-size:.72rem; color:var(--color-text-3); }
.pln-fv-impact { display:inline-block; font-size:.72rem; font-weight:600; padding:3px 8px; border-radius:6px; line-height:1.35; }
.pln-fv-impact--warn { color:var(--color-danger); background:color-mix(in srgb, var(--color-danger) 12%, transparent); }
.pln-fv-impact--ok { color:var(--color-success); background:color-mix(in srgb, var(--color-success) 12%, transparent); }
.pln-fv-impact--neutral { color:var(--color-text-3); background:var(--color-surface); }

/* ── Modal ───────────────────────────────────────────────────── */
.pln-modal { position:fixed; inset:0; background:rgba(0,0,0,.6); backdrop-filter:blur(6px); display:flex; align-items:center; justify-content:center; z-index:1000; padding:20px; animation:pln-modal-bg .18s ease; }
.pln-modal__box { background:var(--color-card-solid); border:1px solid var(--color-border); border-radius:var(--radius-xl, 24px); max-width: min(480px, 95vw); width:100%; max-height:90vh; overflow:auto; animation:pln-modal-box .22s ease; }
.pln-modal__head { display:flex; align-items:center; justify-content:space-between; padding:var(--space-4); border-bottom:1px solid var(--color-border); }
.pln-modal__title { font-size:1rem; font-weight:600; margin:0; }
.pln-modal__close { background:transparent; border:0; color:var(--color-text-3); cursor:pointer; padding:4px 8px; font-size:1.2rem; border-radius:var(--radius-md, 14px); }
.pln-modal__close:hover { background:var(--color-surface); color:var(--color-text-1); }
.pln-modal__body { padding:var(--space-4); }
.pln-modal__foot { padding:var(--space-3) var(--space-4); border-top:1px solid var(--color-border); display:flex; gap:var(--space-2); justify-content:flex-end; }
@keyframes pln-modal-bg { from { opacity:0; } to { opacity:1; } }
@keyframes pln-modal-box { from { opacity:0; transform:translateY(8px) scale(.98); } to { opacity:1; transform:none; } }

/* ── Form-felter (polished: focus-ring + helper + fejl-state) ── */
.pln-field { display:flex; flex-direction:column; gap:6px; margin-bottom:var(--space-3); }
.pln-field__label { font-size:.8rem; color:var(--color-text-2); font-weight:500; }
.pln-field__required { color: var(--color-danger); margin-left: 2px; font-weight: 700; }
.pln-field__input, .pln-field__select, .pln-field__textarea {
    background: var(--color-surface);
    color: var(--color-text-1);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    padding: 9px 12px;
    font-size: .9rem;
    font-family: inherit;
    transition: border-color .12s, box-shadow .12s, background .12s;
}
.pln-field__input:focus,
.pln-field__select:focus,
.pln-field__textarea:focus {
    outline: none;
    border-color: var(--color-accent);
    background: var(--color-bg);
}
.pln-field__helper { font-size: .72rem; color: var(--color-text-3); margin-top: 2px; line-height: 1.4; }
.pln-field__error {
    font-size: .74rem; color: var(--color-danger);
    margin-top: 2px; display: inline-flex; align-items: center; gap: 4px;
}
.pln-field__error .pln-ic { width: 13px; height: 13px; }
/* 2026-06-17 vagt-modal redesign — status-pill, live varighed, dæmpet write-back-linje.
   Token-baseret (theme-flip-sikker), genbruger legendens prik-sprog. INGEN hardkodede farver. */
.pln-status-row { display:flex; align-items:center; gap:8px; margin-bottom:16px; }
.pln-status-row__lbl { font-size:.78rem; color:var(--color-text-3); font-weight:500; }
.pln-status-pill { display:inline-flex; align-items:center; gap:6px; font-size:.74rem; font-weight:600; padding:3px 11px; border-radius:999px; background:var(--color-surface); color:var(--color-text-1); border:1px solid var(--color-border); }
.pln-status-pill__dot { width:8px; height:8px; border-radius:50%; background:var(--color-text-3); flex:0 0 auto; }
.pln-status-pill--approved .pln-status-pill__dot { background:var(--color-success, #2f9e63); }
.pln-status-pill--assigned .pln-status-pill__dot { background:var(--color-warn, #E5A11A); }
.pln-status-pill--open .pln-status-pill__dot { background:var(--color-accent); }
.pln-status-pill--draft .pln-status-pill__dot { background:var(--color-text-3); }
/* 2026-06-17: interaktiv status-vælger i vagt-modal (Åben/Tildelt/Godkendt). Godkend=envejs (Planday). */
.pln-status-seg { display:inline-flex; border:1px solid var(--color-border); border-radius:8px; overflow:hidden; }
.pln-status-seg__btn { appearance:none; -webkit-appearance:none; background:var(--color-surface); border:0; border-left:1px solid var(--color-border); padding:5px 13px; font-size:.74rem; font-weight:600; color:var(--color-text-2); cursor:pointer; font-family:inherit; line-height:1.4; transition:background .12s, color .12s; }
.pln-status-seg__btn:first-child { border-left:0; }
.pln-status-seg__btn:not([disabled]):not(.is-active):hover { color:var(--color-text-1); }
.pln-status-seg__btn.is-active { color:var(--color-text-1); }
.pln-status-seg__btn--open.is-active { background:var(--color-info-bg); color:var(--color-info); }
.pln-status-seg__btn--assigned.is-active { background:var(--color-warn-bg); color:var(--color-warn); }
.pln-status-seg__btn--approved.is-active { background:var(--color-success-bg); color:var(--color-success); }
.pln-status-seg__btn[disabled] { cursor:not-allowed; opacity:.5; }
.pln-status-seg__btn.is-active[disabled] { opacity:1; cursor:default; }
.pln-status-note { font-size:.74rem; color:var(--color-text-3); margin:8px 0 16px; line-height:1.45; }
.pln-field__dur { float:right; font-weight:600; font-size:.78rem; color:var(--color-text-3); font-variant-numeric:tabular-nums; }
.pln-wb-line { display:flex; align-items:center; gap:8px; font-size:.78rem; color:var(--color-text-2); margin-top:14px; padding-top:12px; border-top:1px solid var(--color-border); }
.pln-wb-line__dot { width:8px; height:8px; border-radius:50%; background:var(--color-success, #2f9e63); flex:0 0 auto; }
.pln-wb-line--off .pln-wb-line__dot { background:var(--color-warn, #E5A11A); }
/* Fejl-state - sættes på .pln-field-wrapperen */
.pln-field--error .pln-field__input,
.pln-field--error .pln-field__select,
.pln-field--error .pln-field__textarea { border-color: var(--color-danger); }
.pln-field--error .pln-field__input:focus,
.pln-field--error .pln-field__select:focus,
.pln-field--error .pln-field__textarea:focus {
    border-color: var(--color-accent);
}
.pln-field__row { display:grid; gap:var(--space-3); grid-template-columns:1fr 1fr; }

/* ── Status-badges ───────────────────────────────────────────── */
.pln-badge { display:inline-block; padding:3px 9px; border-radius:999px; font-size:.7rem; font-weight:600; letter-spacing:.02em; }
.pln-badge--pending { background:var(--color-warn-bg); color:var(--color-warn); }
.pln-badge--approved, .pln-badge--accepted { background:var(--color-success-bg); color:var(--color-success); }
.pln-badge--rejected, .pln-badge--declined { background:var(--color-danger-bg); color:var(--color-danger); }
.pln-badge--open { background:var(--color-info-bg); color:var(--color-info); }

/* ── Tab-strip ───────────────────────────────────────────────── */
/* 2026-07-10 komponent-konsolidering: fravaer-subtabs (#fravaer-subtabs i manager.html)
   ensrettet til SAMME pille-udtryk som Budget-fanens .bdg-tab (seg-pille, aktiv = solid
   pille m. skygge) i stedet for accent-underline. Kun CSS - markup uaendret.
   --bh-*-tokens kommer fra rude-skin.css (live-skin); fallbacks daekker skin-loes drift. */
.pln-tabs { display:flex; gap:2px; border-bottom:1px solid var(--bh-hair, var(--color-border)); margin-bottom:var(--space-4); overflow-x:auto; -webkit-overflow-scrolling:touch; }
.pln-tabs__btn { display:inline-flex; align-items:center; gap:7px; background:transparent; border:0; margin:6px 1px; padding:12px 16px; color:var(--color-text-3); font-size:.86rem; font-weight:600; cursor:pointer; border-radius:var(--bh-r-pill, 999px); white-space:nowrap; font-family:inherit; transition:color .12s, background .12s; }
.pln-tabs__btn:hover { color:var(--color-text-1); background:color-mix(in srgb, var(--color-text-1) 4%, transparent); }
.pln-tabs__btn--active { color:var(--bh-ink, var(--color-text-1)); background:var(--bh-card-glass, var(--color-surface)); box-shadow:var(--bh-spec, 0 0 0 1px var(--color-border)), var(--bh-shadow-flat, 0 2px 6px rgba(0,0,0,.08)); }

/* ── Lille spinner inline ────────────────────────────────────── */
.pln-spin { display:inline-block; width:14px; height:14px; border:2px solid var(--color-border-strong); border-top-color:var(--color-accent); border-radius:50%; animation:pln-spin 0.7s linear infinite; vertical-align:middle; }
@keyframes pln-spin { to { transform:rotate(360deg); } }

/* ── Egne ikoner (SVG inline) - udvider efter behov ──────────── */
.pln-ic { display:inline-block; width:1em; height:1em; vertical-align:-0.125em; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

/* ── Availability-grid (phoner.html) ─────────────────────────── */
.pln-availability-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:12px; padding:16px 0 4px; }
.pln-save-status {
    display:inline-flex; align-items:center; gap:6px;
    padding:4px 10px;
    border-radius:999px;
    font-size:.74rem; font-weight:600;
    background:transparent;
    color:var(--color-text-3);
    transition: background .15s, color .15s;
    min-height:24px;
}
.pln-save-status:empty { visibility:hidden; }
.pln-save-status::before {
    content:''; display:inline-block; width:7px; height:7px; border-radius:50%; background:currentColor; opacity:.6;
}
.pln-save-status--dirty { background:var(--color-warn-bg); color:var(--color-warn); }
.pln-save-status--saving { background:var(--color-surface); color:var(--color-text-2); }
.pln-save-status--saving::before { animation: pln-save-pulse 1s ease-in-out infinite; }
.pln-save-status--saved { background:var(--color-success-bg); color:var(--color-success); }
.pln-save-status--error { background:var(--color-danger-bg); color:var(--color-danger); }
@keyframes pln-save-pulse { 0%,100% { opacity:.4; } 50% { opacity:1; } }
.pln-availability-day { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px); padding:12px; display:flex; flex-direction:column; gap:10px; }
.pln-availability-day__label { font-weight:600; font-size:.85rem; color:var(--color-text-1); }
.pln-availability-day__options { display:flex; flex-direction:column; gap:4px; }
.pln-availability-opt { padding:7px 10px; border-radius:var(--radius-md, 14px); border:1px solid var(--color-border); background:transparent; color:var(--color-text-2); cursor:pointer; font-size:.8rem; font-family:inherit; text-align:left; transition:all .15s ease; }
.pln-availability-opt:hover { background:var(--color-surface-2); color:var(--color-text-1); }
.pln-availability-opt--active { background:var(--color-accent); color:var(--color-on-accent, #063d22); border-color:var(--color-accent); }
.pln-availability-opt--preferred.pln-availability-opt--active { background:var(--color-success); border-color:var(--color-success); }
.pln-availability-opt--unavailable.pln-availability-opt--active { background:var(--color-danger); border-color:var(--color-danger); }

/* ── Analyse-tab (heatmap, gaps, vacation, fatigue) ──────────── */
.pln-analyse-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(360px, 1fr)); gap:14px; padding:0; }
.pln-analyse-grid .pln-card { margin:0; }
.pln-analyse-hint { font-size:.74rem; color:var(--color-text-3); line-height:1.4; max-width:48ch; }
.pln-analyse-briefing-card { margin-bottom:14px; }
.pln-heatmap__goal-info { margin-left:auto; padding:2px 8px; border-radius:var(--radius-md, 14px); background:var(--color-surface); color:var(--color-text-2); font-weight:600; font-size:.7rem; letter-spacing:.02em; }
.pln-heatmap { display:flex; flex-direction:column; gap:4px; padding:12px; overflow-x:auto; }
.pln-heatmap__row { display:grid; grid-template-columns:50px repeat(32, 1fr); gap:1px; min-width:600px; }
.pln-heatmap__row--header { font-size:.65rem; color:var(--color-text-3); }
.pln-heatmap__day-label { font-weight:600; font-size:.75rem; color:var(--color-text-2); padding:4px 0; display:flex; align-items:center; }
.pln-heatmap__cell { height:24px; border-radius:var(--radius-sm, 10px); background:var(--color-surface); }
.pln-heatmap__cell--c0 { background:var(--color-surface); }
.pln-heatmap__cell--c1 { background:var(--bh-danger, #E0392B); } /* under goal - danger */
.pln-heatmap__cell--c2 { background:var(--bh-pop, #FF6A1A); } /* nær goal - tangerine */
.pln-heatmap__cell--c3 { background:var(--bh-green, #1F9E5A); } /* på/over goal - success */
.pln-heatmap__cell--c4 { background:var(--bh-ink, #14110D); } /* godt over goal - blæk (flipper med tema via --bh-ink) */
.pln-heatmap__time-label { font-size:.55rem; color:var(--color-text-3); text-align:center; transform:rotate(-45deg) translateY(8px); transform-origin:center; }
.pln-heatmap__legend { display:flex; gap:10px; padding:8px 12px; font-size:.7rem; color:var(--color-text-3); flex-wrap:wrap; }
.pln-heatmap__legend-item { display:inline-flex; align-items:center; gap:4px; }
.pln-heatmap__legend-swatch { width:14px; height:14px; border-radius:var(--radius-sm, 10px); display:inline-block; }

.pln-gap-list { display:flex; flex-direction:column; gap:6px; padding:12px; }
.pln-gap-row { display:flex; align-items:center; gap:10px; padding:8px 10px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-md, 14px); font-size:.83rem; }
.pln-gap-row__day { font-weight:600; min-width:40px; }
.pln-gap-row__time { color:var(--color-text-2); }
.pln-gap-row__deficit { margin-left:auto; padding:2px 8px; border-radius:999px; background:var(--color-danger-bg); color:var(--color-danger); font-weight:600; font-size:.75rem; }

.pln-vacation-table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:var(--radius-lg, 18px); border:1px solid var(--color-border); background:var(--color-card-solid); }
.pln-vacation-table { width:100%; border-collapse:collapse; font-size:.85rem; }
.pln-vacation-table th, .pln-vacation-table td { padding:10px 14px; text-align:left; border-bottom:1px solid var(--color-border); }
.pln-vacation-table thead th { font-weight:700; color:var(--color-text-3); font-size:.66rem; text-transform:uppercase; letter-spacing:.07em; background:var(--color-surface); position:sticky; top:0; z-index:1; }
.pln-vacation-table td.num, .pln-vacation-table th.num { text-align:right; font-variant-numeric:tabular-nums; }
.pln-vacation-table tbody tr { transition: background .12s; }
.pln-vacation-table tbody tr:hover { background:var(--color-surface); }
.pln-vacation-table tbody tr:last-child td { border-bottom:0; }
.pln-vacation-table__total-row { background: color-mix(in srgb, var(--color-accent) 5%, var(--color-card-solid)); }
.pln-vacation-table__total-row td { font-weight:700; color:var(--color-text-1); }
.pln-vacation-table tbody tr:hover.pln-vacation-table__total-row { background: color-mix(in srgb, var(--color-accent) 9%, var(--color-card-solid)); }

/* ── Fravær-tidslinje (måneder × medarbejdere) ──────────────────
   2026-06-08: Gantt-agtig oversigt — fraværsperioder som bjælker placeret
   efter dato hen over året. Alle farver via design-tokens (RUDE-sikkert). */
.pln-tl {
    --tl-name-w: 210px;
    border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px);
    background:var(--color-card-solid); overflow:auto; max-height:72vh;
}
.pln-tl__head, .pln-tl__row { display:grid; grid-template-columns:var(--tl-name-w) 1fr; }
.pln-tl__head { position:sticky; top:0; z-index:3; background:var(--color-surface); border-bottom:1px solid var(--color-border); }
.pln-tl__corner { display:flex; align-items:center; gap:7px; padding:9px 12px; font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--color-text-3); position:sticky; left:0; background:var(--color-surface); z-index:1; }
.pln-tl__corner__n { font-size:.62rem; background:var(--color-card-solid); border:1px solid var(--color-border); border-radius:999px; padding:1px 7px; }
.pln-tl__months { display:grid; grid-template-columns:repeat(12, 1fr); }
.pln-tl__month { padding:9px 4px; font-size:.6rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); text-align:center; border-left:1px solid var(--color-border); }
.pln-tl__body { /* rows */ }
.pln-tl__row { border-bottom:1px solid var(--color-border); min-height:42px; }
.pln-tl__row:last-child { border-bottom:0; }
.pln-tl__row:hover { background:var(--color-surface); }
.pln-tl__name { position:sticky; left:0; z-index:1; background:var(--color-card-solid); padding:6px 12px; display:flex; flex-direction:column; gap:3px; justify-content:center; border-right:1px solid var(--color-border); }
.pln-tl__row:hover .pln-tl__name { background:var(--color-surface); }
.pln-tl__nametxt { font-size:.8rem; font-weight:600; color:var(--color-text-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pln-tl__bal { display:flex; flex-direction:column; gap:2px; }
.pln-tl__balbar { height:4px; border-radius:999px; background:var(--color-border); overflow:hidden; }
.pln-tl__balbar > span { display:block; height:100%; background:var(--color-accent); border-radius:999px; }
.pln-tl__baltxt { font-size:.62rem; font-weight:600; color:var(--color-text-3); white-space:nowrap; }
.pln-tl__baltxt.is-low { color:var(--color-warn, #E5A11A); }
.pln-tl__track {
    position:relative; min-height:42px;
    /* To lag: (1) måneds-gridlines, (2) subtil zebra på hver anden måned (period 2/12)
       så man kan aflæse "hvilken måned" på lange tracks uden at scrolle op til headeren. */
    background:
        repeating-linear-gradient(to right, transparent, transparent calc(100%/12 - 1px), var(--color-border) calc(100%/12 - 1px), var(--color-border) calc(100%/12)),
        repeating-linear-gradient(to right, color-mix(in srgb, var(--color-text-1) 2%, transparent) 0, color-mix(in srgb, var(--color-text-1) 2%, transparent) calc(100%/12), transparent calc(100%/12), transparent calc(2 * 100%/12));
}
.pln-tl__today { position:absolute; top:0; bottom:0; width:2px; background:var(--color-accent); opacity:.8; z-index:2; }
.pln-tl__bar {
    position:absolute; top:7px; bottom:7px; min-width:6px;
    border-radius:5px; box-shadow:0 1px 2px rgba(0,0,0,.18); cursor:default;
    background:var(--pln-shift-ferie, #1F9E5A);
    display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.pln-tl__bar__lbl { font-size:.58rem; font-weight:800; color:#fff; line-height:1; white-space:nowrap; pointer-events:none; text-shadow:0 1px 1px rgba(0,0,0,.35); letter-spacing:-.02em; } /* label på fler-farvede fravær-bjælker (ferie/syg/læge/andet) — hvid m. text-shadow er tema-stabil, ej accent-fyld */
.pln-tl__bar--ferie { background:var(--pln-shift-ferie, #1F9E5A); }
.pln-tl__bar--syg   { background:var(--pln-shift-syg, #E5A11A); }
.pln-tl__bar--laege { background:var(--pln-shift-laege); }
.pln-tl__bar--andet { background:var(--pln-shift-nat, #7C5CFF); }
.pln-tl__legend { display:flex; flex-wrap:wrap; gap:14px; padding:9px 12px; border-top:1px solid var(--color-border); position:sticky; left:0; }
/* Fraværstype-filter-chips (klikbar forklaring over varmekortet) */
.pln-bem__legchips { display:inline-flex; flex-wrap:wrap; align-items:center; gap:6px; }
.pln-bem__legchip { appearance:none; cursor:pointer; font:inherit; font-size:.7rem; font-weight:600; color:var(--color-text-2); background:var(--color-card-solid, var(--color-card)); border:1px solid var(--color-border); border-radius:999px; padding:4px 10px; display:inline-flex; align-items:center; gap:6px; line-height:1; transition:opacity .12s, border-color .12s; }
.pln-bem__legchip:hover { border-color:var(--color-text-3); }
.pln-bem__legchip.is-off { opacity:.42; text-decoration:line-through; }
.pln-bem__legchip--master { font-weight:700; }
.pln-bem__legchip--master.is-off { text-decoration:none; opacity:.55; }
.pln-bem__legchip .pln-ic { width:13px; height:13px; }
.pln-bem__hint-honest { font-size:.72rem; color:var(--color-text-3); margin:6px 0 0; padding-left:2px; }
/* Supervisor-lokations-tildeling (admin-modal) */
.pln-suploc { display:flex; flex-direction:column; gap:10px; min-width:min(520px, 84vw); }
.pln-suploc__list { display:flex; flex-direction:column; gap:8px; max-height:60vh; overflow-y:auto; }
.pln-suploc__row { display:flex; flex-direction:column; gap:7px; padding:10px 12px; border:1px solid var(--color-border); border-radius:10px; background:var(--color-surface); }
.pln-suploc__who { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.pln-suploc__name { font-size:.9rem; font-weight:600; color:var(--color-text-1); }
.pln-suploc__own { font-size:.72rem; color:var(--color-text-3); }
.pln-suploc__own--none { color:var(--color-danger); }
.pln-suploc__chips { display:flex; flex-wrap:wrap; gap:6px; }
.pln-suploc__chip { display:inline-flex; align-items:center; gap:5px; font-size:.78rem; padding:4px 9px; border:1px solid var(--color-border); border-radius:999px; cursor:pointer; color:var(--color-text-2); }
.pln-suploc__chip:hover { border-color:var(--color-text-3); }
.pln-suploc__chip.is-on { border-color:var(--color-accent); color:var(--color-accent); background:var(--color-accent-soft); }
.pln-suploc__hint { font-size:.72rem; color:var(--color-text-3); font-style:italic; }
.pln-tl__lg { font-size:.68rem; font-weight:600; color:var(--color-text-2); display:inline-flex; align-items:center; gap:6px; }
.pln-tl__lg::before { content:""; width:11px; height:11px; border-radius:3px; background:var(--color-text-3); }
.pln-tl__lg--ferie::before { background:var(--pln-shift-ferie, #1F9E5A); }
.pln-tl__lg--syg::before   { background:var(--pln-shift-syg, #E5A11A); }
.pln-tl__lg--laege::before { background:var(--pln-shift-laege); }
.pln-tl__lg--andet::before { background:var(--pln-shift-nat, #7C5CFF); }
.pln-tl__lg--today::before { background:var(--color-accent); width:3px; border-radius:0; }
/* Overbliks-strip over tidslinjen */
.pln-tl__summary { display:flex; flex-wrap:wrap; gap:10px 22px; align-items:center; padding:12px 14px; margin-bottom:10px; background:var(--color-card-solid); border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px); }
.pln-tl__sum { font-size:.8rem; color:var(--color-text-2); }
.pln-tl__sum b { font-size:1.05rem; color:var(--color-text-1); font-weight:700; margin-right:3px; font-variant-numeric:tabular-nums; }
.pln-tl__sum--loc { margin-left:auto; font-weight:600; color:var(--color-text-1); background:var(--color-surface); border:1px solid var(--color-border); border-radius:999px; padding:3px 12px; }
/* Zebra for lettere at følge en række hen over året */
.pln-tl__row:nth-child(even) .pln-tl__track { background-color: color-mix(in srgb, var(--color-text-1) 2.5%, transparent); }
/* Klikbar bjælke (åbner person-detalje) */
.pln-tl__bar[role="button"] { cursor:pointer; }
.pln-tl__bar[role="button"]:hover { filter:brightness(1.08); outline:2px solid var(--color-bg); outline-offset:-1px; }
.pln-tl__bar[role="button"]:focus-visible { outline:2px solid var(--color-accent); outline-offset:1px; }

/* ── Fravær: Måned/År-toggle ─────────────────────────────────────── */
.pln-fv-toolbar { display:flex; align-items:center; margin-bottom:10px; }
.pln-fv-toggle { display:inline-flex; background:var(--color-surface); border:1px solid var(--color-border); border-radius:999px; padding:2px; gap:2px; }
.pln-fv-toggle__btn { appearance:none; border:0; background:transparent; color:var(--color-text-2); font:inherit; font-size:.78rem; font-weight:600; padding:5px 16px; border-radius:999px; cursor:pointer; transition:background .12s, color .12s; }
.pln-fv-toggle__btn.is-on { background:var(--color-accent); color:var(--color-on-accent, #fff); }
.pln-fv-toggle__btn:not(.is-on):hover { color:var(--color-text-1); }

/* ── Fravær: måneds-kalender (uge-grid) ──────────────────────────── */
.pln-cal { border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px); background:var(--color-card-solid); overflow:hidden; container-type:inline-size; }
.pln-cal__nav { display:flex; align-items:center; gap:12px; padding:12px 14px; border-bottom:1px solid var(--color-border); }
.pln-cal__navbtn { appearance:none; border:1px solid var(--color-border-strong); background:var(--color-surface); color:var(--color-text-1); border-radius:8px; width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; line-height:0; }
.pln-cal__navbtn:hover:not([disabled]) { background:var(--color-surface-hover); }
.pln-cal__navbtn[disabled] { opacity:.4; cursor:not-allowed; }
.pln-cal__navbtn .pln-ic { width:16px; height:16px; }
.pln-cal__title { font-size:1.05rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; min-width:140px; }
.pln-cal__sum { margin-left:auto; font-size:.74rem; font-weight:600; color:var(--color-text-3); }
.pln-cal__grid { display:grid; grid-template-columns:repeat(7, 1fr); gap:1px; background:var(--color-border); }
.pln-cal__wd { background:var(--color-surface); padding:7px 8px; font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--color-text-3); text-align:left; }
.pln-cal__wd.is-weekend { color:color-mix(in srgb, var(--color-text-3) 70%, transparent); }
.pln-cal__cell { background:var(--color-card-solid); min-height:96px; padding:6px 7px; display:flex; flex-direction:column; gap:3px; position:relative; }
.pln-cal__cell--blank { background:color-mix(in srgb, var(--color-text-1) 2%, var(--color-card-solid)); }
.pln-cal__cell.is-weekend { background:color-mix(in srgb, var(--color-text-1) 2.5%, var(--color-card-solid)); }
.pln-cal__cell.has-abs { cursor:pointer; }
.pln-cal__cell.has-abs:hover { background:var(--color-surface-hover); }
.pln-cal__cell.is-today { box-shadow:inset 0 0 0 2px var(--color-accent); }
.pln-cal__cell:focus-visible { outline:2px solid var(--color-accent); outline-offset:-2px; }
.pln-cal__dom { font-size:.78rem; font-weight:700; color:var(--color-text-2); }
.pln-cal__cell.is-today .pln-cal__dom { color:var(--accent-ink, var(--color-accent)); }
.pln-cal__count { position:absolute; top:6px; right:7px; font-size:.6rem; font-weight:800; color:var(--color-text-3); background:var(--color-surface); border-radius:999px; padding:0 6px; }
.pln-cal__names { display:flex; flex-direction:column; gap:2px; margin-top:1px; min-width:0; }
.pln-cal__chip { font-size:.62rem; font-weight:700; padding:2px 6px; border-radius:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--color-text-1); background:var(--color-surface); border-left:3px solid var(--color-info); }
.pln-cal__chip.pln-shift--ferie { background:var(--pln-shift-ferie-bg); border-left-color:var(--pln-shift-ferie); }
.pln-cal__chip.pln-shift--syg   { background:var(--pln-shift-syg-bg); border-left-color:var(--pln-shift-syg); }
.pln-cal__chip.pln-shift--laege { border-left-color:var(--pln-shift-laege); }
.pln-cal__chip.pln-shift--andet { border-left-color:var(--pln-shift-nat, #7C5CFF); }
.pln-cal__more { font-size:.6rem; font-weight:600; color:var(--color-text-3); }
@container (max-width: 560px) { .pln-cal__cell { min-height:64px; } .pln-cal__names { display:none; } }

/* ── Fravær: person-detalje-modal (klik på bjælke) ───────────────── */
.pln-pd__bal { margin-bottom:14px; }
.pln-pd__balbar { height:8px; border-radius:999px; background:var(--color-border); overflow:hidden; }
.pln-pd__balbar > span { display:block; height:100%; background:var(--color-accent); border-radius:999px; }
.pln-pd__baltxt { font-size:.82rem; color:var(--color-text-2); margin-top:6px; }
.pln-pd__sums { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.pln-pd__list { display:flex; flex-direction:column; gap:1px; }
.pln-pd__row { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; }
.pln-pd__row:nth-child(odd) { background:var(--color-surface); }
.pln-pd__row.is-clicked { background:var(--color-accent-soft, color-mix(in srgb, var(--color-accent) 12%, transparent)); box-shadow:inset 0 0 0 1px var(--color-accent); }
.pln-pd__range { font-weight:600; color:var(--color-text-1); font-size:.84rem; }
.pln-pd__days { color:var(--color-text-2); font-size:.8rem; }
.pln-pd__src { margin-left:auto; color:var(--color-text-3); font-size:.72rem; text-align:right; }
.pln-cal-day-list { display:flex; flex-direction:column; gap:4px; }
.pln-cal-day-row { display:flex; align-items:center; gap:10px; padding:6px 8px; border-radius:7px; }
.pln-cal-day-row:nth-child(odd) { background:var(--color-surface); }
.pln-cal-day-row__nm { font-size:.86rem; color:var(--color-text-1); }

/* ── Fravær: pending-request kort (Til godkendelse) ─────────────── */
.pln-fravaer-list { display:flex; flex-direction:column; gap:10px; container-type:inline-size; }
.pln-fravaer-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-warn);
    border-radius: 12px;
    padding: 14px 16px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 12px 16px;
    align-items: start;
    transition: background .12s, transform .14s, box-shadow .14s, border-left-width .14s;
}
.pln-fravaer-card:hover { background:var(--color-surface-hover); transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,.14); border-left-width:4px; padding-left:15px; }
.pln-fravaer-card--ferie  { border-left-color: var(--color-info); }
.pln-fravaer-card--syg    { border-left-color: var(--color-warn); }
.pln-fravaer-card--laege  { border-left-color: var(--pln-shift-aften, #FF6A1A); }
.pln-fravaer-card--fri    { border-left-color: var(--color-text-3); }
.pln-fravaer-card--andet  { border-left-color: var(--color-text-3); }
.pln-fravaer-card__main { min-width:0; }
.pln-fravaer-card__head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-weight:600; color:var(--color-text-1); font-size:.95rem; line-height:1.2; }
.pln-fravaer-card__dates { display:inline-flex; align-items:center; gap:6px; margin-top:6px; color:var(--color-text-3); font-size:.82rem; font-variant-numeric:tabular-nums; }
.pln-fravaer-card__dates .pln-ic { width:14px; height:14px; opacity:.7; }
.pln-fravaer-card__reason { margin-top:8px; padding:8px 10px; background:var(--color-card-solid); border-left:2px solid var(--color-border); border-radius:0 var(--radius-sm, 10px) var(--radius-sm, 10px) 0; color:var(--color-text-2); font-size:.83rem; line-height:1.45; }
.pln-fravaer-card__actions { display:flex; gap:6px; align-self:center; flex-shrink:0; }
@container (max-width: 480px) {
    .pln-fravaer-card { grid-template-columns: 1fr; }
    .pln-fravaer-card__actions { justify-content:flex-end; }
}

/* ── Bytte: swap-request kort ─────────────────────────────────── */
.pln-bytte-list { display:flex; flex-direction:column; gap:10px; container-type:inline-size; }
.pln-bytte-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--pln-shift-aften, #FF6A1A);
    border-radius: 12px;
    padding: 14px 16px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 12px 16px;
    align-items: start;
    transition: background .12s, transform .14s, box-shadow .14s, border-left-width .14s;
}
.pln-bytte-card:hover { background:var(--color-surface-hover); transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,.14); border-left-width:4px; padding-left:15px; }
.pln-bytte-card__main { min-width:0; }
.pln-bytte-card__exchange {
    display:flex; align-items:center; gap:8px; flex-wrap:wrap;
    font-weight:600; color:var(--color-text-1); font-size:.92rem; line-height:1.25;
}
.pln-bytte-card__email { display:inline-block; max-width:240px; overflow:hidden; text-overflow:ellipsis; vertical-align:bottom; white-space:nowrap; }
.pln-bytte-card__arrow {
    display:inline-flex; align-items:center; justify-content:center;
    width:22px; height:22px; border-radius:50%;
    background: color-mix(in srgb, var(--pln-shift-aften, #FF6A1A) 14%, var(--color-card-solid));
    color: var(--pln-shift-aften, #FF6A1A);
    flex-shrink:0;
}
.pln-bytte-card__arrow .pln-ic { width:13px; height:13px; stroke-width:2.4; }
.pln-bytte-card__shift {
    display:inline-flex; align-items:center; gap:6px;
    margin-top:8px;
    padding:4px 10px;
    background: var(--color-card-solid);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md, 14px);
    color: var(--color-text-2);
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
}
.pln-bytte-card__shift .pln-ic { width:13px; height:13px; opacity:.75; }
.pln-bytte-card__message {
    margin-top:8px; padding:8px 10px;
    background:var(--color-card-solid);
    border-left:2px solid var(--color-border);
    border-radius:0 var(--radius-sm, 10px) var(--radius-sm, 10px) 0;
    color:var(--color-text-2);
    font-size:.83rem; line-height:1.45;
}
.pln-bytte-card__message::before { content:'\201C'; margin-right:2px; opacity:.55; }
.pln-bytte-card__message::after { content:'\201D'; margin-left:2px; opacity:.55; }
.pln-bytte-card__actions { display:flex; gap:6px; align-self:center; flex-shrink:0; }
@container (max-width: 480px) {
    .pln-bytte-card { grid-template-columns: 1fr; }
    .pln-bytte-card__actions { justify-content:flex-end; }
    .pln-bytte-card__email { max-width:140px; }
}

/* ── Åbne vagter: kort-grid ──────────────────────────────────── */
.pln-open-shift-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); }
.pln-open-shift-card {
    position: relative;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-accent);
    border-radius: 12px;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: background .12s, transform .14s, box-shadow .14s, border-left-width .14s;
}
.pln-open-shift-card:hover { background:var(--color-surface-hover); transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,.14); border-left-width:4px; padding-left:15px; }
.pln-open-shift-card--claimed { opacity:.78; }
.pln-open-shift-card--claimed:hover { transform:none; box-shadow:none; }
.pln-open-shift-card.pln-shift--dag   { border-left-color: var(--color-accent); }
.pln-open-shift-card.pln-shift--aften { border-left-color: var(--pln-shift-aften); }
.pln-open-shift-card.pln-shift--nat   { border-left-color: var(--pln-shift-nat); }
.pln-open-shift-card__head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.pln-open-shift-card__time { font-size:1rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; line-height:1.1; font-variant-numeric:tabular-nums; }
.pln-open-shift-card__date { font-size:.75rem; color:var(--color-text-3); margin-top:2px; font-variant-numeric:tabular-nums; }
.pln-open-shift-card__del {
    background:transparent; border:0; cursor:pointer;
    padding:5px; border-radius:var(--radius-md, 14px);
    color:var(--color-text-3);
    display:inline-flex; align-items:center;
    transition: background .12s, color .12s;
}
.pln-open-shift-card__del:hover { background:var(--color-danger-bg); color:var(--color-danger); }
.pln-open-shift-card__del .pln-ic { width:15px; height:15px; }
.pln-open-shift-card__dept { font-size:.7rem; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.05em; line-height:1.2; }
.pln-open-shift-card__status { margin-top:auto; padding-top:4px; }
.pln-open-shift-card__claimed-by {
    display:inline-flex; align-items:center; gap:6px;
    font-size:.78rem; color:var(--color-text-2);
}
.pln-open-shift-card__claimed-by strong { color:var(--color-success); font-weight:600; }
.pln-open-shift-card__note { font-size:.78rem; color:var(--color-text-2); line-height:1.4; font-style:italic; }

/* ── Phoner Åbne vagter: claim-grid + take-knap ──────────────── */
.pln-claim-card {
    position: relative;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-accent);
    border-radius: 12px;
    padding: 14px 16px;
    display: flex; flex-direction: column; gap: 8px;
    transition: background .12s, transform .14s, box-shadow .14s, border-left-width .14s;
}
.pln-claim-card:hover { background:var(--color-surface-hover); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,0,0,.16); border-left-width:4px; padding-left:15px; }
.pln-claim-card.pln-shift--dag   { border-left-color: var(--color-accent); }
.pln-claim-card.pln-shift--aften { border-left-color: var(--pln-shift-aften); }
.pln-claim-card.pln-shift--nat   { border-left-color: var(--pln-shift-nat); }
.pln-claim-card__time { font-size:1.02rem; font-weight:700; color:var(--color-text-1); letter-spacing:-.01em; line-height:1.1; font-variant-numeric:tabular-nums; }
.pln-claim-card__date { font-size:.78rem; color:var(--color-text-3); margin-top:1px; font-variant-numeric:tabular-nums; }
.pln-claim-card__dept { font-size:.7rem; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.05em; }
.pln-claim-card__note { font-size:.78rem; color:var(--color-text-2); line-height:1.4; font-style:italic; }
.pln-claim-card__action { margin-top:4px; }
.pln-claim-card__action .pln-btn { width:100%; }

/* ── Phoner: mine byt-anmodninger ──────────────────────────────── */
.pln-my-swap-list { display:flex; flex-direction:column; gap:8px; }
.pln-my-swap {
    display:grid;
    grid-template-columns: 1fr auto;
    gap: 12px;
    align-items: center;
    padding: 12px 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--pln-shift-aften, #FF6A1A);
    border-radius: var(--radius-lg, 18px);
    transition: background .12s;
    container-type: inline-size;
}
.pln-my-swap:hover { background:var(--color-surface-hover); }
.pln-my-swap__main { min-width:0; }
.pln-my-swap__direction {
    display:inline-flex; align-items:center; gap:6px;
    font-weight:600; font-size:.88rem; color:var(--color-text-1); line-height:1.25;
}
.pln-my-swap__direction-tag {
    display:inline-block; font-size:.6rem; font-weight:700;
    letter-spacing:.07em; text-transform:uppercase;
    padding:2px 7px; border-radius:999px;
    background: color-mix(in srgb, var(--pln-shift-aften, #FF6A1A) 14%, var(--color-card-solid));
    color: var(--pln-shift-aften, #FF6A1A);
}
.pln-my-swap__email { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pln-my-swap__shift {
    display:inline-flex; align-items:center; gap:6px;
    margin-top:6px;
    color:var(--color-text-3); font-size:.8rem;
    font-variant-numeric:tabular-nums;
}
.pln-my-swap__message {
    margin-top:6px; padding:6px 9px;
    background:var(--color-card-solid);
    border-left:2px solid var(--color-border);
    border-radius:0 var(--radius-sm, 10px) var(--radius-sm, 10px) 0;
    color:var(--color-text-2); font-size:.78rem; line-height:1.4;
}
.pln-my-swap__message::before { content:'\201C'; opacity:.55; }
.pln-my-swap__message::after { content:'\201D'; opacity:.55; }
.pln-my-swap__actions { display:flex; gap:6px; align-self:center; flex-shrink:0; }
@container (max-width: 480px) {
    .pln-my-swap { grid-template-columns: 1fr; }
    .pln-my-swap__actions { justify-content:flex-end; }
}

/* ── Phoner: feriesaldo (min balance) ──────────────────────────── */
.pln-balance { padding:12px 16px; display:flex; flex-wrap:wrap; gap:24px; align-items:flex-start; }
.pln-balance__stat { min-width:90px; display:flex; flex-direction:column; gap:4px; }
.pln-balance__stat-label { font-size:.62rem; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.07em; font-weight:700; }
.pln-balance__stat-value { font-size:1.6rem; font-weight:800; color:var(--color-text-1); line-height:1; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.pln-balance__stat-value--ok { color:var(--color-success, var(--accent, #0A84FF)); }
.pln-balance__stat-value--warn { color:var(--color-warn); }
.pln-balance__periods { flex:1; min-width:220px; max-width:340px; }
.pln-balance__periods-label { font-size:.62rem; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.07em; font-weight:700; margin-bottom:8px; }
.pln-balance__period-row { display:flex; align-items:center; gap:8px; padding:5px 0; font-size:.85rem; color:var(--color-text-2); border-bottom:1px dashed var(--color-border); }
.pln-balance__period-row:last-child { border-bottom:0; }
.pln-balance__period-days { margin-left:auto; color:var(--color-text-3); font-size:.78rem; font-variant-numeric:tabular-nums; }
.pln-balance-card { margin-bottom:14px; }

/* ── Phoner Fravær: mine anmodninger ───────────────────────────── */
.pln-my-request-list { display:flex; flex-direction:column; gap:6px; }
.pln-my-request {
    display:flex; gap:12px; align-items:center;
    padding:11px 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-text-3);
    border-radius: 8px;
    transition: background .12s;
}
.pln-my-request:hover { background:var(--color-surface-hover); }
.pln-my-request--ferie { border-left-color:var(--color-info); }
.pln-my-request--syg { border-left-color:var(--color-warn); }
.pln-my-request--andet { border-left-color:var(--color-text-3); }
.pln-my-request__main { flex:1; min-width:0; }
.pln-my-request__head { font-weight:600; color:var(--color-text-1); font-size:.88rem; line-height:1.25; font-variant-numeric:tabular-nums; }
.pln-my-request__reason { color:var(--color-text-3); font-size:.78rem; margin-top:3px; line-height:1.35; }

/* Form-actions row (right-aligned submit) */
.pln-form-actions { display:flex; justify-content:flex-end; gap:8px; padding-top:4px; }

/* ── Stempel (phoner): prominent status + action ───────────────── */
.pln-stempel-status {
    text-align: center;
    padding: clamp(24px, 5vw, 40px) 20px clamp(20px, 4vw, 32px);
    container-type: inline-size;
    display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.pln-stempel-status__label {
    font-size: .72rem; font-weight: 700;
    letter-spacing: .08em; text-transform: uppercase;
    color: var(--color-text-3);
}
.pln-stempel-status__label--in { color: var(--color-success); }
.pln-stempel-status__time {
    font-size: clamp(2.2rem, 10cqi, 3.4rem);
    font-weight: 800;
    color: var(--accent-ink, var(--color-accent));
    letter-spacing: -.025em;
    line-height: 1;
    margin: 4px 0;
    font-variant-numeric: tabular-nums;
    font-feature-settings: 'tnum';
}
.pln-stempel-status__time--idle { color: var(--color-text-3); font-size: clamp(1.4rem, 5cqi, 1.8rem); margin:0; }
.pln-stempel-status__worked {
    font-size: .92rem; color: var(--color-text-2);
    margin: 6px 0 20px;
}
.pln-stempel-status__worked strong { color: var(--color-text-1); font-weight: 700; font-variant-numeric:tabular-nums; }
/* B3-fix: HR-status-badge (roster). Hvid tekst + text-shadow = tema-stabil på enhver status-bg
   (erstatter hardcoded inline color:#fff). Bg sættes inline fra token-værdi pr. status. */
.pln-hrm-badge { display:inline-block; margin-left:6px; padding:1px 7px; color:#fff; text-shadow:0 1px 1px rgba(0,0,0,.4); border-radius:4px; font-size:.6rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; vertical-align:1px; }
/* QoL F4: live session-ur (tikker hvert sekund mens stemplet ind). Tabular = ingen bredde-hop. */
.pln-stempel-status__elapsed { font-size: clamp(1.6rem, 7cqi, 2.4rem); font-weight: 800; color: var(--color-success, #1F9E5A); font-variant-numeric:tabular-nums; letter-spacing:.02em; margin: 0 0 16px; line-height:1; }
.pln-stempel-action-btn {
    width: 100%; max-width: 320px;
    padding: 16px 28px !important;
    font-size: 1.02rem !important;
    font-weight: 700;
    min-height: 56px;
    border-radius: var(--radius-xl, 24px);
    box-shadow: 0 4px 12px rgba(0,0,0,.16);
    transition: transform .12s, box-shadow .14s;
}
.pln-stempel-action-btn:active { transform: translateY(1px); box-shadow: 0 2px 6px rgba(0,0,0,.18); }
@container (max-width: 480px) {
    .pln-stempel-action-btn { max-width: 100%; }
}

/* Stempel-history: clean list */
.pln-punch-list { display:flex; flex-direction:column; gap:6px; }
.pln-punch-row {
    display:flex; align-items:center; gap:12px;
    padding:10px 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    font-size:.85rem;
    transition: background .12s;
}
.pln-punch-row:hover { background: var(--color-surface-hover); }
.pln-punch-row__action {
    display:inline-flex; align-items:center; gap:5px;
    font-weight:700; letter-spacing:.04em;
    min-width:54px;
}
.pln-punch-row__action--in { color: var(--color-success); }
.pln-punch-row__action--out { color: var(--color-warn); }
.pln-punch-row__action::before {
    content:'';
    display:inline-block; width:7px; height:7px; border-radius:50%;
    background: currentColor;
    flex-shrink:0;
}
.pln-punch-row__time { flex:1; font-weight:600; font-variant-numeric:tabular-nums; color:var(--color-text-1); }

/* ── Tider (punch-tracking): per-medarbejder rows ────────────── */
.pln-tider-list { display:flex; flex-direction:column; gap:8px; container-type:inline-size; }
.pln-tider-row {
    display:grid;
    grid-template-columns: minmax(160px, 180px) 1fr auto;
    gap: 16px;
    align-items: center;
    padding: 12px 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg, 18px);
    transition: background .12s;
}
.pln-tider-row:hover { background:var(--color-surface-hover); }
.pln-tider-row__name { font-weight:600; color:var(--color-text-1); font-size:.88rem; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pln-tider-row__pairs { display:flex; gap:6px; flex-wrap:wrap; min-width:0; }
.pln-tider-pair {
    display:inline-flex; align-items:center; gap:6px;
    background: var(--color-card-solid);
    border: 1px solid var(--color-border);
    border-radius: 999px;
    padding: 3px 11px;
    font-size: .78rem;
    color: var(--color-text-2);
    font-variant-numeric: tabular-nums;
    line-height: 1.4;
}
.pln-tider-pair__sep { color:var(--color-text-3); opacity:.7; }
.pln-tider-pair--open { background:var(--color-warn-bg); border-color:transparent; color:var(--color-warn); font-weight:600; }
.pln-tider-pair--open .pln-tider-pair__open-tag { font-style:italic; font-weight:600; }
.pln-tider-row__total {
    font-weight:700; color:var(--color-text-1);
    font-size:.95rem; min-width:74px; text-align:right;
    font-variant-numeric: tabular-nums; letter-spacing:-.01em;
}
.pln-tider-row__total::after { content:" t"; font-weight:500; color:var(--color-text-3); margin-left:2px; font-size:.85em; }
.pln-tider-summary { font-size:.82rem; color:var(--color-text-2); font-weight:500; }
@container (max-width: 600px) {
    .pln-tider-row { grid-template-columns: 1fr auto; }
    .pln-tider-row__pairs { grid-column: 1 / -1; }
}

/* ── Fravær: resolved-sektion (Seneste 20 besvarede) ─────────────── */
.pln-fravaer-resolved { margin-top:24px; }
.pln-fravaer-resolved__head {
    display:flex; align-items:baseline; gap:8px;
    margin-bottom:10px;
    font-size:.72rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
    color:var(--color-text-3);
}
.pln-fravaer-resolved__head::before { content:""; flex:1; max-width:24px; height:1px; background:var(--color-border); }
.pln-fravaer-resolved__head::after  { content:""; flex:1; height:1px; background:var(--color-border); }
.pln-fravaer-resolved__list { display:flex; flex-direction:column; gap:6px; }
.pln-fravaer-resolved__item {
    display:flex; align-items:center; gap:10px;
    padding:9px 12px;
    border:1px solid var(--color-border);
    border-radius:8px;
    background:var(--color-card-solid);
    font-size:.82rem;
    transition: background .12s;
}
.pln-fravaer-resolved__item:hover { background:var(--color-surface); }
.pln-fravaer-resolved__item__name { flex:1; min-width:0; color:var(--color-text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pln-fravaer-resolved__item__name strong { color:var(--color-text-1); font-weight:600; margin-right:6px; }

.pln-fatigue-list { display:flex; flex-direction:column; gap:8px; padding:12px; }
.pln-fatigue-row { display:flex; align-items:center; gap:10px; }
.pln-fatigue-row__name { font-size:.85rem; min-width:140px; font-weight:500; }
.pln-fatigue-row__bar { flex:1; height:10px; background:var(--color-surface); border-radius:var(--radius-md, 14px); overflow:hidden; }
.pln-fatigue-row__bar-fill { height:100%; transition:width .3s ease; }
.pln-fatigue-row__bar-fill--low { background:var(--bh-green, #1F9E5A); } /* success */
.pln-fatigue-row__bar-fill--mid { background:var(--bh-pop, #FF6A1A); } /* tangerine */
.pln-fatigue-row__bar-fill--high { background:var(--bh-danger, #E0392B); } /* danger */
.pln-fatigue-row__score { font-weight:700; font-size:.85rem; min-width:36px; text-align:right; font-variant-numeric:tabular-nums; }

.pln-briefing { padding:16px; display:flex; flex-direction:column; gap:14px; }
.pln-briefing__greeting { font-size:1.1rem; font-weight:600; color:var(--color-text-1); }
.pln-briefing__metrics { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:10px; }
.pln-briefing__metric { background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; padding:10px 12px; }
.pln-briefing__metric-label { font-size:.7rem; color:var(--color-text-3); text-transform:uppercase; letter-spacing:.04em; }
.pln-briefing__metric-value { font-size:1.4rem; font-weight:700; color:var(--color-text-1); margin-top:2px; }
.pln-briefing__actions { display:flex; flex-direction:column; gap:6px; }
.pln-briefing__action { display:flex; align-items:center; gap:8px; padding:8px 10px; background:var(--color-warn-bg); border-left:3px solid var(--color-warn); border-radius:4px; font-size:.85rem; }
.pln-briefing__action--ok { background:var(--color-success-bg); border-left-color:var(--color-success); }

/* ─── Fase 3 - Integration-tab + diff-preview-modal ──────────────── */
.pln-integration-card { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg, 18px); padding:14px 16px; margin-bottom:10px; }
.pln-integration-card__head { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pln-integration-card__title { margin:0; font-size:.95rem; font-weight:600; color:var(--color-text-1); }
.pln-integration-card__meta { display:flex; align-items:center; gap:10px; margin-top:4px; font-size:.78rem; color:var(--color-text-3); }
.pln-integration-card__last { color:var(--color-text-3); }
.pln-integration-card__actions { display:flex; gap:6px; flex-wrap:wrap; }
.pln-integration-card__err { margin-top:8px; padding:6px 10px; background:var(--color-danger-bg, rgba(224,57,43,.10)); color:var(--color-danger, #E0392B); border-radius:var(--radius-md, 14px); font-size:.78rem; }
/* De-risk: resultat af test-skrivning (opret+slet 1 vagt i Planday). Token-baseret, theme-flip-sikker. */
.pln-integration-card__testresult { margin-top:8px; padding:8px 10px; border-radius:var(--radius-md, 14px); font-size:.76rem; white-space:pre-wrap; line-height:1.45; border:1px solid var(--color-border); font-variant-numeric:tabular-nums; }
.pln-integration-card__testresult.is-ok { background:var(--pln-shift-ferie-bg, rgba(31,158,90,.10)); color:var(--color-success, #1F9E5A); border-color:transparent; }
.pln-integration-card__testresult.is-err { background:var(--color-danger-bg, rgba(224,57,43,.10)); color:var(--color-danger, #E0392B); border-color:transparent; }
.pln-btn__ic { display:inline-flex; align-items:center; vertical-align:middle; margin-right:4px; }
.pln-btn__ic svg { width:14px; height:14px; }

.pln-pill { display:inline-block; padding:2px 8px; border-radius:999px; font-size:.72rem; font-weight:600; }
.pln-pill--on { background:var(--color-success-bg, rgba(31,158,90,.10)); color:var(--color-success, #1F9E5A); }
.pln-pill--off { background:var(--color-surface); color:var(--color-text-3); border:1px solid var(--color-border); }
.pln-pill--idle { background:var(--color-warn-bg, rgba(229,161,26,.12)); color:var(--color-warn, #E5A11A); }

.pln-form { display:flex; flex-direction:column; gap:10px; padding:4px 0; }
.pln-form-row { display:grid; grid-template-columns:160px 1fr; align-items:center; gap:10px; }
.pln-form-row label { font-size:.85rem; color:var(--color-text-2); }
.pln-form-row input[type="text"], .pln-form-row input[type="number"], .pln-form-row input[type="date"], .pln-form-row select {
    width:100%; padding:6px 8px; border:1px solid var(--color-border); border-radius:var(--radius-md, 14px); background:var(--color-surface);
    font-size:.85rem; color:var(--color-text-1);
}
.pln-form-row input[type="checkbox"] { margin-right:8px; }

.pln-diff-tabs { display:flex; gap:4px; margin-bottom:12px; border-bottom:1px solid var(--color-border); }
.pln-diff-tab { padding:8px 14px; background:transparent; border:0; border-bottom:2px solid transparent; cursor:pointer; color:var(--color-text-2); font-size:.85rem; font-weight:500; }
.pln-diff-tab:hover { color:var(--color-text-1); }
.pln-diff-tab--active { color:var(--color-text-1); border-bottom-color:var(--color-accent, #0A84FF); }
.pln-diff-tab__n { display:inline-block; margin-left:6px; padding:1px 6px; border-radius:999px; background:var(--color-surface); border:1px solid var(--color-border); font-size:.7rem; font-variant-numeric:tabular-nums; }
.pln-diff-panel { max-height:380px; overflow-y:auto; }
.pln-table { width:100%; border-collapse:collapse; font-size:.85rem; }
.pln-table th, .pln-table td { padding:6px 10px; text-align:left; border-bottom:1px solid var(--color-border); }
.pln-table th { font-weight:600; color:var(--color-text-3); font-size:.7rem; text-transform:uppercase; letter-spacing:.05em; position:sticky; top:0; background:var(--color-card); }
.pln-table tr:last-child td { border-bottom:0; }

/* Sourced-badge på shift-cards i week-grid (Fase 3) */
.pln-shift-badge--sourced { position:absolute; top:4px; right:4px; padding:1px 5px; border-radius:4px; background:rgba(var(--accent-rgb, 10,132,255), .12); color:var(--color-accent, #0A84FF); font-size:.62rem; font-weight:700; letter-spacing:.02em; pointer-events:none; }

/* Screen-reader-only utility (a11y) - caption + visually-hidden labels */
.pln-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* 2026-05-30 (audit #20): preview-banner - vises når en leder forhåndsviser medarbejder-visningen */
.pln-preview-banner{display:flex;align-items:center;justify-content:center;gap:12px;
  padding:8px 16px;background:var(--color-warn-soft,rgba(245,158,11,.16));
  border-bottom:1px solid var(--color-warn,rgba(245,158,11,.55));
  color:var(--color-text-1);font-size:.8rem;font-weight:600;line-height:1.3;
  flex-wrap:wrap;text-align:center;}
.pln-preview-banner__ic{display:inline-flex;width:16px;height:16px;flex:0 0 auto;opacity:.85;}
.pln-preview-banner__ic .pln-ic{width:16px;height:16px;}
.pln-preview-banner__btn{padding:5px 14px;border-radius:8px;border:1px solid var(--color-warn,rgba(245,158,11,.55));
  background:transparent;color:var(--color-text-1);font-weight:700;font-size:.75rem;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;}
.pln-preview-banner__btn:hover{background:var(--color-warn,rgba(245,158,11,.55));color:var(--color-on-warn,#1a1206);}
.pln-preview-banner__btn .pln-ic{width:14px;height:14px;}

/* ════════════════════════════════════════════════════════════════════
   DRIFT-OVERBLIK — "Kan jeg lukke aftenen?" (2026-06-10)
   Kun theme-tokens (flipper med lyst/mørkt) — ingen hardcoded farver.
   ════════════════════════════════════════════════════════════════════ */
.pln-drift-sum{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3);}
.pln-drift-sum__chips{display:flex;flex-wrap:wrap;gap:8px;}
.pln-drift-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:.82rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-2);}
.pln-drift-chip b{font-size:1rem;color:var(--color-text-1);}
.pln-drift-chip.is-closable{border-color:var(--color-success);background:var(--color-success-bg);}
.pln-drift-chip.is-consider{border-color:var(--color-warn);background:var(--color-warn-bg);}
.pln-drift-chip.is-noplan{border-style:dashed;color:var(--color-text-3);}
.pln-drift-chip.is-closed{opacity:.7;}
.pln-drift-sum__cta{display:flex;flex-direction:column;align-items:flex-end;gap:8px;min-width:min(100%,300px);flex:1;}
.pln-drift-sum__line{margin:0;font-size:.88rem;color:var(--color-text-2);line-height:1.45;text-align:right;}
.pln-drift-sum__line b{color:var(--color-text-1);}
.pln-drift-sum__line--ok{flex:1;text-align:left;}
.pln-drift-list__bar{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-3) 0 var(--space-2);}
.pln-drift-toggle{display:inline-flex;align-items:center;gap:7px;font-size:.84rem;color:var(--color-text-2);cursor:pointer;}
.pln-drift-empty{padding:var(--space-4);text-align:center;color:var(--color-text-3);font-size:.88rem;}
.pln-drift-days{display:flex;flex-direction:column;gap:6px;}
.pln-drift-day{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:9px 12px;border:1px solid var(--color-border);border-left-width:3px;border-radius:8px;background:var(--color-surface);}
.pln-drift-day.is-closable{border-left-color:var(--color-success);}
.pln-drift-day.is-consider{border-left-color:var(--color-warn);}
.pln-drift-day.is-keep{border-left-color:var(--color-border-strong);}
.pln-drift-day.is-noplan{border-left-style:dashed;border-left-color:var(--color-border-strong);}
.pln-drift-day.is-closed{border-left-color:var(--color-text-3);opacity:.78;}
.pln-drift-day__date{font-size:.86rem;color:var(--color-text-2);white-space:nowrap;}
.pln-drift-day__date b{color:var(--color-text-1);}
.pln-drift-day__verdict{font-size:.74rem;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid var(--color-border);color:var(--color-text-2);}
.pln-drift-day__verdict.is-closable{border-color:var(--color-success);background:var(--color-success-bg);color:var(--color-text-1);}
.pln-drift-day__verdict.is-consider{border-color:var(--color-warn);background:var(--color-warn-bg);color:var(--color-text-1);}
.pln-drift-day__verdict.is-closed{opacity:.8;}
.pln-drift-day__nums{display:flex;flex-wrap:wrap;gap:10px;font-size:.8rem;color:var(--color-text-3);margin-left:auto;}
.pln-drift-day__nums b{color:var(--color-text-1);}
.pln-drift-day__act{white-space:nowrap;}
.pln-drift-day__why{flex-basis:100%;font-size:.78rem;color:var(--color-text-3);}

/* ── Kapacitets-feasibility "har vi folk nok til kun dagsvagter?" (2026-06-10) ── */
.pln-feas-sum{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-3);}
.pln-feas-sum__verdict{font-size:1rem;font-weight:600;line-height:1.4;padding:10px 14px;border-radius:10px;border:1px solid var(--color-border);border-left-width:4px;background:var(--color-surface);color:var(--color-text-1);}
.pln-feas-sum__verdict.is-green{border-left-color:var(--color-success);background:var(--color-success-bg);}
.pln-feas-sum__verdict.is-yellow{border-left-color:var(--color-warn);background:var(--color-warn-bg);}
.pln-feas-sum__verdict.is-red{border-left-color:var(--color-danger);background:var(--color-danger-bg);}
.pln-feas-sum__scen{display:flex;flex-wrap:wrap;gap:var(--space-3);}
.pln-feas-scen{flex:1;min-width:min(100%,220px);border:1px solid var(--color-border);border-radius:10px;padding:9px 12px;background:var(--color-surface);}
.pln-feas-scen__t{font-size:.82rem;font-weight:600;color:var(--color-text-1);margin-bottom:6px;}
.pln-feas-scen__t span{font-weight:400;color:var(--color-text-3);font-size:.76rem;}
.pln-feas-scen__nums{display:flex;flex-wrap:wrap;gap:8px;}
.pln-feas-pip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:.78rem;border:1px solid var(--color-border);color:var(--color-text-2);}
.pln-feas-pip b{color:var(--color-text-1);}
.pln-feas-pip.is-green{border-color:var(--color-success);background:var(--color-success-bg);}
.pln-feas-pip.is-yellow{border-color:var(--color-warn);background:var(--color-warn-bg);}
.pln-feas-pip.is-red{border-color:var(--color-danger);background:var(--color-danger-bg);}
.pln-feas-badge{font-size:.74rem;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid var(--color-border);color:var(--color-text-1);}
.pln-feas-badge.is-green{border-color:var(--color-success);background:var(--color-success-bg);}
.pln-feas-badge.is-yellow{border-color:var(--color-warn);background:var(--color-warn-bg);}
.pln-feas-badge.is-red{border-color:var(--color-danger);background:var(--color-danger-bg);}
.pln-feas-pending{color:var(--color-warn);}
/* Handlingslinje + legende */
.pln-feas-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:var(--space-3);}
.pln-feas-bar__spacer{flex:1;}
.pln-feas-legend{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;color:var(--color-text-3);}
.pln-feas-legend i{width:11px;height:11px;border-radius:3px;display:inline-block;margin:0 8px 0 3px;}
.pln-feas-legend i.is-green{background:var(--color-success);}
.pln-feas-legend i.is-yellow{background:var(--color-warn);}
.pln-feas-legend i.is-red{background:var(--color-danger);}
/* Kalender — genbruger pln-cal (Fravær-fanen), med feasibility-farver på cellerne */
.pln-feas-cals{display:flex;flex-direction:column;gap:var(--space-3);margin:var(--space-3) 0;}
.pln-cal__cell--feas{cursor:pointer;gap:2px;}
.pln-cal__cell--feas:hover{background:var(--color-surface-hover);}
.pln-cal__cell--feas.is-green{background:var(--color-success-bg);}
.pln-cal__cell--feas.is-yellow{background:var(--color-warn-bg);}
.pln-cal__cell--feas.is-red{background:var(--color-danger-bg);}
.pln-cal__cell--feas.is-sel{box-shadow:inset 0 0 0 2px var(--color-accent);}
.pln-cal__cell--feas:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;}
.pln-feascell__v{font-size:.66rem;font-weight:700;line-height:1.1;}
.pln-cal__cell--feas.is-green .pln-feascell__v{color:var(--color-success);}
.pln-cal__cell--feas.is-yellow .pln-feascell__v{color:var(--color-warn);}
.pln-cal__cell--feas.is-red .pln-feascell__v{color:var(--color-danger);}
.pln-feascell__n{font-size:.6rem;color:var(--color-text-3);line-height:1.15;}
.pln-feascell__dot{position:absolute;top:6px;right:7px;width:9px;height:9px;border-radius:50%;border:1.5px solid var(--color-card-solid);}
.pln-feascell__dot.is-green{background:var(--color-success);}
.pln-feascell__dot.is-yellow{background:var(--color-warn);}
.pln-feascell__dot.is-red{background:var(--color-danger);}
@container (max-width: 560px){ .pln-cal__cell--feas .pln-feascell__n{display:none;} }
/* Detalje-panel + metodik */
.pln-feas-detail{border:1px solid var(--color-border);border-radius:10px;padding:10px 12px;background:var(--color-surface);font-size:.84rem;color:var(--color-text-2);min-height:42px;}
.pln-feas-detail__head{font-weight:600;color:var(--color-text-1);margin-bottom:6px;}
.pln-feas-detail__badges{display:inline-flex;gap:6px;margin-bottom:6px;flex-wrap:wrap;}
.pln-feas-detail__nums{font-size:.8rem;color:var(--color-text-2);}
.pln-feas-detail__nums b{color:var(--color-text-1);}
.pln-feas-detail__why{margin-top:5px;font-size:.78rem;color:var(--color-text-3);}
.pln-feas-detail--hint{color:var(--color-text-3);font-style:italic;}
.pln-feas-method{margin-top:var(--space-3);font-size:.76rem;color:var(--color-text-3);}
.pln-feas-method summary{cursor:pointer;color:var(--color-text-2);font-weight:600;}
.pln-feas-method .pln-bem__hint-honest{margin-top:6px;}
/* Drifts-kalender Fase 1 — metrik-vælger + neutral/heat-farver + detalje-handling */
.pln-dv-pick{display:inline-flex;align-items:center;gap:7px;}
.pln-dv-pick label{font-size:.74rem;font-weight:600;color:var(--color-text-3);text-transform:uppercase;letter-spacing:.03em;}
.pln-dv-pick .pln-input{font-size:.85rem;padding:6px 10px;min-width:170px;}
.pln-feas-sum__verdict.is-neutral{border-left-color:var(--color-border-strong);background:var(--color-surface);}
.pln-cal__cell--feas.is-neutral{background:var(--color-card-solid);}
.pln-cal__cell--feas.is-heat1{background:color-mix(in srgb, var(--color-warn) 12%, var(--color-card-solid));}
.pln-cal__cell--feas.is-heat2{background:color-mix(in srgb, var(--color-warn) 24%, var(--color-card-solid));}
.pln-cal__cell--feas.is-heat3{background:color-mix(in srgb, var(--color-danger) 18%, var(--color-card-solid));}
.pln-cal__cell--feas.is-heat4{background:color-mix(in srgb, var(--color-danger) 30%, var(--color-card-solid));}
.pln-feas-legend i.is-neutral{background:var(--color-border-strong);}
.pln-feas-legend i.is-heat1{background:color-mix(in srgb, var(--color-warn) 35%, transparent);}
.pln-feas-legend i.is-heat2{background:var(--color-warn);}
.pln-feas-legend i.is-heat3{background:color-mix(in srgb, var(--color-danger) 60%, transparent);}
.pln-feas-legend i.is-heat4{background:var(--color-danger);}
.pln-feas-detail__act{margin-top:8px;}

/* Drift-indstillinger: ALTID-synligt højre-panel (sidebar-stil) + inline accordion (2026-06-10) */
.pln-drift-split{ display:flex; gap:18px; align-items:flex-start; }
.pln-drift-split > .pln-card{ flex:1 1 auto; min-width:0; }
.pln-set-panel{ flex:0 0 clamp(300px, 26vw, 400px); width:clamp(300px, 26vw, 400px); background:var(--pln-sidebar-bg); /* audit fixed-px-fix: skalér med viewport i stedet for hård 380px */ border:1px solid var(--color-border); border-radius:14px; display:flex; flex-direction:column; overflow:hidden; position:sticky; top:16px; max-height:calc(100vh - var(--pln-th) - 32px); }   /* træk topbar fra: panel scroller nu inde i .pln-main, ikke body */
.pln-set-panel__head{ padding:14px 16px; border-bottom:1px solid var(--color-border); flex:0 0 auto; }
.pln-set-panel__head h2{ margin:0; font-size:1rem; font-weight:700; color:var(--color-text-1); }
.pln-set-panel__body{ flex:1; overflow:auto; padding:8px; display:flex; flex-direction:column; gap:2px; }
.pln-acc{ border-radius:8px; }
.pln-acc__hd{ display:flex; align-items:center; gap:10px; width:100%; padding:9px 10px; background:transparent; border:0; border-radius:8px; color:var(--color-text-2); font-size:.8rem; font-weight:500; cursor:pointer; text-align:left; font-family:inherit; position:relative; transition:background .15s, color .15s; }
.pln-acc__hd:hover{ background:var(--color-surface); color:var(--color-text-1); }
.pln-acc__lbl{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pln-acc__chev{ width:15px; height:15px; flex-shrink:0; color:var(--color-text-3); transition:transform .18s; }
.pln-acc.is-open > .pln-acc__hd{ color:var(--accent-ink, var(--color-accent)); font-weight:600; }
.pln-acc.is-open > .pln-acc__hd .pln-acc__chev{ transform:rotate(90deg); color:var(--accent-ink, var(--color-accent)); }
.pln-acc.is-open > .pln-acc__hd::before{ content:''; position:absolute; left:-2px; top:8px; bottom:8px; width:3px; background:var(--color-accent); border-radius:0 2px 2px 0; }
.pln-acc__hd--act .pln-acc__lbl::after{ content:'\203A'; float:right; color:var(--color-text-3); font-weight:700; padding-left:8px; }
.pln-acc__ct{ display:none; padding:4px 10px 14px; }
.pln-acc.is-open > .pln-acc__ct{ display:block; }
/* inline-editorer: neutralisér modal-bredder så de passer i panelet */
.pln-acc__ct .pln-bem-vpick{ display:flex; flex-direction:column; gap:6px; }
.pln-acc__ct .pln-filter-bar, .pln-acc__ct .pln-drift-periodcard{ margin:0; flex-wrap:wrap; }
.pln-acc__ct > div, .pln-acc__ct form{ max-width:100%; }
.pln-acc__ct input, .pln-acc__ct select, .pln-acc__ct textarea{ max-width:100%; box-sizing:border-box; }
@media (max-width:1100px){ .pln-drift-split{ flex-direction:column; } .pln-set-panel{ width:100%; flex-basis:auto; position:static; max-height:none; } }

.pln-main--wide{ max-width:none !important; }

/* Topbar (titel/undertekst) skjult på alle planner-sider — full width (2026-06-10 Hammer) */
/* 2026-07-10 P0-fix: :not(.bdg-topbar) — budget-topbaren er FUNKTIONEL (år-skift,
   projekt-filter, eksport, print) og var utilsigtet skjult siden 2026-06-10.
   manager.html:5177 bevarede den eksplicit ved fragment-strip; CSS'en åd den. */
.pln-topbar:not(.bdg-topbar){ display:none !important; }

/* Utility: vandret scroll-wrapper til brede tabeller (drift-ugetabel m.fl.) */
.pln-tablewrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100%; }
/* Utility: lodret scroll-begrænsning (analyse ferie-saldo m.fl.) */
.pln-scroll-y{ max-height:340px; overflow-y:auto; }

/* ════ Drift-panel inline-editorer: native sidebar-layout + rude (2026-06-10) ════
   Modal-editorerne renderes inline; her tvinges de til kompakt lodret sidebar-form.
   Form-kontrollerne (input/select/.pln-btn) får rude-chrome fra rude-skin automatisk. */
.pln-acc__ct{ font-size:.78rem; color:var(--color-text-1); }
.pln-acc__ct > div:first-child{ margin-top:0; }
.pln-acc__ct .pln-field{ display:flex; flex-direction:column; gap:5px; margin:0 0 13px; max-width:100%; }
.pln-acc__ct .pln-field__lbl{ font-size:.63rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-3); }
.pln-acc__ct .pln-field__input,
.pln-acc__ct .pln-input,
.pln-acc__ct select,
.pln-acc__ct input[type="text"],
.pln-acc__ct input[type="search"]{ width:100% !important; box-sizing:border-box; max-width:100%; }
/* inline flex-rækker (fx Formel: op + felt2) → stak lodret fuld bredde */
.pln-acc__ct .pln-field > div[style*="flex"]{ display:flex !important; flex-direction:column !important; gap:6px !important; }
.pln-acc__ct .pln-field > div[style*="flex"] > *{ width:100% !important; flex:none !important; min-width:0; }
/* radio-grupper → lodret kompakt liste */
.pln-acc__ct .pln-tilpas-radios{ display:flex; flex-direction:column; gap:8px; }
.pln-acc__ct .pln-tilpas-radios label{ display:flex; align-items:center; gap:9px; font-size:.76rem; line-height:1.3; cursor:pointer; color:var(--color-text-1); }
.pln-acc__ct .pln-tilpas-radios input[type="radio"]{ width:auto !important; flex:0 0 auto; margin:0; }
/* tærskler → tekst + smalle tal-felter, wrapper pænt */
.pln-acc__ct .pln-tilpas-thr{ font-size:.74rem; line-height:2.1; color:var(--color-text-2); }
.pln-acc__ct .pln-tilpas-thr input{ width:64px !important; margin:0 2px; }
/* hints kompakte */
.pln-acc__ct .pln-bem__hint-honest{ font-size:.7rem; margin:0 0 11px; line-height:1.45; color:var(--color-text-3); }
/* gemt-visning-banner → lodret */
.pln-acc__ct .pln-tilpas-managed{ display:flex; flex-direction:column; align-items:flex-start; gap:7px; font-size:.72rem; margin:0 0 12px; padding-bottom:10px; border-bottom:1px solid var(--color-border); }
.pln-acc__ct .pln-tilpas-managed__btns{ display:flex; gap:6px; flex-wrap:wrap; }
/* foot-knapper (Annuller/Anvend/Gem) → fuld bredde nederst, skilt med streg */
.pln-acc__foot{ display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; padding-top:11px; border-top:1px solid var(--color-border); }
.pln-acc__foot .pln-btn{ flex:1 1 auto; justify-content:center; }
/* bred matrix (Dækningsmål) → scroll i stedet for at sprænge sidebaren */
.pln-acc__ct table{ max-width:100%; }
.pln-acc__ct > div{ max-width:100%; overflow-x:auto; }

/* ════ Redesignet drift-panel: info-boks + grupper + navn/beskrivelse + Vis-udfold (2026-06-10) ════ */
.pln-set-intro{ margin:0 0 4px; padding:11px 12px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px; }
.pln-set-intro__t{ font-size:.8rem; font-weight:700; color:var(--color-text-1); margin-bottom:3px; }
.pln-set-intro__b{ font-size:.71rem; line-height:1.5; color:var(--color-text-2); }
.pln-set-panel .pln-set-grp__t{ font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--color-text-3); padding:15px 4px 5px; }
/* accordion-hoved: navn + beskrivelse stakket, chevron i top */
.pln-set-panel .pln-acc__hd{ align-items:flex-start !important; gap:9px; padding:10px 10px; }
.pln-acc__txt{ display:flex; flex-direction:column; gap:2px; flex:1 1 auto; min-width:0; text-align:left; }
.pln-set-panel .pln-acc__lbl{ white-space:normal !important; overflow:visible !important; text-overflow:clip !important; font-weight:600; font-size:.81rem; line-height:1.25; }
.pln-acc__desc{ font-size:.66rem; line-height:1.35; color:var(--color-text-3); font-weight:400; white-space:normal; }
.pln-acc.is-open > .pln-acc__hd .pln-acc__desc{ color:var(--color-text-2); }
.pln-set-panel .pln-acc__chev{ margin-top:3px; }
.pln-acc__ext{ color:var(--color-text-3); font-weight:700; font-size:.9rem; margin-top:1px; flex:0 0 auto; }
/* Vis-underudfold "Farver og tærskler" */
.pln-acc__sub{ display:flex; align-items:center; justify-content:space-between; gap:6px; width:100%; margin-top:12px; padding:8px 10px; background:transparent; border:1px dashed var(--color-border); border-radius:8px; color:var(--color-text-2); font:inherit; font-size:.73rem; font-weight:600; cursor:pointer; }
.pln-acc__sub:hover{ background:var(--color-surface); color:var(--color-text-1); }
.pln-acc__sub .pln-acc__chev{ width:14px; height:14px; margin-top:0; }
.pln-acc__sub.is-open .pln-acc__chev{ transform:rotate(90deg); }
.pln-acc__ct--sub{ display:none; padding:10px 2px 2px; }
/* første-gangs-prompt i Vis */
.pln-set-prompt{ font-size:.72rem; line-height:1.5; color:var(--color-text-1); background:rgba(var(--accent-rgb),0.12); border:1px solid rgba(var(--accent-rgb),0.32); border-radius:8px; padding:9px 11px; margin-bottom:11px; }

/* ════ Bemandingsbehov (kriterie-editor) kompakt så den passer i sidebar-panelet (2026-06-10) ════ */
.pln-acc__ct .pln-bem-crit{ font-size:.76rem; }
.pln-acc__ct .pln-bem-crit__sec{ margin-bottom:15px; }
.pln-acc__ct .pln-bem-crit__h{ font-size:.63rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); margin-bottom:7px; line-height:1.3; }
/* Vagt-bånd: stak label på egen linje, tider under */
.pln-acc__ct .pln-bem-crit__band{ display:flex; flex-wrap:wrap; align-items:center; gap:5px 6px; margin-bottom:8px; padding-bottom:8px; border-bottom:1px solid var(--color-border); }
.pln-acc__ct .pln-bem-crit__lbl{ flex:1 1 100%; width:100% !important; }
.pln-acc__ct .pln-bem-crit__time{ flex:0 0 auto; width:82px !important; }
.pln-acc__ct .pln-bem-crit__dash{ flex:0 0 auto; color:var(--color-text-3); }
.pln-acc__ct .pln-bem-crit__type{ flex:0 0 auto; font-size:.6rem; padding:2px 6px; border-radius:5px; background:var(--color-surface); color:var(--color-text-2); }
.pln-acc__ct .pln-bem-crit__del{ flex:0 0 auto; margin-left:auto; }
.pln-acc__ct .pln-bem-crit__delpad{ flex:0 0 auto; }
/* Dækningsmål-tabel: kompakt, passer i kolonnen (scroller kun internt ved mange bånd) */
.pln-acc__ct .pln-bem-crit__tblwrap{ overflow-x:auto; max-width:100%; margin:0 -2px; }
.pln-acc__ct .pln-bem-crit__tbl{ width:100%; border-collapse:collapse; }
.pln-acc__ct .pln-bem-crit__tbl th{ font-size:.58rem; font-weight:700; text-transform:uppercase; letter-spacing:.02em; color:var(--color-text-3); padding:3px 3px 5px; text-align:center; white-space:nowrap; }
.pln-acc__ct .pln-bem-crit__tbl th:first-child{ text-align:left; }
.pln-acc__ct .pln-bem-crit__tbl td{ padding:2px 3px; }
.pln-acc__ct .pln-bem-crit__role{ font-size:.71rem; line-height:1.2; padding:3px 4px 3px 0; color:var(--color-text-1); }
.pln-acc__ct .pln-bem-crit__num{ width:46px !important; min-width:0; text-align:center; padding:5px 3px !important; box-sizing:border-box; }
/* Kvote + ferie-loft: lodret, kompakt */
.pln-acc__ct .pln-bem-crit__quota{ display:flex; flex-direction:column; gap:8px; }
.pln-acc__ct .pln-bem-crit__quota label{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:.74rem; color:var(--color-text-1); }
.pln-acc__ct .pln-bem-crit__quota .pln-bem-crit__num{ width:54px !important; }
.pln-acc__ct .pln-bem-crit__hint{ display:block; font-size:.65rem; color:var(--color-text-3); margin-top:4px; line-height:1.4; }

/* panel-body: aldrig vandret scroll som helhed — brede blokke scroller internt via .pln-acc__ct > div */
.pln-set-panel__body{ overflow-x:hidden !important; overflow-y:auto !important; }

/* ════ Resterende drift-editorer: pas i sidebar-bredde (2026-06-10) ════ */
/* Foreslå en vagtplan (generér) */
.pln-acc__ct .pln-bem-gen{ font-size:.76rem; }
.pln-acc__ct .pln-bem-gen__intro{ font-size:.72rem; line-height:1.5; margin:0 0 11px; color:var(--color-text-2); }
.pln-acc__ct .pln-bem-gen__crit{ display:flex; flex-wrap:wrap; align-items:center; gap:5px 8px; font-size:.71rem; color:var(--color-text-2); background:var(--color-surface); border-radius:8px; padding:8px 10px; margin-bottom:12px; }
.pln-acc__ct .pln-bem-gen__wd{ display:flex; flex-direction:column; gap:8px; }
.pln-acc__ct .pln-bem-gen__lbl{ font-size:.63rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); }
.pln-acc__ct .pln-bem-gen__days-pick{ display:flex; flex-wrap:wrap; gap:7px 13px; }
.pln-acc__ct .pln-bem-gen__daypick{ display:flex; align-items:center; gap:5px; font-size:.75rem; cursor:pointer; white-space:nowrap; }
/* Plan-indhold (viewOpts) */
.pln-acc__ct .pln-member-ctx{ font-size:.72rem; line-height:1.5; margin:0 0 9px; color:var(--color-text-3); }
.pln-acc__ct .pln-bem-view__opt{ display:flex; align-items:flex-start; gap:9px; padding:8px 0; cursor:pointer; border-top:1px solid var(--color-border); }
.pln-acc__ct .pln-bem-view__opt:first-of-type{ border-top:none; }
.pln-acc__ct .pln-bem-view__opt input{ width:auto !important; margin-top:2px; flex:0 0 auto; }
.pln-acc__ct .pln-bem-view__txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.pln-acc__ct .pln-bem-view__lbl{ font-size:.78rem; font-weight:600; color:var(--color-text-1); }
.pln-acc__ct .pln-bem-view__sub{ font-size:.66rem; line-height:1.35; color:var(--color-text-3); }
/* Filtre (filter-bar): fuld bredde stakket — dræb inline min-width */
.pln-acc__ct .pln-filter-bar{ display:flex; flex-direction:column; gap:11px; margin:0; }
.pln-acc__ct .pln-filter-bar .pln-field{ min-width:0 !important; width:100%; flex:none !important; }
/* Periode: strip nested kort-chrome + redundant hoved, stak felter */
.pln-acc__ct .pln-drift-periodcard{ background:transparent !important; border:none !important; box-shadow:none !important; padding:0 !important; margin:0 !important; }
.pln-acc__ct .pln-drift-periodcard .pln-card__head{ display:none; }
.pln-acc__ct .pln-drift-periodcard .pln-bem-toolbar{ display:flex; flex-wrap:wrap; gap:9px; padding:0; margin:0; }
.pln-acc__ct .pln-bem-field{ flex:1 1 calc(50% - 5px); min-width:92px; }
.pln-acc__ct .pln-bem-field input{ width:100% !important; box-sizing:border-box; }
.pln-acc__ct .pln-bem-chips{ display:flex; flex-wrap:wrap; gap:6px; flex:1 1 100%; }
/* tal-felter i .pln-field (fx Pladser) fuld bredde */
.pln-acc__ct label.pln-field > input{ width:100% !important; box-sizing:border-box; }

/* ════ "Hvad tæller som fravær"-modal på drift-siden (2026-06-10) ════ */
.pln-stc__loading{ padding:28px 12px; text-align:center; color:var(--color-text-3); font-size:.85rem; }
.pln-stc__intro{ font-size:.82rem; line-height:1.5; color:var(--color-text-2); margin:0 0 14px; }
.pln-stc__filters{ display:flex; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.pln-stc__filters #stc-search{ flex:1 1 200px; min-width:0; }
.pln-stc__filters #stc-catfilter{ flex:0 0 auto; min-width:175px; }
.pln-stc__count{ font-size:.72rem; color:var(--color-text-3); margin-bottom:8px; }
.pln-stc__tablewrap{ max-height:54vh; overflow:auto; border:1px solid var(--color-border); border-radius:10px; }
.pln-stc__table{ width:100%; border-collapse:collapse; font-size:.82rem; }
.pln-stc__table th{ position:sticky; top:0; background:var(--color-card-solid); text-align:left; font-size:.65rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-3); padding:9px 12px; border-bottom:1px solid var(--color-border); z-index:1; }
.pln-stc__table th.num, .pln-stc__table td.num{ text-align:right; font-variant-numeric:tabular-nums; }
.pln-stc__table td{ padding:6px 12px; border-bottom:1px solid var(--color-border); color:var(--color-text-1); vertical-align:middle; }
.pln-stc__table tbody tr:last-child td{ border-bottom:none; }
.pln-stc__table td.proj{ color:var(--color-text-3); font-size:.73rem; }
.pln-stc__cat{ width:100%; min-width:130px; padding:5px 8px; box-sizing:border-box; }

/* Inline-guide i Vis (2026-06-10) */
.pln-vis-guide{ margin:11px 0 0; padding:10px 12px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:9px; }
.pln-vis-guide__t{ font-size:.76rem; font-weight:700; color:var(--color-text-1); margin-bottom:3px; }
.pln-vis-guide__b{ font-size:.7rem; line-height:1.45; color:var(--color-text-3); }
.pln-vis-guide__steps{ display:flex; flex-direction:column; gap:6px; margin-top:9px; }
.pln-vis-guide__step{ display:block; width:100%; text-align:left; padding:7px 10px; background:rgba(var(--accent-rgb),0.1); border:1px solid rgba(var(--accent-rgb),0.28); border-radius:7px; color:var(--accent-ink, var(--color-accent)); font:inherit; font-size:.72rem; font-weight:600; cursor:pointer; }
.pln-vis-guide__step:hover{ background:rgba(var(--accent-rgb),0.18); }
/* 2026-07-10: "\2192 " → "\2192\00a0" — et alm. mellemrum TERMINERER CSS-escapen
   og bliver ædt, så pilen klistrede på teksten ("→Sæt dag-behov"). */
.pln-vis-guide__step::before{ content:"\2192\00a0"; }

/* Svar-banner over metrik-rækken (2026-06-10) */
.pln-bem__answer{ margin:0 0 10px; padding:12px 14px; background:var(--color-surface); border:1px solid var(--color-border); border-left:3px solid var(--color-accent); border-radius:10px; }
.pln-bem__answer.is-green{ border-left-color:var(--color-success); }
.pln-bem__answer.is-yellow{ border-left-color:var(--color-warn); }
.pln-bem__answer.is-red{ border-left-color:var(--color-danger); }
.pln-bem__answer-q{ font-size:.63rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-3); }
.pln-bem__answer-t{ font-size:.95rem; font-weight:600; color:var(--color-text-1); line-height:1.4; margin-top:4px; }
.pln-bem__answer-assum{ font-size:.72rem; color:var(--color-text-3); margin-top:6px; }
.pln-bem__answer-leg{ display:flex; flex-wrap:wrap; gap:13px; margin-top:9px; }
.pln-bem__leg-chip{ display:inline-flex; align-items:center; gap:6px; font-size:.72rem; color:var(--color-text-2); }
.pln-bem__leg-sw{ width:12px; height:12px; border-radius:3px; display:inline-block; flex:0 0 auto; }
.pln-bem__leg-sw.is-green{ background:color-mix(in srgb, var(--color-success) 60%, transparent); }
.pln-bem__leg-sw.is-yellow{ background:color-mix(in srgb, var(--color-warn) 60%, transparent); }
.pln-bem__leg-sw.is-red{ background:color-mix(in srgb, var(--color-danger) 60%, transparent); }
.pln-bem__leg-sw.is-neutral{ background:var(--color-text-3); }
.pln-bem__leg-sw.is-heat2{ background:color-mix(in srgb, var(--color-warn) 50%, transparent); }
.pln-bem__leg-sw.is-heat4{ background:color-mix(in srgb, var(--color-danger) 55%, transparent); }

.pln-bem__answer-btn{ margin-top:11px; padding:8px 14px; background:var(--color-accent); color:var(--on-accent-ink, var(--color-on-accent, #fff)); border:none; border-radius:8px; font:inherit; font-size:.78rem; font-weight:700; cursor:pointer; }
.pln-bem__answer-btn:hover{ filter:brightness(1.06); }

/* Luk-periode (aftenvagt) + uge-for-uge kapacitets-tabel (closeEvening-preset) */
.pln-bem__closure{ display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-top:9px; font-size:.78rem; color:var(--color-text-2); }
.pln-bem__closedinp{ font:inherit; font-size:.76rem; padding:3px 6px; border:1px solid color-mix(in srgb, var(--color-text-3) 45%, transparent); border-radius:6px; background:transparent; color:inherit; }
.pln-bem__closure-dash{ color:var(--color-text-3); }
.pln-bem__closure-hint{ font-size:.7rem; color:var(--color-text-3); }
.pln-bem__weeks{ margin:12px 0 4px; }
.pln-bem__weeks-h{ font-weight:700; font-size:.84rem; display:flex; flex-wrap:wrap; gap:8px; align-items:baseline; margin-bottom:7px; }
.pln-bem__weeks-sub{ font-weight:400; font-size:.72rem; color:var(--color-text-3); }
.pln-bem__weeks-scroll{ overflow-x:auto; }
.pln-bem__weekstbl{ border-collapse:collapse; width:100%; font-size:.76rem; min-width:560px; }
.pln-bem__weekstbl th, .pln-bem__weekstbl td{ padding:5px 8px; text-align:right; border-bottom:1px solid color-mix(in srgb, var(--color-text-3) 22%, transparent); white-space:nowrap; }
.pln-bem__weekstbl th:first-child, .pln-bem__weekstbl td:first-child, .pln-bem__weekstbl th:last-child, .pln-bem__weekstbl td:last-child{ text-align:left; }
.pln-bem__weekstbl thead th{ color:var(--color-text-3); font-weight:600; }
.pln-bem__weekstbl tbody tr.is-green{ background:color-mix(in srgb, var(--color-success) 9%, transparent); }
.pln-bem__weekstbl tbody tr.is-yellow{ background:color-mix(in srgb, var(--color-warn) 11%, transparent); }
.pln-bem__weekstbl tbody tr.is-red{ background:color-mix(in srgb, var(--color-danger) 12%, transparent); }
.pln-bem__weekstbl tbody tr.is-partial{ opacity:.72; }
.pln-bem__weekstbl td .pln-bem__leg-sw{ vertical-align:middle; margin-right:4px; }
.pln-bem__weeks-tag{ font-size:.64rem; color:var(--color-text-3); border:1px solid color-mix(in srgb, var(--color-text-3) 35%, transparent); border-radius:3px; padding:0 4px; }
.pln-bem__weeks-over{ color:var(--color-danger); font-weight:700; }
.pln-bem__weeks-note{ font-size:.72rem; color:var(--color-text-3); margin-top:7px; line-height:1.45; }
.pln-bem__weeks-empty{ font-size:.78rem; color:var(--color-text-3); padding:10px 2px; }

/* Drift-forslag (auto fra preset) — ghosted, klik for at fastlåse (2026-06-10) */
.pln-bem__drift.is-suggested{ color:var(--accent-ink, var(--color-accent)); font-style:italic; opacity:.82; background:rgba(var(--accent-rgb),0.06); }

/* Kolonne-overskrift: ugedag + tydelig dato d/m i to linjer (2026-06-10) */
.pln-bem__colh{ display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1.05; gap:1px; white-space:nowrap; overflow:visible; text-overflow:clip; padding:4px 2px; }
.pln-bem__colh-date{ font-size:.62rem; font-weight:700; color:var(--color-text-2); font-variant-numeric:tabular-nums; }

/* ════ Drift svar-helt: verdict-kalender som hovedelement (2026-06-10) ════ */
.pln-drift-hero{ margin:0 0 14px; padding:14px 16px; background:var(--color-surface); border:1px solid var(--color-border); border-left:4px solid var(--color-accent); border-radius:12px; }
.pln-drift-hero.is-green{ border-left-color:var(--color-success); }
.pln-drift-hero.is-yellow{ border-left-color:var(--color-warn); }
.pln-drift-hero.is-red{ border-left-color:var(--color-danger); }
.pln-drift-hero__head{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.pln-drift-hero__q{ font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-3); }
.pln-drift-hero__btn{ margin:0 !important; }
.pln-drift-hero__t{ font-size:1.05rem; font-weight:700; color:var(--color-text-1); line-height:1.35; margin-top:5px; }
.pln-drift-hero__assum{ font-size:.74rem; color:var(--color-text-3); margin-top:6px; }
.pln-drift-cal{ display:grid; grid-template-columns:repeat(7, 1fr); gap:6px; margin-top:14px; }
.pln-drift-cal__wd{ font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--color-text-3); text-align:center; padding-bottom:1px; }
.pln-drift-tile{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; padding:8px 4px; border-radius:9px; background:var(--color-card-solid); border:1px solid var(--color-border); min-height:56px; }
.pln-drift-tile__date{ font-size:.63rem; font-weight:600; color:var(--color-text-3); font-variant-numeric:tabular-nums; }
.pln-drift-tile__v{ font-size:.8rem; font-weight:800; color:var(--color-text-2); }
.pln-drift-tile__n{ font-size:.63rem; color:var(--color-text-3); font-variant-numeric:tabular-nums; }
.pln-drift-tile.is-green{ background:color-mix(in srgb, var(--color-success) 16%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-success) 38%, transparent); }
.pln-drift-tile.is-green .pln-drift-tile__v{ color:var(--color-success); }
.pln-drift-tile.is-yellow{ background:color-mix(in srgb, var(--color-warn) 18%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-warn) 40%, transparent); }
.pln-drift-tile.is-yellow .pln-drift-tile__v{ color:var(--color-warn); }
.pln-drift-tile.is-red{ background:color-mix(in srgb, var(--color-danger) 16%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-danger) 38%, transparent); }
.pln-drift-tile.is-red .pln-drift-tile__v{ color:var(--color-danger); }
.pln-drift-tile.is-heat2{ background:color-mix(in srgb, var(--color-warn) 16%, var(--color-card-solid)); }
.pln-drift-tile.is-heat4{ background:color-mix(in srgb, var(--color-danger) 18%, var(--color-card-solid)); }
@media (max-width:560px){ .pln-drift-tile{ min-height:46px; padding:5px 2px; } .pln-drift-tile__v{ font-size:.7rem; } }
/* foldbar detaljeret bemanding (matrixen) */
.pln-bem__detail{ margin-top:4px; }
.pln-bem__detail-sum{ cursor:pointer; font-size:.78rem; font-weight:600; color:var(--color-text-2); padding:9px 12px; border:1px solid var(--color-border); border-radius:9px; background:var(--color-surface); list-style:none; user-select:none; display:flex; align-items:center; gap:8px; }
.pln-bem__detail-sum::-webkit-details-marker{ display:none; }
.pln-bem__detail-sum::before{ content:'\25B8'; color:var(--color-text-3); transition:transform .15s; }
.pln-bem__detail[open] > .pln-bem__detail-sum::before{ transform:rotate(90deg); }
.pln-bem__detail-sum:hover{ color:var(--color-text-1); background:var(--color-card-solid); }
.pln-bem__detail[open] > .pln-bem__detail-sum{ margin-bottom:10px; }

/* Simpelt dag-behov-felt i Bemandingsbehov (2026-06-11) */
.pln-bem-crit__simple{ background:rgba(var(--accent-rgb),0.07); border:1px solid rgba(var(--accent-rgb),0.25); border-radius:10px; padding:11px 12px; margin-bottom:15px; }
.pln-bem-crit__simplerow{ display:flex; align-items:center; gap:8px; margin:7px 0 5px; }
.pln-bem-crit__simplenum{ width:84px !important; font-size:1.05rem !important; font-weight:700; text-align:center; padding:8px !important; }
.pln-bem-crit__simplerow span{ font-size:.8rem; color:var(--color-text-2); }

/* ════ DRIFT-FORSIDE (TOTAL OVERHAUL 2026-06-11): ét spørgsmål, ét svar ════ */
.pln-da{ max-width:940px; }
.pln-da__loading{ padding:32px; text-align:center; color:var(--color-text-3); font-size:.9rem; }
.pln-da__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pln-da__q{ font-size:1.3rem; font-weight:800; color:var(--color-text-1); letter-spacing:-.01em; }
.pln-da__ctx{ display:flex; align-items:center; gap:8px; }
.pln-da__ctxbtn{ background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; padding:6px 12px; font:inherit; font-size:.82rem; font-weight:600; color:var(--color-text-1); cursor:pointer; }
.pln-da__ctxbtn:hover{ background:var(--color-card-solid); }
.pln-da__locsel{ padding:6px 10px; border-radius:8px; font-size:.82rem; max-width:170px; }
.pln-da__periodbar{ margin:8px 0; }
.pln-da__pb{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; padding:10px 12px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px; }
.pln-da__pb label{ display:flex; align-items:center; gap:6px; font-size:.8rem; }
.pln-da__answer{ font-size:1.55rem; font-weight:700; line-height:1.35; color:var(--color-text-1); margin:14px 0 4px; }
.pln-da__answer b{ color:var(--color-success); }
.pln-da__worst{ display:block; font-size:.95rem; font-weight:500; color:var(--color-text-2); margin-top:7px; line-height:1.45; }
.pln-da__prelimnote{ font-size:.8rem; color:var(--color-warn); font-weight:600; margin-bottom:10px; }
.pln-da__assume{ background:var(--color-surface); border:1px solid var(--color-border); border-radius:12px; padding:13px 16px; margin:12px 0; }
.pln-da--prelim .pln-da__assume{ background:color-mix(in srgb, var(--color-warn) 9%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-warn) 40%, transparent); }
.pln-da__assume-row{ font-size:.95rem; color:var(--color-text-1); display:flex; flex-wrap:wrap; align-items:center; gap:7px; line-height:2.1; }
.pln-da__assume-hint{ font-size:.74rem; color:var(--color-text-3); margin-top:7px; line-height:1.4; }
.pln-da__step{ display:inline-flex; align-items:center; border:1px solid var(--color-border); border-radius:8px; overflow:hidden; background:var(--color-card-solid); }
.pln-da__step button{ border:none; background:transparent; color:var(--color-text-2); font-size:1.15rem; font-weight:700; width:30px; height:32px; cursor:pointer; line-height:1; }
.pln-da__step button:hover{ background:var(--color-surface); color:var(--color-text-1); }
.pln-da__step b{ min-width:30px; text-align:center; font-size:1rem; font-weight:800; color:var(--color-text-1); }
.pln-da__confirm{ margin-left:6px; }
.pln-da__spread{ font-size:.88rem; color:var(--color-text-2); margin:8px 0 16px; }
.pln-da__spread b{ color:var(--color-text-1); }
.pln-da__spread-safe b{ color:var(--color-success); }
.pln-da__weeks{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:11px; }
.pln-da__wchip{ font-size:.72rem; font-weight:700; padding:4px 11px; border-radius:7px; color:#fff; }
.pln-da__wchip.is-green{ background:var(--color-success); }
.pln-da__wchip.is-yellow{ background:var(--color-warn); }
.pln-da__wchip.is-red{ background:var(--color-danger); }
.pln-da__grid{ display:grid; grid-template-columns:auto repeat(7,minmax(0,1fr)); gap:5px; align-items:stretch; }
.pln-da__gwd{ font-size:.62rem; font-weight:700; text-transform:uppercase; color:var(--color-text-3); text-align:center; padding-bottom:2px; }
.pln-da__gwk{ font-size:.66rem; font-weight:700; color:var(--color-text-3); padding-right:8px; display:flex; align-items:center; }
.pln-da__gcell{ min-height:44px; border-radius:8px; border:1px solid var(--color-border); display:flex; align-items:center; justify-content:center; cursor:pointer; background:var(--color-card-solid); position:relative; }
.pln-da__gcell.is-empty{ background:transparent; border:none; cursor:default; }
.pln-da__gdate{ font-size:.64rem; font-weight:600; color:var(--color-text-2); font-variant-numeric:tabular-nums; }
.pln-da__gcell.is-green{ background:color-mix(in srgb, var(--color-success) 26%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-success) 45%, transparent); }
.pln-da__gcell.is-yellow{ background:color-mix(in srgb, var(--color-warn) 30%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-warn) 50%, transparent); }
.pln-da__gcell.is-red{ background:color-mix(in srgb, var(--color-danger) 26%, var(--color-card-solid)); border-color:color-mix(in srgb, var(--color-danger) 45%, transparent); }
.pln-da__gcell:not(.is-empty):hover{ outline:2px solid var(--color-accent); outline-offset:-1px; }
.pln-da__gcell.has-pending::after{ content:''; position:absolute; top:3px; right:3px; width:5px; height:5px; border-radius:50%; background:var(--color-warn); }
.pln-da--prelim .pln-da__grid, .pln-da--prelim .pln-da__weeks{ opacity:.55; filter:saturate(.65); }
.pln-da--prelim .pln-da__answer b{ color:var(--color-text-2); }
.pln-da__legend{ display:flex; flex-wrap:wrap; gap:15px; margin-top:11px; font-size:.74rem; color:var(--color-text-2); }
.pln-da__lg{ display:inline-flex; align-items:center; gap:6px; }
.pln-da__lg::before{ content:''; width:12px; height:12px; border-radius:3px; }
.pln-da__lg.is-green::before{ background:var(--color-success); }
.pln-da__lg.is-yellow::before{ background:var(--color-warn); }
.pln-da__lg.is-red::before{ background:var(--color-danger); }
.pln-da__detail{ margin:12px 0; }
.pln-da__detbox{ padding:12px 14px; border-radius:10px; border:1px solid var(--color-border); border-left:3px solid var(--color-text-3); background:var(--color-surface); }
.pln-da__detbox.is-green{ border-left-color:var(--color-success); }
.pln-da__detbox.is-yellow{ border-left-color:var(--color-warn); }
.pln-da__detbox.is-red{ border-left-color:var(--color-danger); }
.pln-da__dethd{ font-size:.85rem; font-weight:700; color:var(--color-text-1); margin-bottom:5px; }
.pln-da__dettxt{ font-size:.84rem; line-height:1.5; color:var(--color-text-2); margin-bottom:9px; }
.pln-da__actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:20px; padding-top:15px; border-top:1px solid var(--color-border); }
.pln-da__roster{ margin-top:18px; }
.pln-da__roster > summary{ cursor:pointer; font-size:.85rem; font-weight:600; color:var(--color-text-2); padding:10px 13px; border:1px solid var(--color-border); border-radius:9px; background:var(--color-surface); list-style:none; }
.pln-da__roster > summary::-webkit-details-marker{ display:none; }
.pln-da__roster > summary:hover{ color:var(--color-text-1); }
.pln-da__roster[open] > summary{ margin-bottom:12px; }

/* Rig drift-svar-header: steppers + best/worst + foreløbig (2026-06-11) */
.pln-bem__answer-t--big{ font-size:1.2rem !important; font-weight:700 !important; }
.pln-bem__answer.is-prelim{ border-left-color:var(--color-warn) !important; }
.pln-bem__assume{ font-size:.86rem; color:var(--color-text-1); margin:11px 0 8px; line-height:2.3; }
.pln-bem__step{ display:inline-flex; align-items:center; border:1px solid var(--color-border); border-radius:7px; overflow:hidden; background:var(--color-card-solid); vertical-align:middle; }
.pln-bem__step button{ border:none; background:transparent; color:var(--color-text-2); font-size:1.05rem; font-weight:700; width:26px; height:28px; cursor:pointer; line-height:1; }
.pln-bem__step button:hover{ background:var(--color-surface); color:var(--color-text-1); }
.pln-bem__step b{ min-width:26px; text-align:center; font-size:.9rem; font-weight:800; color:var(--color-text-1); padding:0 2px; }
.pln-bem__spread{ font-size:.84rem; color:var(--color-text-2); margin:4px 0 8px; }
.pln-bem__spread b{ color:var(--color-text-1); }
.pln-bem__prelimnote{ font-size:.76rem; color:var(--color-warn); font-weight:600; margin-bottom:4px; }

/* ════ PRINT-VENLIG UGEPLAN (2026-07-10, feature-GO) ════════════════════════
   Ctrl+P/Cmd+P på Plan-fanen giver nu en ren ugeplan: chrome (sidebar, filtre,
   knapper, banners) skjules, grid'et foldes ud i fuld bredde på hvid baggrund.
   Gælder alle planner-flader; grid-tabellen får page-break-venlige rækker. */
@media print {
    .pln-sidebar, .pln-topbar, .pln-filter-bar, .pln-toast-host, .pln-modal,
    .pln-btn, button, .pln-cost-strip, .pln-banner, .pln-quota-banner,
    .phn-appbar, .phn-tabbar { display: none !important; }
    .pln-shell { display: block !important; }
    .pln-main { padding: 0 !important; max-width: none !important; overflow: visible !important; }
    body { background: #fff !important; color: #000 !important; }
    .pln-week-grid, .pln-roster, .pln-tablewrap { overflow: visible !important; max-height: none !important; }
    .pln-roster tr, .pln-week-grid tr { break-inside: avoid; }
    a[href]::after { content: none !important; } /* ingen URL-haler i print */
}
