/* Ludicrous Display, direction A: "Portal, 2002". From the mockup's a.mjs
   (plan folder, source/mockup-generator). Yahoo!/ESPN.com/MSN era: Verdana
   11px, blue/grey modules with solid header bars, tab strip, bevelled
   buttons, NEW! badges, left rail + main + right rail.

   Every rule is scoped under .ld, the page's wrapper, so nothing reaches the
   willperlak.com site nav above it (#wp-site-nav, styled by /site-nav/nav.css
   in the visitor's theme; the page loads Kit's clean-tokens.css and
   motion.css for it). The page ignores the theme: same skin under Clean,
   Retro, light or dark, and .ld sets color-scheme:light so Clean dark's
   color-scheme doesn't darken its inputs. body gets its margin and, on a
   page of ours, white (a short page in Clean dark would otherwise end in a
   dark slab; the selector outweighs a theme's html[data-theme][data-scheme]
   body rule).

   PHONE (<=760px): the columns stack main, right rail, left rail, with a
   16px gutter; the tab strip wraps; the search row goes full width; tables
   wrap their text instead of scrolling; the text goes up to 15px (the lines
   to say 16px, the small print, the next-game line, Search and NEW! 12px)
   and every tab, rail, archive, card-footer and stale-note link is a 24px
   tap target. Under 300px (200% zoom on a phone) the card header wraps and
   drops the opponent's logo, the box score shows team codes only and the
   phrasebook rows stack. Under 500px tall (a phone on its side, a desktop
   at 200% zoom) the tagline goes and the masthead tightens; Search stays,
   as the only way to the find page.

   The portal's furniture (poll, webring-era footer links, guestbook) is
   .fake-link spans and disabled controls: the look, never a tab stop.

   The 32 .ph-<CODE> placeholder colour classes are appended by bin/build.mjs
   (lib/logos.mjs placeholderCss): the CSP allows no style= attribute. */
