/* Organization: { display and alignment bounding box (width, margin, overflow, ...) borders and shadows backgrounds foregrounds misc } */ body { display: flex; flex-direction: column; margin: 8px; background-color:#00d8f4; } li { position:relative; } #header { display: flex; flex-direction: row; justify-content: center; align-content: center; margin-bottom: 4px; } .header_element { display: flex; flex: 1; justify-content: center; background-color: rgba(0, 0, 0, 0.1); } .header_element:hover { background-color: #ffffd4; } #content_body { display: flex; flex: 0 0 auto; flex-direction: row; } .add_tag_button, #search_go_button { border-top: 2px solid #c2ffc3; border-left: 2px solid #c2ffc3; border-right: 2px solid #259427; border-bottom: 2px solid #259427; background-color: #6df16f; } .add_tag_button:active, #search_go_button:active { border-top: 2px solid #259427; border-left: 2px solid #259427; border-right: 2px solid #c2ffc3; border-bottom: 2px solid #c2ffc3; } .remove_tag_button, .remove_tag_button_perm { /*position: absolute;*/ top: 3px; vertical-align: middle; width: 18px; height: 14px; padding: 0; border-top: 2px solid #ffacac; border-left: 2px solid #ffacac; border-right: 2px solid #bd1b1b; border-bottom: 2px solid #bd1b1b; background-color: #ff4949; } .remove_tag_button { display: none; } .tag_object:hover + .remove_tag_button, .remove_tag_button:hover, .remove_tag_button_perm:hover { display:inline; } .remove_tag_button:active, .remove_tag_button_perm:active { border-top: 2px solid #bd1b1b; border-left: 2px solid #bd1b1b; border-right: 2px solid #ffacac; border-bottom: 2px solid #ffacac; } .photo_card_list { display: flex; flex-direction: row; justify-content: space-between; margin: 8px; padding: 4px; background-color: #ffffd4; } .photo_card_grid { display: inline-flex; flex-direction: column; vertical-align: middle; min-width: 150px; max-width: 300px; height: 200px; padding: 8px; margin: 8px; border-radius: 8px; box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25); background-color: #ffffd4; } .photo_card_grid_thumb { display:flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: 150px; } .photo_card_grid_thumb a { display:flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: 100%; } .photo_card_grid_thumb img { max-width: 100%; max-height: 100%; height: auto; } .photo_card_grid_info { display: flex; flex: 1; flex-direction: column; justify-content: space-between; background-color: inherit; font-size: 12.8px; } .photo_card_grid_filename { align-self: flex-start; /* The width of photo cards should be based on the aspect ratio of the thumbnail image. Previously, I had problems where the card would be wider than necessary because the file had a long name. These min-width:100% + width:0 prevent the info div from controlling card size, so we can prioritize the thumbnail instead. */ min-width: 100%; width: 0; overflow: hidden; z-index: 1; max-height: 30px; background-color: inherit; word-break:break-word; } .photo_card_grid_filename a { background-color: inherit; } .photo_card_grid_filename:hover { overflow: visible; } .photo_card_grid_file_metadata { display: flex; z-index: 0; justify-content: space-between; font-family: monospace; font-size: 11px; } .photo_card_grid_tags { align-self: flex-start; /* When the metadata is long it tends to squish against the T, so give it some breathing room. */ margin-right: 8px; } .tag_object { border-radius: 2px; background-color: #fff; font-size: 0.9em; text-decoration: none; font-family: monospace; line-height: 1.3; } #message_area { display: flex; flex: 2; flex-direction: column; align-items: center; max-height: 300px; width: 100%; height: 100%; overflow-y: auto; background-color: rgba(0, 0, 0, 0.1); } .message_bubble { width: 80%; margin: 4px; word-wrap: break-word; } .message_positive { background-color: #afa; } .message_negative { background-color: #faa; }