/* static/css/landing/desk_kit.css — the desktop app's components, re-typed for the signed-out landing ("Rooms").
   Markup: templates/landing/desk/_kit.html (macros). Kit root: .lk — every selector here starts with ".lk ", so nothing
   leaks into the frame (rooms.css) or the app. Values are the app's own Paper skins, copied; tokens are paper.css's
   (--dk-card #F8F2E1, --dk-back #F3EBD6, --dk-ink #1C1A14, --dk-ink2 #3F3A2D, --dk-muted #6E6751, --dk-gold #E8A020,
   --dk-gold-t #A86A00, --dk-red #B3261E, --dk-green #1C7A48, --dk-acc = the team accent). Each block names the app
   file and lines it mirrors: when the app's skin changes, change the same block here.
   Widths: pane pieces are drawn for the Messenger pane (380 wide, 20px gutters); the rest shrink with their card. */

.lk *,.lk *::before,.lk *::after{box-sizing:border-box}

/* ── 1 · League chat row (AI GM) — desk/messenger_pane.html 34-48 (#panelLeague .msg…), markup league/chat.html renderMsg 593-621 ── */
.lk .msg{display:block;margin:0;padding:0}
.lk .msg>.av{display:none}
.lk .msg-b{display:block;max-width:none}
.lk .msg-h{display:flex;gap:6px;align-items:center;margin:0 0 4px;font:500 10px/1 var(--dk-label);letter-spacing:.06em;color:var(--dk-muted)}
.lk .msg-t{color:var(--dk-ink);font:600 10px/1 var(--dk-label);letter-spacing:.06em}
.lk .tag-ai{font:600 8.5px/1 var(--dk-label);letter-spacing:.06em;color:var(--dk-acc,#5D3F8E);border:1px solid rgba(93,63,142,.5);border-radius:3px;padding:2px 3px;text-transform:uppercase}
.lk .msg-x{display:inline-block;max-width:min(296px,100%);background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-radius:10px 10px 10px 3px;padding:8px 11px;
  font:400 12.5px/1.42 var(--dk-body);text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}

/* ── 2 · DM bubbles — desk/pane_dms.html 185-194 (#dmMessages .row / .bub / .bub-x / .bub-t), markup league/chat.html renderDm 903-919 ── */
.lk .row{display:block;margin:0;padding:0}
.lk .bub{display:block;margin:0;padding:0}
.lk .bub.sent{align-self:flex-end;text-align:right}
.lk .bub-x{display:inline-block;max-width:min(296px,100%);padding:8px 11px;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;font:400 12.5px/1.42 var(--dk-body)}
.lk .bub.recv .bub-x{background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-radius:10px 10px 10px 3px}
.lk .bub.sent .bub-x{background:var(--dk-acc,#5D3F8E);color:#fff;border:1px solid var(--dk-acc,#5D3F8E);border-radius:10px 10px 3px 10px}
.lk .bub-t{display:block;margin:4px 0 0;font:400 9.5px/1 var(--dk-label);letter-spacing:.06em;color:var(--dk-muted)}
.lk .bub.sent .bub-t{text-align:right}

/* ── 3 · Negotiation offer card — desk/pane_dms.html 222-262 (#dmMessages .card … .tr-a), markup league/chat.html renderNegoPrice 942-947 + partials/messenger_js.html tradeSide 71-76 ── */
.lk .card{display:block;width:316px;max-width:100%;overflow:hidden;background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-left:3px solid var(--tc,#1C1A14);border-radius:4px}
.lk .card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 11px 6px;border-bottom:var(--dk-dot)}
.lk .card-h>span:first-child{min-width:0;font:500 10px/1.2 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lk .card-h>span+span{flex:none;font:600 8.5px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-gold-t);border:1px solid rgba(168,106,0,.55);border-radius:3px;padding:2px 4px;white-space:nowrap;max-width:50%;overflow:hidden;text-overflow:ellipsis}
.lk .tr-g{display:block}
.lk .tr-s{display:block;padding:7px 11px 6px;min-width:0}
.lk .tr-s+.tr-s{border-top:var(--dk-dot)}
.lk .tr-l{display:block;margin:0 0 4px;font:600 9.5px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-ink)}
.lk .it{display:flex;align-items:baseline}
.lk .it>div:last-child{flex:1;min-width:0;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.lk .it-n{display:inline;min-width:0;border-bottom:1px solid rgba(28,26,20,.22);font:600 12px/1.55 var(--dk-body);color:var(--dk-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk .it-m{flex:none;font:400 10.5px/1 var(--dk-label);color:var(--dk-ink2);white-space:nowrap}
.lk .tr-a{display:flex;align-items:center;gap:14px;padding:9px 11px 11px;border-top:1px solid var(--dk-rule)}
.lk .tr-a .b{flex:none;font:500 10px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-acc,#5D3F8E)}
.lk .tr-a .b.ng-go{display:inline-flex;align-items:center;height:30px;padding:0 13px;border:2px solid var(--dk-ink);border-radius:6px;background:var(--dk-acc,#5D3F8E);color:#fff;box-shadow:0 3px 0 var(--dk-ink);font:600 11px/1 var(--dk-label);letter-spacing:.06em}

/* ── 4 · Media post — desk/pane_media.html 75-97 (#panelMedia #mdFeed .md-post …), markup partials/media_ui.html mdPost 414-416 + mdHead 380 ── */
.lk .md-post{display:flex;gap:9px;margin:0;padding:9px 0 7px;border-top:1px solid var(--dk-rule)}
.lk .md-post:first-child{border-top:0}
.lk .md-av{width:28px;height:28px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--dk-ink2);font:600 10px/1 var(--dk-display);letter-spacing:.04em;color:#fff}
.lk .md-b{flex:1;min-width:0}
.lk .md-h{display:flex;align-items:center;gap:5px;min-width:0;white-space:nowrap;overflow:hidden;font:400 9.5px/1.25 var(--dk-label);color:var(--dk-muted)}
.lk .md-n{flex:none;font:500 12.5px/1.1 var(--dk-display);letter-spacing:.03em;text-transform:uppercase;color:var(--dk-ink)}
.lk .md-hd{min-width:0;overflow:hidden;text-overflow:ellipsis;font:400 9.5px/1.25 var(--dk-label);color:var(--dk-muted)}
.lk .md-t{margin:5px 0 0;font:400 12px/1.42 var(--dk-body);color:var(--dk-ink);white-space:pre-line;overflow-wrap:anywhere}

/* ── 5 · The Show's ask + grade ladder — markup partials/show_ui.html tshCard 74-84 / tshLadder 70-71. The app has NO desk skin
   for these: restyled in Paper with the DM card's rules (desk/pane_dms.html 222-262: card frame, .card-h, .tr-note, .ng-chip.gold);
   the host line is the media header (.md-h) with the show avatar of desk/pane_dms.html 90-91 ── */
.lk .tsh{display:block}
.lk .tsh>.md-h{margin:0 0 6px;gap:6px}
.lk .tsh>.md-h .md-av{width:18px;height:18px;font:600 8px/18px var(--dk-label);letter-spacing:0}
.lk .tsh-card{display:block;width:316px;max-width:100%;overflow:hidden;background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-left:3px solid var(--tc,var(--dk-gold));border-radius:4px}
.lk .tsh-card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 11px 6px;border-bottom:var(--dk-dot);font:500 10px/1.2 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-ink)}
.lk .tsh-card-b{padding:7px 11px 9px}
.lk .tsh-topic{font:600 12px/1.4 var(--dk-body);color:var(--dk-ink);overflow-wrap:anywhere}
.lk .tsh-lad{display:flex;gap:6px;padding:0 11px 11px}
.lk .tsh-lad div{flex:1;min-width:0;padding:7px 4px;border:1px solid var(--dk-rule2);border-radius:4px;text-align:center}
.lk .tsh-lad div.on{border-color:var(--dk-gold);background:rgba(232,160,32,.18)}
.lk .tsh-lad small{display:block;font:500 9.5px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-muted);white-space:nowrap}
.lk .tsh-lad div.on small{color:var(--dk-ink);font-weight:600}

/* ── 6 · State of the Game feed card — frame desk/pane_media.html 111 (.md-sg), inside partials/media_ui.html 295-306 (rem × 16), markup mdSotg 382-388 ── */
.lk .md-sg{display:flex;flex-direction:column;text-decoration:none;color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-radius:4px;background:var(--dk-card);overflow:hidden}
.lk .md-t+.md-sg{margin-top:6px}
.lk .md-sg-m{background-color:#1D428A;background-image:radial-gradient(rgba(255,255,255,.14) 1.2px,transparent 1.4px),linear-gradient(152deg,#1D428A 0 56%,#C8102E 56% 100%);background-size:8px 8px,100% 100%;padding:12px;display:flex;align-items:center;gap:10px;border-bottom:2px solid var(--dk-ink)}
.lk .md-sg-m img{width:34px;height:34px;border-radius:7px;border:1.5px solid var(--dk-ink);flex:none;background:var(--dk-ink)}
.lk .md-sg-m div{display:flex;flex-direction:column;min-width:0}
.lk .md-sg-t{font:italic 700 22px/1 var(--dk-display);text-transform:uppercase;color:var(--dk-gold);-webkit-text-stroke:1px var(--dk-ink);text-shadow:2px 2px 0 var(--dk-ink)}
.lk .md-sg-v{font:600 9px/1.2 var(--dk-label);letter-spacing:.16em;color:var(--dk-back);margin-top:4px}
.lk .md-sg-b{padding:12px;display:flex;gap:12px;align-items:center}
.lk .md-sg-b svg{width:64px;height:64px;flex:none}
.lk .md-sg-th{width:52px;height:auto;flex:none;border:2px solid var(--dk-ink);border-radius:7px;box-shadow:2px 2px 0 var(--dk-ink);background:#0b0a08}
.lk .md-sg-b div{display:flex;flex-direction:column;gap:4px;min-width:0}
.lk .md-sg-b b{font:700 17px/1.15 var(--dk-display);text-transform:uppercase;color:var(--dk-ink)}
.lk .md-sg-r{font:700 10px/1.2 var(--dk-label);letter-spacing:.14em;color:var(--dk-gold-t)}

/* ── 7 · Play-by-play row — desk/mobile_boxscore.html 123-132 (.eg-pr), markup 328-330. The page's columns are 56 / 54 / text / 72 (score)
   on a 1040 sheet; here the clock and tag columns are tightened for a pane or a small card and the score column is dropped
   (the demo plays carry no running score); .w is the landing's second line, in the row's muted style (.eg-pr .c) ── */
.lk .eg-pr{display:grid;grid-template-columns:34px 42px minmax(0,1fr);column-gap:8px;align-items:start;min-height:26px;padding:5px 4px 5px 2px;border-bottom:1px solid rgba(28,26,20,.10);font:400 12px/1.35 var(--dk-body);color:var(--dk-ink2)}
.lk .eg-pr .c{font:400 11px/1 var(--dk-label);color:var(--dk-muted);padding-top:3px}
.lk .eg-pr .k{justify-self:start;font:600 8.5px/1 var(--dk-label);letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(28,26,20,.25);border-radius:3px;padding:3px 5px;color:var(--dk-ink2);white-space:nowrap}
.lk .eg-pr .k.mk{border-color:rgba(28,122,72,.5);color:var(--dk-green)}
.lk .eg-pr .k.ms{color:var(--dk-muted)}
.lk .eg-pr .k.bad{border-color:rgba(179,38,30,.45);color:var(--dk-red)}
.lk .eg-pr b{color:var(--dk-ink);font-weight:600}
.lk .eg-pr .x{min-width:0;overflow-wrap:anywhere}
.lk .eg-pr .w{display:block;margin-top:3px;font:400 10.5px/1.35 var(--dk-label);color:var(--dk-muted)}

/* ── 8 · Score header — desk/mobile_boxscore.html 49-62 (table.eg-ls, .eg-flag, .eg-tn, .eg-w), markup 177-190. The page's table is 560 wide
   with a column per quarter; here it is the team cell and the total, full width of its pane ── */
.lk .eg-ls{width:100%;border-collapse:collapse;table-layout:fixed}
.lk .eg-ls th{height:26px;font:500 9.5px/1 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-muted);text-align:center;border-bottom:1px solid var(--dk-rule2)}
.lk .eg-ls th.st{text-align:left;padding-left:8px}
.lk .eg-ls th:last-child{width:70px}
.lk .eg-ls td{height:46px;text-align:center;font:400 15px/1 var(--dk-label);color:var(--dk-ink2);border-bottom:var(--dk-dot)}
.lk .eg-ls td.tot{font:500 26px/1 var(--dk-display);color:var(--dk-ink)}
.lk .eg-ls td.tot.dim{color:var(--dk-muted)}
.lk .eg-ls td.tm{text-align:left;padding-left:8px;white-space:nowrap}
.lk .eg-ls tr.mine td.tm{box-shadow:inset 3px 0 0 var(--dk-acc,#5D3F8E)}
.lk .eg-flag{display:inline-flex;align-items:center;justify-content:center;width:40px;height:26px;border-radius:3px;font:700 12px/1 var(--dk-display);letter-spacing:.05em;vertical-align:middle;margin-right:10px}
.lk .eg-tn{display:inline-block;vertical-align:middle}
.lk .eg-tn b{display:block;font:500 17px/1 var(--dk-display);letter-spacing:.03em;text-transform:uppercase;color:var(--dk-ink)}
.lk .eg-tn small{display:block;font:400 10px/1 var(--dk-label);color:var(--dk-muted);margin-top:4px;letter-spacing:.04em}
.lk .eg-w{display:inline-flex;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--dk-green);color:var(--dk-green);align-items:center;justify-content:center;font:700 11px/1 var(--dk-display);margin-left:10px;vertical-align:middle;transform:rotate(-8deg)}

/* ── 9 · Payroll ledger + cap figure — desk/team/contracts.html 44-73 (.et-led, .et-cap), 26-27 + 108 (.et-ink), desk/team/_css.html 2 (.mp-lab),
   desk/team/overview.html 19-20 (.et-r/.et-g), markup contracts.html 145-191. The page's ledger has ten fixed columns on an 868 sheet; here it is
   the player and the seasons: season columns sized by content, the player column takes the rest (ellipsis when tight, labels in the foot wrap); the stamp sits beside the figure in a row instead of absolutely (it must not cover it in a small card) ── */
.lk .et-cg{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
.lk .mp-lab{font:500 10px/1.2 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-muted)}
.lk .et-led{width:100%;border-collapse:collapse}
.lk .et-led th{font:500 9.5px/1 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-muted);text-align:right;padding:0 8px;height:30px;border-bottom:1px solid var(--dk-rule2);white-space:nowrap}
.lk .et-led th.l,.lk .et-led td.l{text-align:left}
.lk .et-led th.l{padding-left:2px;width:100%}
.lk .et-led th.l,.lk .et-led td.pl,.lk .et-led tfoot td.l{max-width:0}
.lk .et-led th.on{color:var(--dk-ink)}
.lk .et-led th.yr{background:#F1E8D2}
.lk .et-led td{font:400 12px/1 var(--dk-label);text-align:right;padding:0 8px;height:24px;border-bottom:1px solid rgba(28,26,20,.10);color:var(--dk-ink2);white-space:nowrap}
.lk .et-led td.pl{font:500 13px/1 var(--dk-body);color:var(--dk-ink);text-align:left;padding-left:2px;overflow:hidden;text-overflow:ellipsis}
.lk .et-led td.pl small{font:400 10.5px/1 var(--dk-label);color:var(--dk-muted);margin-left:7px}
.lk .et-led td.cur{color:var(--dk-ink);font-weight:600;background:#F1E8D2}
.lk .et-led td.nil{color:#A39B84}
.lk .et-led tfoot td{height:30px;border-bottom:0;border-top:2px solid var(--dk-ink);font:600 14px/1 var(--dk-display);color:var(--dk-ink);letter-spacing:.02em}
.lk .et-led tfoot td.l{font:500 9.5px/1.3 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;padding:5px 8px 5px 2px;white-space:normal}
.lk .et-led tfoot tr.vs td{border-top:1px solid var(--dk-rule);height:26px;font:500 12px/1 var(--dk-label)}
.lk .et-led tfoot tr.vs td.l{color:var(--dk-muted);font:500 9.5px/1.3 var(--dk-label)}
.lk .et-led tfoot td.nil{color:#A39B84}
.lk .et-led .et-r{color:var(--dk-red)}
.lk .et-led .et-g{color:var(--dk-green)}
.lk .et-cap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:2px 0 0}
.lk .et-cap-v{font:500 42px/1 var(--dk-display);margin-top:8px;color:var(--dk-ink)}
.lk .et-cap-s{font:400 11px/1.5 var(--dk-label);color:var(--dk-muted);margin-top:6px}
.lk .et-ink{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid var(--dk-red);color:var(--dk-red);border-radius:4px;padding:6px 12px 5px;margin-right:6px;transform:rotate(-6deg);font:700 15px/1 var(--dk-display);letter-spacing:.06em;text-transform:uppercase;background:rgba(248,242,225,.6);white-space:nowrap}
.lk .et-ink small{font:600 9px/1 var(--dk-label);letter-spacing:.1em;margin-top:4px}
.lk .et-ink.grn{border-color:var(--dk-green);color:var(--dk-green)}

/* ── 10 · Scout's read — desk/mobile_development.html 17 (.eu-lab), 44 (.eu-pos), 37-39 (.eu-stamp), 48-51 (.eu-scout/.eu-sav/.eu-sid),
   65-70 (.eu-gcard/.eu-quote/.eu-qa), markup 144-146 (scout strip) + 223-237 (the report slide-out, whose player line and trend line are
   inline styles in the app: named .eu-ph / .eu-pn / .eu-tr here). The strip is 84 high and one line in the app; here it grows with the scout's read, and the grade card wraps under the name in a narrow card ── */
.lk .eu-sl{display:flex;flex-direction:column}
.lk .eu-lab{font:500 9.5px/1.2 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-muted)}
.lk .eu-scout{display:flex;align-items:center;gap:18px;min-height:84px;padding:12px 16px;background:var(--dk-back);border:1px solid var(--dk-rule);border-radius:6px}
.lk .eu-sav{width:48px;height:48px;border:2px solid var(--dk-ink);border-radius:4px;background:linear-gradient(135deg,var(--dk-acc,#5D3F8E) 0 50%,var(--dk-acc2,#F9A01B) 50% 100%);display:flex;align-items:center;justify-content:center;font:600 17px/1 var(--dk-display);color:#fff;flex:none;text-shadow:0 1px 0 rgba(0,0,0,.35)}
.lk .eu-sid{min-width:0}
.lk .eu-sid b{display:block;font:500 22px/1 var(--dk-display);text-transform:uppercase;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk .eu-sid>span:last-child{display:block;margin-top:6px;font:400 11px/1.35 var(--dk-label);color:var(--dk-ink2)}
.lk .eu-ph{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin-top:18px}
.lk .eu-pos{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:3px;border:2px solid var(--dk-ink);color:#fff;font:600 17px/1 var(--dk-display);letter-spacing:.04em;background:var(--dk-ink2);flex:none}
.lk .eu-pn{flex:1 1 130px;min-width:0}
.lk .eu-pn .n{font:500 26px/1.05 var(--dk-display);text-transform:uppercase;overflow-wrap:break-word}
.lk .eu-pn .m{margin-top:7px;font:400 11px/1 var(--dk-label);color:var(--dk-ink2)}
.lk .eu-gcard{width:118px;padding:9px 10px 8px;border:2px solid var(--dk-ink);border-radius:4px;background:#EADFC2;box-shadow:0 3px 0 rgba(28,26,20,.25);transform:rotate(1.5deg);text-align:center;flex:none}
.lk .eu-gcard b{font:600 28px/1 var(--dk-display);color:var(--dk-red);white-space:nowrap}
.lk .eu-gcard b small{font:600 18px/1 var(--dk-display);color:var(--dk-green);margin-left:4px}
.lk .eu-gcard span{display:block;margin-top:5px;font:600 8px/1 var(--dk-label);letter-spacing:.12em;color:var(--dk-muted)}
.lk .eu-tr{display:flex;align-items:center;gap:12px;margin-top:16px;padding:9px 0;border-top:var(--dk-dot);border-bottom:var(--dk-dot)}
.lk .eu-tr .tx{font:400 12px/1.25 'Courier Prime',monospace;min-width:0}
.lk .eu-stamp{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border:2px solid currentColor;border-radius:3px;font:700 11px/1 var(--dk-display);letter-spacing:.08em;text-transform:uppercase;transform:rotate(-2deg);white-space:nowrap;flex:none}
.lk .eu-stamp.sm{height:20px;font-size:10px}
.lk .eu-stamp svg{width:7px;height:7px;fill:currentColor}
.lk .eu-quote{margin-top:14px;padding:2px 0 2px 14px;border-left:3px solid var(--dk-gold);font:italic 400 13.5px/1.5 var(--dk-body);color:var(--dk-ink)}
.lk .eu-qa{display:block;margin-top:7px;font:500 9px/1.3 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-muted);font-style:normal}

/* ── 11 · Score stubs — desk/mobile_league_dashboard.html 45-55 (.mp-stubs/.mp-stub/.mp-wl), markup 164-170. The punched notches take the colour
   of what the ticket lies on: --lk-under (default the card; set it to var(--dk-back) inside the Messenger pane) ── */
.lk .mp-stubs{position:relative;background:var(--dk-back);border:1px solid var(--dk-rule);border-radius:4px}
.lk .mp-stubs::before,.lk .mp-stubs::after{content:"";position:absolute;left:61px;width:14px;height:14px;border-radius:50%;background:var(--lk-under,var(--dk-card));border:1px solid var(--dk-rule)}
.lk .mp-stubs::before{top:-8px}
.lk .mp-stubs::after{bottom:-8px}
.lk .mp-stub{display:flex;align-items:center;height:44px;border-top:1px solid rgba(28,26,20,.10)}
.lk .mp-stub:first-child{border-top:0}
.lk .mp-stub .dt{width:68px;flex:none;padding-left:12px;font:500 10.5px/1.25 var(--dk-label);color:var(--dk-muted);border-right:var(--dk-dot);height:100%;display:flex;flex-direction:column;justify-content:center;letter-spacing:.04em}
.lk .mp-stub .mu{flex:1;min-width:0;padding-left:min(14px,4%);font:500 13px/1 var(--dk-body);color:var(--dk-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk .mp-stub .mu span{color:var(--dk-muted);font-weight:400}
.lk .mp-stub .sc{flex:none;font:500 13px/1 var(--dk-label);margin:0 min(12px,4%) 0 6px;color:var(--dk-ink);white-space:nowrap}
.lk .mp-wl{width:22px;height:22px;flex:none;border-radius:50%;margin-right:min(12px,4%);display:flex;align-items:center;justify-content:center;font:700 11px/1 var(--dk-display);border:1.5px solid}
.lk .mp-wl.w{color:var(--dk-green);border-color:var(--dk-green)}
.lk .mp-wl.l{color:var(--dk-red);border-color:var(--dk-red)}

/* ── 12 · Game plan controls — desk/mobile_gameplan_v2.html 136-138 (.ec-ch), 140-147 (.ec-sl + the range rail and thumb), 150-153 (.ec-seg),
   155-156 (.ec-sg), markup 421-425 + 431-434; the rail's gold fill is partials/gameplan_state_js.html 37 (fill()). Static: the rail is a span
   (--n = 0-100), the chips are spans; drawn as the page looks while editing (full strength, not the locked 65%) ── */
.lk .ec-sh{color:var(--dk-ink);font:400 13px/1.45 var(--dk-body)}
.lk .ec-ch{display:flex;justify-content:space-between;align-items:center;height:22px;padding-left:9px;border-left:3px solid var(--dk-acc,#5D3F8E);margin-bottom:8px}
.lk .ec-ch~.ec-ch{margin-top:14px}
.lk .ec-ch b{font:500 14px/1 var(--dk-display);letter-spacing:.06em;text-transform:uppercase}
.lk .ec-ch span{font:500 9px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-acc,#5D3F8E);white-space:nowrap}
.lk .ec-sl{margin-bottom:8px}
.lk .ec-sl .t{display:flex;justify-content:space-between;align-items:baseline;gap:8px;height:16px}
.lk .ec-sl .t .lb{font:500 12.5px/1 var(--dk-body);white-space:nowrap}
.lk .ec-sl .t span:last-child{font:500 10px/1 var(--dk-label);letter-spacing:.06em;text-transform:uppercase;color:#7A5000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk .ec-rail{display:block;position:relative;width:calc(100% - 7px);height:6px;border-radius:3px;margin:6px 7px 6px 0;background:linear-gradient(90deg,#E8A020 calc(var(--n,50) * 1%),#DCCFAE calc(var(--n,50) * 1%))}
.lk .ec-rail i{position:absolute;top:50%;left:calc((100% - 14px) * var(--n,50) / 100);width:14px;height:14px;margin-top:-7px;border-radius:50%;background:var(--dk-card);border:2px solid var(--dk-ink)}
.lk .ec-sg{margin-bottom:10px}
.lk .ec-sg .l{font:500 12.5px/1 var(--dk-body);min-height:14px}
.lk .ec-seg{display:flex;border:1px solid var(--dk-rule2);border-radius:5px;overflow:hidden;margin-top:4px}
.lk .ec-seg span{flex:1 1 auto;display:flex;align-items:center;justify-content:center;height:26px;padding:0 8px;font:500 9px/1 var(--dk-label);letter-spacing:.06em;text-transform:uppercase;color:var(--dk-ink2);border-left:1px solid var(--dk-rule2);white-space:nowrap}
.lk .ec-seg span:first-child{border-left:0}
.lk .ec-seg span.active{background:var(--dk-ink);color:var(--dk-back)}


/* ── 13 · A player / agent thread — desk/pane_mdm.html (header, bubbles, the agents' action card, the players' pieces);
   markup partials/media_ui.html mdPollDm, partials/agent_ui.html agCard, partials/player_dm.html pdCard / pdSay.
   The makeup + medical slips are the game's own (desk/makeup_skin.html, desk/medical_skin.html): only their frame is set here. ── */
.lk .md-dmh{flex:none;display:flex;align-items:flex-start;gap:8px;padding:12px 16px 10px 18px;border-bottom:var(--dk-dot)}
.lk .md-dmh-b{flex:1;min-width:0}
.lk .md-dmh-s{display:block;font:500 10px/1.5 var(--dk-label);letter-spacing:.14em;text-transform:uppercase;color:var(--dk-muted)}
.lk .md-dmh-n{display:block;margin:5px 0 0;font:600 26px/1 var(--dk-display);letter-spacing:.01em;text-transform:uppercase;color:var(--dk-ink)}
.lk .md-dmh-pf{flex:none;width:40px;height:40px;margin:4px 0 0;display:flex;align-items:center;justify-content:center;border:2px solid var(--dk-ink);border-radius:6px;background:var(--dk-ink2);color:var(--dk-back);
  box-shadow:0 3px 0 var(--dk-ink);font:600 13px/1 var(--dk-display);letter-spacing:.04em}
.lk .pd-rap,.lk .ud-par{display:inline-block;margin-left:6px;padding:2px 4px;border:1px solid currentColor;border-radius:3px;font:600 8.5px/1 var(--dk-label);letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
.lk .pd-rap.cold{color:#B3261E}.lk .pd-rap.cool{color:#C0581E}.lk .pd-rap.fine{color:#6E6751}.lk .pd-rap.warm{color:#1F6F6B}.lk .pd-rap.tight{color:#1C7A48}
.lk .ud-par{color:var(--dk-muted);border-color:rgba(28,26,20,.30)}
.lk .lk-who{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap;font:400 10px/1 var(--dk-label);letter-spacing:.06em;text-transform:uppercase;color:var(--dk-muted)}
.lk .lk-who b{font:500 14px/1 var(--dk-display);letter-spacing:.03em;color:var(--dk-ink)}
.lk .lk-who>span:not([class]){min-width:0;overflow:hidden;text-overflow:ellipsis}
.lk .lk-who .pd-rap,.lk .lk-who .ud-par{margin-left:0;flex:none}
.lk .ag-av{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;border:1px solid;font:600 9px/1 var(--dk-display);letter-spacing:.02em}
.lk .md-m{display:flex;flex-direction:column;gap:3px;align-items:flex-start;min-width:0}
.lk .md-m.me{align-items:flex-end;align-self:stretch}
.lk .md-rb,.lk .md-gb{display:inline-block;max-width:min(296px,100%);padding:8px 11px;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;font:400 12.5px/1.42 var(--dk-body)}
.lk .md-rb{background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);border-radius:10px 10px 10px 3px}
.lk .md-gb{background:var(--dk-acc,#5D3F8E);color:#fff;border:1px solid var(--dk-acc,#5D3F8E);border-radius:10px 10px 3px 10px}
.lk .md-gb.off{background:var(--dk-card);color:var(--dk-muted);border:1px dashed rgba(28,26,20,.45)}
.lk .md-st{display:block;font:400 9.5px/1 var(--dk-label);letter-spacing:.06em;color:var(--dk-muted)}
.lk .pd-flag{color:var(--dk-red);font-weight:600;text-transform:uppercase}
.lk .md-sys{align-self:stretch;text-align:center;font:400 9.5px/1.6 var(--dk-label);letter-spacing:.04em;color:var(--dk-muted)}
/* the action card (board .ed-pcard): head, facts, one filled button and quiet text buttons */
.lk .ag-cd,.lk .pd-scout,.lk .pd-mk,.lk .pd-iv{align-self:flex-start;flex:none;width:316px;max-width:100%;overflow:hidden;background:var(--dk-card);color:var(--dk-ink);border:1px solid rgba(28,26,20,.22);
  border-left:3px solid var(--dk-acc,#5D3F8E);border-radius:4px;position:relative}
.lk .ag-kh{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 11px 6px;border-bottom:var(--dk-dot);font:500 10px/1.3 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-ink)}
.lk .ag-kh b{font-weight:600}
.lk .ag-kh>span:first-child{min-width:0}
.lk .ag-kh>span+span:not(:empty){flex:none;font:600 8.5px/1 var(--dk-label);letter-spacing:.1em;color:var(--dk-gold-t);border:1px solid rgba(168,106,0,.55);border-radius:3px;padding:2px 4px;white-space:nowrap}
.lk .ag-kh .ag-now{color:var(--dk-red)}
.lk .ag-kb{padding:8px 11px}
.lk .ag-pcard{display:flex;gap:8px;align-items:baseline}
.lk .ag-pcard .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.lk .ag-pcard .tx b{font:500 15px/1.15 var(--dk-display);letter-spacing:.03em;text-transform:uppercase}
.lk .ag-pcard .tx span{margin-top:3px;font:400 10.5px/1.3 var(--dk-label);color:var(--dk-ink2)}
.lk .ag-mood,.lk .ag-stamp{flex:none;display:inline-block;padding:2px 4px;border:1px solid currentColor;border-radius:3px;font:600 8.5px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase}
.lk .ag-mood{color:var(--dk-gold-t)}
.lk .ag-kv{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;border-bottom:var(--dk-dot);font:400 12px/1.4 var(--dk-body);color:var(--dk-ink)}
.lk .ag-kv:last-child{border-bottom:0}
.lk .ag-kv b{flex:none;font:500 9.5px/1.3 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-muted)}
.lk .ag-kv span{text-align:right}
.lk .ag-foot{margin-top:7px;font:400 10.5px/1.5 var(--dk-label);color:var(--dk-muted)}
.lk .ag-kf{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:9px 11px 12px;border-top:1px solid rgba(28,26,20,.16)}
.lk .ag-btn{flex:none;font:500 10px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;color:var(--dk-acc,#5D3F8E)}
.lk .ag-btn.gold{display:inline-flex;align-items:center;height:30px;padding:0 13px;border:2px solid var(--dk-ink);border-radius:6px;background:var(--dk-acc,#5D3F8E);color:#fff;box-shadow:0 3px 0 var(--dk-ink);
  font:600 11px/1 var(--dk-label);letter-spacing:.06em}
/* the players' pieces */
.lk .pd-iv-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 11px 6px;border-bottom:var(--dk-dot);font:500 10px/1.3 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-ink)}
.lk .pd-iv-h b{font-weight:600}
.lk .pd-pips{display:flex;gap:4px}
.lk .pd-pips i{width:12px;height:4px;border-radius:2px;background:rgba(28,26,20,.16)}
.lk .pd-pips i.on{background:var(--dk-gold)}
.lk .pd-iv-b{padding:7px 11px 9px}
.lk .pd-iv-f{font:400 10.5px/1.5 var(--dk-label);color:var(--dk-muted)}
.lk .pd-scout{display:block;padding:8px 11px;border-left-color:var(--dk-gold)}
.lk .pd-scout .k{display:block;margin-bottom:4px;font:600 9.5px/1 var(--dk-label);letter-spacing:.12em;text-transform:uppercase;color:var(--dk-gold-t)}
.lk .pd-scout p{margin:0;font:400 12.5px/1.42 var(--dk-body);color:var(--dk-ink)}
.lk .hs-mk.dk-mk,.lk .hs-med.dk-med{margin:0}
.lk .hs-mk.dk-mk.pd-mk{padding:10px 11px;gap:8px;background:var(--dk-card);border:1px solid rgba(28,26,20,.22);border-left:3px solid var(--dk-acc,#5D3F8E);border-radius:4px}
.lk .pd-mk.dk-mk .hs-mk-scale span{padding:7px 2px 6px;font-size:8px;letter-spacing:.04em}
.lk .pd-ag{display:flex;flex-direction:column;gap:4px;align-items:flex-start;min-width:0}
.lk .pd-ag-h{display:flex;align-items:center;gap:6px;font:600 9px/1 var(--dk-label);letter-spacing:.1em;text-transform:uppercase;color:var(--dk-ink)}
.lk .pd-ag-h i{font-style:normal;color:var(--dk-muted)}
.lk .pd-ag-h .ag-av{width:20px;height:20px}
.lk .md-rb.pd-agb{border-left:3px solid var(--dk-ink);border-radius:4px 10px 10px 4px}
.lk .lk-office{display:flex;flex-direction:column;gap:5px;padding:8px 0 0;border-top:2px solid var(--dk-ink)}
.lk .lk-office p{margin:0;font:400 12px/1.42 var(--dk-body);color:var(--dk-ink)}