html{-webkit-text-size-adjust:100%}
body{margin:0}
:root:has(.ld) body:has(> .ld){background:#fff}
.ld{color-scheme:light;background:#fff;color:#000;font:11px/1.4 Verdana,Geneva,Arial,Helvetica,sans-serif;text-align:left}
.ld a{color:#0033cc}.ld a:visited{color:#551a8b}
.ld .wrap{max-width:980px;margin:0 auto;padding:0 8px}
.ld .top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:10px 0 6px;flex-wrap:wrap}
.ld .brand{font:bold 30px/1 Arial,Helvetica,sans-serif;color:#003399;letter-spacing:-1px}
.ld .brand a,.ld .brand a:visited{color:inherit;text-decoration:none}
.ld .brand span{color:#cc0000;font-style:italic}
.ld .brand small{display:block;font:11px Verdana,sans-serif;color:#666;letter-spacing:0;margin-top:4px}
.ld .search{display:flex;gap:4px;align-items:center;font-size:10px;margin:0}
.ld .btn{font:bold 11px Verdana,sans-serif;background:#e4e4e4;border:2px outset #f4f4f4;padding:2px 8px;color:#000;cursor:pointer}
.ld .btn:active{border-style:inset}
.ld .btn:disabled{color:#000;cursor:default}
.ld .fake-link{color:#0033cc;text-decoration:underline;cursor:default}
.ld a.btn{display:inline-block;text-decoration:none;min-height:24px;line-height:20px}
.ld .tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:3px solid #336699;margin:0;padding:0;list-style:none}
.ld .tabs li a{display:block;padding:4px 10px 3px;background:#dde5f0;border:1px solid #99aacc;border-bottom:0;font-weight:bold;text-decoration:none;color:#003399}
.ld .tabs li .fake-link{display:block;padding:4px 10px 3px;background:#dde5f0;border:1px solid #99aacc;border-bottom:0;font-weight:bold;text-decoration:none;color:#003399}
.ld .tabs li.on a{background:#336699;color:#fff;border-color:#336699}
.ld .datebar{background:#eeeeee;border-bottom:1px solid #ccc;padding:3px 6px;font-size:10px;color:#333;display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px}
.ld .datebar h1.dbt{display:inline;font:inherit;font-weight:bold;margin:0}
.ld .cols{display:grid;grid-template-columns:150px minmax(0,1fr) 190px;grid-template-areas:"left main right";gap:10px;margin-top:10px}
.ld .cols.one{grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}
.ld .left{grid-area:left;min-width:0}.ld .main{grid-area:main;min-width:0}.ld .right{grid-area:right;min-width:0}
.ld .mod{border:1px solid #99aacc;margin-bottom:10px;background:#fff}
.ld .mod h2{margin:0;background:#336699;color:#fff;font:bold 11px Verdana,sans-serif;padding:3px 6px;display:flex;justify-content:space-between;align-items:center;gap:6px}
.ld .mod h2.alt{background:#cccccc;color:#000}
.ld .mod .bd{padding:6px;overflow-wrap:anywhere}
.ld .mod .bd.c{text-align:center}
.ld .mod ul{margin:0;padding:0 0 0 14px}
.ld .mod li{margin:2px 0}
.ld .new{display:inline-block;background:#ffcc00;color:#990000;font:bold italic 10px Verdana,sans-serif;padding:0 3px;border:1px solid #cc9900;vertical-align:1px}
.ld .hot{color:#cc0000;font-weight:bold}
.ld .lead{background:#ffffcc;border:1px solid #e0d080;padding:6px;margin-bottom:10px;overflow-wrap:anywhere}
.ld .lead b{color:#003399}
.ld .stale{background:#ffffcc;border:1px solid #e0d080;padding:6px;margin:10px 0 0;font-weight:bold}
.ld .mod ul.gist-list{margin:0;padding:0;list-style:none}.ld .mod .gist-list li{margin:0 0 6px}.ld .mod .gist-list li:last-child{margin-bottom:0}.ld .gist-list .say{display:block;margin-top:2px}
/* Logos: a real file, or a placeholder in the team's colours */
.ld img.logo{display:inline-block;flex:none;vertical-align:middle;object-fit:contain}
.ld .logo-ph{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;flex:none;box-sizing:border-box;border:3px solid;font-family:Verdana,Arial,sans-serif;line-height:1;text-align:center;vertical-align:middle;outline:1px dashed rgba(127,127,127,.6);outline-offset:2px}
.ld .logo-ph b{font-size:15px;letter-spacing:.5px}
.ld .logo-ph small{font-size:9px;text-transform:uppercase;opacity:.85;margin-top:2px}
.ld .logo-ph.sm{border-width:2px}.ld .logo-ph.sm b{font-size:9px;letter-spacing:0}.ld .logo-ph.sm small{display:none}
.ld .s52{width:52px;height:52px}
.ld .s40{width:40px;height:40px}
.ld .s28{width:28px;height:28px}
/* Phrasebook module */
.ld .pb .head{display:flex;gap:8px;align-items:center;padding:6px;background:#f4f6fa;border-bottom:1px solid #ccd5e5}
.ld .pb .head .t{flex:1;min-width:0}
.ld .pb .head .t big{display:block;font:bold 14px Arial,sans-serif;color:#003399}
.ld .box{width:100%;border-collapse:collapse;font-size:11px}
.ld .box th,.ld .box td{border:1px solid #c5cfe0;padding:2px 4px;text-align:center}
.ld .box th{background:#e6ecf5;font-size:10px}
.ld .box td.n{text-align:left;font-weight:bold;white-space:nowrap}
.ld .box tr.w td{background:#ffffe0}
.ld .pbt{width:100%;border-collapse:collapse}
.ld .pbt th{width:110px;text-align:left;vertical-align:top;background:#eef2f8;color:#336699;font-size:10px;padding:5px;border-top:1px solid #dde3ee;letter-spacing:.3px}
.ld .pbt td{vertical-align:top;padding:5px;border-top:1px solid #dde3ee;overflow-wrap:anywhere}
.ld .say{font:bold 12px Georgia,"Times New Roman",serif;color:#000}
.ld .rep{margin:0;padding:0;list-style:none}
.ld .rep li{margin:0 0 5px}
.ld .rep .q{color:#666}
.ld .rep .q::before{content:"They: ";font-weight:bold;color:#595959}
.ld .rep .a::before{content:"You: ";font-weight:bold;color:#cc0000}
.ld .plays{margin:0;padding:0;list-style:none}
.ld .plays li{display:grid;grid-template-columns:62px minmax(0,1fr);gap:4px;padding:1px 0;margin:0}
.ld .clk{font-family:"Courier New",monospace;color:#336699;font-weight:bold}
.ld .plays .gloss{display:block}.ld .plays .raw{display:block;margin-top:1px;font-size:9px;color:#555}
.ld .names{margin:0;padding:0;list-style:none}
.ld .names li{padding:1px 0}
.ld .footballs svg{margin-right:2px;vertical-align:middle}
.ld .more{text-align:right;font-size:10px;padding:3px 6px;background:#f4f4f4;border-top:1px solid #ddd;overflow-wrap:anywhere}
.ld .nextgame{font-size:11px;padding:4px 6px;background:#ffffe0;border-top:1px solid #ddd;overflow-wrap:anywhere}
/* Elsewhere in the League */
.ld .else table{width:100%;border-collapse:collapse}
.ld .else td{padding:4px 3px;border-bottom:1px dotted #bbb;vertical-align:top;overflow-wrap:anywhere}
.ld .else td.lg{width:30px}
.ld .else .sc{font-weight:bold}
.ld .else .bl{color:#cc0000;font-style:italic;display:block;margin-top:2px}
.ld .else .ref{display:block;margin-top:2px;font-size:9px;color:#555}
.ld .mod ul.tick{margin:0;padding:0;list-style:none}
.ld .mod .tick li{margin:0;padding:2px 0;border-bottom:1px dotted #bbb;overflow-wrap:anywhere}
.ld .mod .tick li:last-child{border-bottom:0}
.ld .tick .ot{font-size:9px;font-weight:bold;color:#cc0000}
.ld .quiet{margin:0;color:#666;font-style:italic}
/* Rails */
.ld .arch li{list-style:square}
.ld .arch .cur{font-weight:bold;color:#000;text-decoration:none}
.ld .tz{color:#666}
.ld .all{margin:4px 0 0;text-align:right}
.ld .counter{display:inline-flex;gap:1px;background:#000;padding:2px;border:2px inset #999}
.ld .counter span{background:#111;color:#33ff33;font:bold 13px "Courier New",monospace;padding:0 2px;border:1px solid #333}
.ld .poll label{display:block;margin:2px 0}
/* The archive page */
.ld .issues{margin:0;padding:0;list-style:none}
.ld .issues li{margin:0;padding:6px 0;border-bottom:1px dotted #bbb}
.ld .issues li:last-child{border-bottom:0}
.ld .issues .d{font:bold 13px Arial,sans-serif}
.ld .issues .m{display:block;color:#333;font-size:10px}
.ld .issues .tz{display:block;margin-top:2px}
.ld .story{margin:0 0 6px;font:bold 13px Arial,sans-serif;color:#003399}
.ld .az{display:block;margin:0 0 6px;font:bold 13px Arial,sans-serif}.ld .az a{display:inline-block;min-width:24px;min-height:24px;line-height:24px;text-align:center}.ld .find h4{margin:8px 0 2px;font:bold 14px Arial,sans-serif;color:#003399}.ld ul.find{margin:0;padding:0;list-style:none}.ld .find li{padding:2px 0;border-bottom:1px dotted #bbb}.ld .find li:last-child{border-bottom:0}
.ld .lost{font:bold 14px Arial,sans-serif;color:#003399;margin:0 0 6px}
.ld .terms{margin:0}.ld .terms dt{font-weight:bold;color:#003399;margin:8px 0 0}.ld .terms dt:first-child{margin-top:0}.ld .terms dd{margin:2px 0 0 14px}.ld .pbt th .gl{font-weight:normal;letter-spacing:0}
.ld .pocket{max-width:560px;margin:0 auto;padding:8px 0 16px}
.ld .pocket h1{font:bold 22px Arial,sans-serif;color:#003399;margin:4px 0}
.ld .pocket h2{font:bold 12px Arial,sans-serif;color:#336699;text-transform:uppercase;letter-spacing:.3px;margin:12px 0 3px}
.ld .pocket .say{font-size:19px;line-height:1.3;margin:0}
.ld .pocket .rep{font-size:16px;line-height:1.35}
.ld .pk-back,.ld .pk-sum,.ld .pk-diff,.ld .pk-foot{font-size:13px;margin:4px 0}
.ld .pk-foot{color:#666;margin-top:14px}
.ld .foot{border-top:3px solid #336699;margin-top:6px;padding:8px 0 20px;color:#666;font-size:10px;text-align:center}
.ld .foot a{color:#666}
.ld .foot .fake-link{color:#666}
@media (max-width:760px){
  .ld .wrap{padding:0 16px}
  .ld .cols{grid-template-columns:minmax(0,1fr);grid-template-areas:"main" "right" "left"}
  .ld .search{width:100%}
  .ld .tabs li a,.ld .tabs li .fake-link{padding:10px 12px}
  .ld .pbt th{width:76px}
  .ld .brand{font-size:26px}
  .ld .more a,.ld .gist-list a,.ld .pk-back a,.ld .pbt th .gl{display:inline-block;padding:6px 4px;min-height:24px;box-sizing:border-box}
  .ld{font-size:15px}
  .ld .say{font-size:16px}
  .ld .else .ref,.ld .more,.ld .datebar,.ld .tz,.ld .issues .m,.ld .foot,.ld .nextgame,.ld .search .btn,.ld .new,.ld .brand small{font-size:12px}
  .ld .stale a{display:inline-block;padding:4px 0}
  .ld .pbt th,.ld .box th,.ld .box{font-size:12px}
  .ld .mod h2{font-size:13px}
  .ld .mod li{margin:8px 0}
  .ld .mod li a{display:inline-block;padding:6px 0}
  .ld .issues .d{display:inline-block;padding:6px 0}
  .ld .all a{display:inline-block;padding:8px 0}
}
@media (max-width:300px){
  .ld .pb .head{flex-wrap:wrap}
  .ld .pb .head .s40{display:none}
  .ld .pb .head .t{flex-basis:100%}
  .ld .box td.n{white-space:normal}
  .ld .box .tn{display:none}
  .ld .wrap{padding:0 6px}
  .ld .pbt th{width:auto;display:block}
  .ld .pbt td{display:block}
}
@media (max-height:500px){.ld .top{padding:4px 0 2px}.ld .brand small{display:none}.ld .stale a{display:inline-block;padding:6px 0}}
@media print{.ld .pk-back{display:none}.ld .pocket{max-width:none}}
/* Placeholder colours, one class per team (generated: lib/logos.mjs placeholderCss) */
.ld .ph-ARI{background:#a40227;color:#ffffff;border-color:#ffffff}
.ld .ph-ATL{background:#a71930;color:#ffffff;border-color:#000000}
.ld .ph-BAL{background:#29126f;color:#ffffff;border-color:#000000}
.ld .ph-BUF{background:#00338d;color:#ffffff;border-color:#d50a0a}
.ld .ph-CAR{background:#0085ca;color:#ffffff;border-color:#000000}
.ld .ph-CHI{background:#0b1c3a;color:#ffffff;border-color:#e64100}
.ld .ph-CIN{background:#fb4f14;color:#ffffff;border-color:#000000}
.ld .ph-CLE{background:#472a08;color:#ffffff;border-color:#ff3c00}
.ld .ph-DAL{background:#002a5c;color:#ffffff;border-color:#b0b7bc}
.ld .ph-DEN{background:#0a2343;color:#ffffff;border-color:#fc4c02}
.ld .ph-DET{background:#0076b6;color:#ffffff;border-color:#bbbbbb}
.ld .ph-GB{background:#204e32;color:#ffffff;border-color:#ffb612}
.ld .ph-HOU{background:#021018;color:#ffffff;border-color:#eb0028}
.ld .ph-IND{background:#003b75;color:#ffffff;border-color:#ffffff}
.ld .ph-JAX{background:#007487;color:#ffffff;border-color:#d7a22a}
.ld .ph-KC{background:#e31837;color:#ffffff;border-color:#ffb612}
.ld .ph-LV{background:#000000;color:#ffffff;border-color:#a5acaf}
.ld .ph-LAC{background:#0080c6;color:#ffffff;border-color:#ffc20e}
.ld .ph-LAR{background:#003594;color:#ffffff;border-color:#ffd100}
.ld .ph-MIA{background:#008e97;color:#ffffff;border-color:#fc4c02}
.ld .ph-MIN{background:#4f2683;color:#ffffff;border-color:#ffc62f}
.ld .ph-NE{background:#002a5c;color:#ffffff;border-color:#c60c30}
.ld .ph-NO{background:#d3bc8d;color:#000000;border-color:#000000}
.ld .ph-NYG{background:#003c7f;color:#ffffff;border-color:#c9243f}
.ld .ph-NYJ{background:#115740;color:#ffffff;border-color:#ffffff}
.ld .ph-PHI{background:#06424d;color:#ffffff;border-color:#000000}
.ld .ph-PIT{background:#000000;color:#ffffff;border-color:#ffb612}
.ld .ph-SF{background:#aa0000;color:#ffffff;border-color:#b3995d}
.ld .ph-SEA{background:#002a5c;color:#ffffff;border-color:#69be28}
.ld .ph-TB{background:#bd1c36;color:#ffffff;border-color:#3e3a35}
.ld .ph-TEN{background:#4495d2;color:#ffffff;border-color:#001532}
.ld .ph-WSH{background:#5a1414;color:#ffffff;border-color:#ffb612}
