/* 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: grid; grid-template-columns: 1fr 1fr 1fr 1fr auto; grid-template-rows: auto; 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; } .editor_input { width: 100%; max-width: 800px; } .hidden { display: none !important; } #content_body { display: flex; flex: 0 0 auto; flex-direction: row; } #search_go_button, .add_tag_button, .editor_open_button, .editor_save_button, .green_button { border-top: 2px solid #c2ffc3; border-left: 2px solid #c2ffc3; border-right: 2px solid #259427; border-bottom: 2px solid #259427; background-color: #6df16f; } #search_go_button:active, .add_tag_button:active, .editor_open_button:active, .editor_save_button:active, .green_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, .editor_cancel_button, .red_button { 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:active, .remove_tag_button_perm:active, .editor_cancel_button:active, .red_button:active { border-top: 2px solid #bd1b1b; border-left: 2px solid #bd1b1b; border-right: 2px solid #ffacac; border-bottom: 2px solid #ffacac; } .remove_tag_button, .remove_tag_button_perm { /*position: absolute;*/ top: 3px; vertical-align: middle; width: 18px; height: 14px; padding: 0; } /* The Remove button will be display:none by default, but is shown when the tag is hovered over. */ .remove_tag_button { display: none; } .tag_object:hover + .remove_tag_button, .remove_tag_button:hover, .remove_tag_button_perm:hover { display:inline; } .photo_card_list { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto; grid-template-areas: "filename metadata"; max-width: 800px; margin: 8px; padding: 4px; background-color: #ffffd4; } .photo_card_list:hover { box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25); } .photo_card_grid { display: inline-grid; grid-template-columns: auto auto; grid-template-rows: auto 1fr auto; grid-template-areas: "thumbnail thumbnail" "filename filename" "tags metadata"; 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_thumbnail { grid-area: thumbnail; align-self: start; justify-self: center; } .photo_card_thumbnail img { max-width: 100%; } .photo_card_filename { /* 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. The min-width:100% + width:0 prevent the info div from controlling card size, so we can prioritize the thumbnail instead. */ align-self: start; justify-self: start; grid-area: filename; z-index: 1; overflow: hidden; min-width: 100%; width: 0; max-height: 30px; background-color: inherit; word-break: break-word; font-size: 12.8px; } .photo_card_filename:hover { overflow: visible; max-height: none; } .photo_card_tags { grid-area: tags; align-self: end; justify-self: start; font-family: monospace; font-size: 11px; } .photo_card_metadata { grid-area: metadata; align-self: end; justify-self: end; font-family: monospace; font-size: 11px; } .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; }