/* RALLY THE TROOPS - MAIN SITE STYLE */ html { image-rendering: -webkit-optimize-contrast; /* try to fix chromium's terrible image rescaling */ image-rendering: high-quality; text-size-adjust: none; /* should disable font boosting - but has no effect ... */ } * { max-height: 100000px; /* disable chrome's "font boosting" algorithm */ } :root { --font-normal: "Source Serif", "Georgia", "Noto Emoji", serif; --font-small: "Source Serif SmText", "Georgia", "Noto Emoji", serif; --font-widget: "Source Sans", "Verdana", "Noto Emoji", sans-serif; --drop-shadow: 1px 1px 4px #0004; --thin-border: 1px solid black; --color-black: black; --color-table-active: hsla(55, 100%, 50%, 0.15); --color-table-invite: hsla(120, 100%, 50%, 0.15); } /* light gray */ :root { --color-head: hsl(0, 0%, 85%); --color-body: hsl(0, 0%, 95%); --color-text: hsl(0, 0%, 100%); --color-post-head: hsl(0, 0%, 85%); --color-post-body: hsl(0, 0%, 98%); --color-table-head: hsl(0, 0%, 85%); --color-table-foot: hsl(0, 0%, 90%); --color-table-body: hsl(0, 0%, 98%); --color-table-stripe: hsl(0, 0%, 96%); --color-focus: hsl(210, 40%, 65%); --color-blue: hsl(240, 100%, 50%); --color-red: hsl(0, 100%, 35%); --color-green: hsl(120, 100%, 30%); --color-accent: hsl(0, 60%, 40%); } /* dark gray */ @media (prefers-color-scheme: dark) { :root { --color-head: hsl(0, 0%, 75%); --color-body: hsl(0, 0%, 85%); --color-text: hsl(0, 0%, 95%); --color-post-head: hsl(0, 0%, 75%); --color-post-body: hsl(0, 0%, 90%); --color-table-head: hsl(0, 0%, 75%); --color-table-foot: hsl(0, 0%, 80%); --color-table-body: hsl(0, 0%, 90%); --color-table-stripe: hsl(0, 0%, 88%); --color-focus: hsl(210, 40%, 60%); --color-blue: hsl(240, 100%, 40%); --color-red: hsl(0, 100%, 35%); --color-green: hsl(120, 100%, 30%); --color-accent: hsl(0, 60%, 35%); }} /* WIDGETS */ html, input, textarea { font-family: var(--font-normal); font-size: 16px; } button, select, option { font-family: var(--font-widget); font-size: 16px; } input[type="checkbox"], input[type="radio"] { margin-right: 7px; accent-color: currentcolor; } input[type="text"], input[type="password"], input[type="email"], textarea, select[size] { background-color: var(--color-text); color: var(--color-black); border: var(--thin-border); padding: 5px; margin: 5px 0; max-width: calc(100% - 12px); vertical-align: middle; } input:focus, textarea:focus, select[size]:focus { outline: 2px solid var(--color-focus); } button:focus, select:not([size]):focus { box-shadow: 0 0 0 3px var(--color-focus); } option { background-color: var(--color-text); color: var(--color-black); } button, select:not([size]) { margin: 5px 10px 5px 0; padding: 1px 10px; vertical-align: middle; border: 2px solid; background-color: gainsboro; border-color: white darkgray darkgray white; color: var(--color-black); outline: 1px solid var(--color-black); } button:enabled:active:hover, select:not([size]):active { border-color: darkgray white white darkgray; padding: 2px 9px 0px 11px; } button:disabled { color: gray; border-color: gainsboro; outline-color: gray; } /* PAGE LAYOUT */ html, body { margin: 0 } h1 { margin: 16px 0 16px -1px; font-size: 24px; } h2 { margin: 16px 0 16px -1px; font-size: 20px; } h3 { margin: 16px 0 8px -1px; font-size: 16px; } h1 .icon { font-weight: normal; } html { overflow-y: scroll; } body { background-color: var(--color-body); color: var(--color-black); } header { display: flex; align-items: end; justify-content: space-between; padding-right: 12px; background-color: var(--color-head); border-bottom: 2px solid var(--color-accent); } header img { display: block; margin: 0 0 -2px 2px; } nav { display: flex; align-items: center; flex-wrap: wrap; justify-content: end; min-height: 42px; padding: 4px; gap: 8px; } nav a { padding: 0 4px; display: block; } @media (pointer: coarse) { nav { padding: 8px; gap: 12px; } } article { margin: 0 auto; padding: 0 16px; max-width: 830px; } @media (min-width: 1340px) { article.wide { max-width: 1250px; } } article hr { border: none; border-top: 2px dotted brown; } article hr + p { font-style: italic; } /* COMMON ELEMENTS */ a { color: var(--color-blue); } nav a, a.black { color: var(--color-black); text-decoration: none; } nav a:hover, a.black:hover { color: var(--color-blue); text-decoration: underline; } table a.black { color: var(--color-black); text-decoration: none; } table a.black:hover { color: var(--color-blue); text-decoration: underline; } .error { color: var(--color-red); font-style: italic; white-space: pre-wrap; } .warning { color: var(--color-red); } p.warning::before { content: "\26a0 "; } @media (min-width: 500px) { div.logo { float: right; margin: -20px 0px 8px 16px; min-width: 150px; } } div.logo img { box-shadow: var(--drop-shadow); border: var(--thin-border); } /* TABLES */ table { background-color: var(--color-table-body); border-collapse: collapse; border: var(--thin-border); box-shadow: var(--drop-shadow); margin: 1em 0; } table.wide { width: 100%; } table.half { min-width: 50%; } thead, th { background-color: var(--color-table-head); } tfoot { background-color: var(--color-table-foot); } thead, tfoot { border: var(--thin-border); } th, td { vertical-align: top; text-align: left; padding: 5px 10px; } table.striped tr:nth-child(2n) { background-color: var(--color-table-stripe); } td.r, th.r { text-align: right; } td.w, th.w { white-space: nowrap; } /* FORUM AND MESSAGE POSTS */ div.post { background-color: var(--color-post-body); margin-top: 24px; border: var(--thin-border); box-shadow: var(--drop-shadow); } div.post > div.head { display: flex; justify-content: space-between; padding: 5px 10px; background-color: var(--color-post-head); border-bottom: var(--thin-border); } div.post > div.body { padding: 15px; white-space: pre-wrap; } div.post + div.edit { margin-top: 5px; text-align: right; } div.body img { max-width: 100%; } /* GAME BOXES */ .game_list { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 400px)); gap: 24px; margin: 16px 0; } .game_item { border: var(--thin-border); box-shadow: var(--drop-shadow); color: black; } .game_head, .game_main { display: flex; justify-content: space-between; padding: 4px 8px; } .game_head { border-bottom: var(--thin-border); line-height: 23px; } .game_info { font-family: var(--font-small); font-size: 14px; line-height: 20px; } .game_item a { text-decoration: none; color: black; } .game_item a:hover { text-decoration: underline; } .game_item .game_main a:hover { color: blue; } .game_info .is_active { text-decoration: underline; } .game_info .is_invite { opacity: 60%; } .game_info div { text-indent: -20px; padding-left: 20px; } .game_main img { display: block; max-width: 60px; max-height: 72px; margin: 4px 0 4px 4px; border: var(--thin-border); } .game_main img.square { max-width: 60px; max-height: 60px; } .game_main img.wide { max-width: 72px; max-height: 60px; } .game_main img.tall { max-width: 60px; max-height: 72px; } .game_item .game_head { background-color: gainsboro } .game_item .game_main { background-color: whitesmoke } .game_item.open .game_head { background-color: lightskyblue } .game_item.open .game_main { background-color: aliceblue } .game_item.ready .game_head { background-color: darkseagreen } .game_item.ready .game_main { background-color: mintcream } .game_item.replacement .game_head { background-color: thistle } .game_item.replacement .game_main { background-color: lavenderblush } .game_item.active .game_head { background-color: tan } .game_item.active .game_main { background-color: floralwhite } .game_item.finished .game_head { background-color: silver } .game_item.finished .game_main { background-color: gainsboro } .game_item.archived .game_head { background-color: darkgray } .game_item.archived .game_main { background-color: lightgray } .game_item.your_turn .game_head { background-color: gold } .game_item.your_turn .game_main { background-color: lightyellow }