From a1a1b70cfd9ff512fdc7c3624e462d52622e113c Mon Sep 17 00:00:00 2001
From: jnizet <jb@ninja-squad.com>
Date: Fri, 27 Aug 2021 15:01:54 +0200
Subject: [PATCH] feat: implement styling

---
 .../resources/static/assets/images/logo.png   | Bin 0 -> 36294 bytes
 .../templates/fragments/institute.html        |   2 +-
 .../resources/templates/fragments/map.html    |   2 +-
 .../resources/templates/fragments/row.html    |   4 +-
 .../resources/templates/fragments/source.html |   2 +-
 .../resources/templates/fragments/xrefs.html  |  12 +-
 .../main/resources/templates/germplasm.html   | 574 +++++++++---------
 .../main/resources/templates/layout/main.html |  17 +-
 .../src/main/resources/templates/site.html    |  79 +--
 .../src/main/resources/templates/study.html   | 130 ++--
 web/src/style/style.scss                      |  76 ++-
 11 files changed, 499 insertions(+), 399 deletions(-)
 create mode 100644 backend/src/main/resources/static/assets/images/logo.png

diff --git a/backend/src/main/resources/static/assets/images/logo.png b/backend/src/main/resources/static/assets/images/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..86b3ab108693a19cca5a05c95faebd8573e23389
GIT binary patch
literal 36294
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
No{ph*g_a}g{{ePjMBxAc

literal 0
HcmV?d00001

diff --git a/backend/src/main/resources/templates/fragments/institute.html b/backend/src/main/resources/templates/fragments/institute.html
index 7e603095..a79ff6cc 100644
--- a/backend/src/main/resources/templates/fragments/institute.html
+++ b/backend/src/main/resources/templates/fragments/institute.html
@@ -11,7 +11,7 @@ Its unique argument (institute) is an InstituteVO
 
 <th:block th:fragment="institute(institute)">
   <div class="text-center py-2" th:if="${institute.logo}">
-    <img th:src="${institute.logo}" th:alt="${institute.instituteName}"/>
+    <img class="img-fluid" th:src="${institute.logo}" th:alt="${institute.instituteName}"/>
   </div>
   <div th:replace="fragments/row::text-row(label='Code', text=${institute.instituteCode})"></div>
   <div th:replace="fragments/row::text-row(label='Acronym', text=${institute.acronym})"></div>
diff --git a/backend/src/main/resources/templates/fragments/map.html b/backend/src/main/resources/templates/fragments/map.html
index 7fce9d1e..35ebed33 100644
--- a/backend/src/main/resources/templates/fragments/map.html
+++ b/backend/src/main/resources/templates/fragments/map.html
@@ -10,7 +10,7 @@ to display
 -->
 <div th:fragment="map" id="map-container" class="d-none">
   <div id="map" class="border rounded"></div>
-  <div class="map-legend mt-1">
+  <div class="map-legend mt-1 small">
     <img th:src="@{/assets/images/marker-icon-red.png}" id="red"/>
     <label for="red" class="me-2">Origin site</label>
     <img th:src="@{/assets/images/marker-icon-blue.png}" id="blue"/>
diff --git a/backend/src/main/resources/templates/fragments/row.html b/backend/src/main/resources/templates/fragments/row.html
index e5eb9e7f..8676b590 100644
--- a/backend/src/main/resources/templates/fragments/row.html
+++ b/backend/src/main/resources/templates/fragments/row.html
@@ -19,7 +19,7 @@ into a block with the condition:
   </th:block>
 -->
 
-<div th:fragment="row(label, content)" class="row py-2">
+<div th:fragment="row(label, content)" class="row f-row">
   <div class="col-md-4 label pb-1 pb-md-0" th:text="${label}"></div>
   <div class="col">
     <th:block th:replace="${content}" />
@@ -40,7 +40,7 @@ into a block with the condition:
     <div th:replace="fragments/row::text-row(label='Some label', text=${someTextExpression})"></div>
   </th:block>
 -->
-<div th:fragment="text-row(label, text)" th:unless="${#strings.isEmpty(text)}" class="row py-2">
+<div th:fragment="text-row(label, text)" th:unless="${#strings.isEmpty(text)}" class="row f-row">
   <div class="col-md-4 label pb-1 pb-md-0" th:text="${label}"></div>
   <div class="col" th:text="${text}"></div>
 </div>
diff --git a/backend/src/main/resources/templates/fragments/source.html b/backend/src/main/resources/templates/fragments/source.html
index 795717ca..b0963881 100644
--- a/backend/src/main/resources/templates/fragments/source.html
+++ b/backend/src/main/resources/templates/fragments/source.html
@@ -16,7 +16,7 @@ The entityType argument is a string, which is used in the message
   <th:block th:if="${source != null}">
     <div th:replace="fragments/row::row(label='Source', content=~{::.source})">
       <a class="source" target="_blank" th:href="${source.url}">
-        <img style="max-height: 60px;" th:src="${source.image}" th:alt="${source.name} + ' logo'" />
+        <img class="img-fluid" style="max-height: 60px;" th:src="${source.image}" th:alt="${source.name} + ' logo'" />
       </a>
     </div>
   </th:block>
diff --git a/backend/src/main/resources/templates/fragments/xrefs.html b/backend/src/main/resources/templates/fragments/xrefs.html
index 508b8923..c60310b6 100644
--- a/backend/src/main/resources/templates/fragments/xrefs.html
+++ b/backend/src/main/resources/templates/fragments/xrefs.html
@@ -9,12 +9,11 @@ Reusable fragment displaying a cross references section, with its title.
 The unique argument (crossReferences) is a List<XRefDocumentVO>
 -->
 
-<div th:fragment="xrefs(crossReferences)" th:if="${!#lists.isEmpty(crossReferences)}">
+<div class="f-card" th:fragment="xrefs(crossReferences)" th:if="${!#lists.isEmpty(crossReferences)}">
   <h2>Cross references</h2>
-
-  <div class="table-responsive scroll-big-table table-card-body">
-    <div class="card">
-      <table class="table table-sm table-striped">
+  <div class="f-card-body">
+    <div class="scroll-table-container scroll-table-container-big">
+      <table class="table table-sm table-striped table-sticky table-responsive-sm">
         <thead>
           <tr>
             <th scope="col">Name</th>
@@ -28,13 +27,12 @@ The unique argument (crossReferences) is a List<XRefDocumentVO>
             <td><a th:href="${crossRef.url}" target="_blank" th:text="${crossRef.name}"></a></td>
             <td th:text="${crossRef.databaseName}"></td>
             <td th:text="${crossRef.entryType}"></td>
-            <td th:text="${#strings.abbreviate(crossRef.description, 120)}"></td>
+            <td style="min-width: 30rem;" th:text="${#strings.abbreviate(crossRef.description, 120)}"></td>
           </tr>
         </tbody>
       </table>
     </div>
   </div>
-
 </div>
 
 </body>
diff --git a/backend/src/main/resources/templates/germplasm.html b/backend/src/main/resources/templates/germplasm.html
index 15ccd615..26c1a85b 100644
--- a/backend/src/main/resources/templates/germplasm.html
+++ b/backend/src/main/resources/templates/germplasm.html
@@ -20,7 +20,7 @@
 
   <div th:replace="fragments/map::map"></div>
 
-  <div class="row align-items-center justify-content-center">
+  <div class="row align-items-center justify-content-center mt-4">
     <div class="col-auto field" th:if="${model.germplasm.photo != null && model.germplasm.photo.thumbnailFile != null}">
       <template id="photo-popover">
         <div class="card">
@@ -34,212 +34,227 @@
         </div>
       </template>
 
-      <button class="btn btn-link p-0"
-              data-bs-toggle="popover"
-              th:data-bs-title="${model.germplasm.photo.photoName}"
-              data-bs-element="#photo-popover"
-              data-bs-container="body"
-              data-bs-trigger="focus">
+      <a role="button"
+         class="d-flex flex-column align-items-center"
+         data-bs-toggle="popover"
+         tabindex="0"
+         th:data-bs-title="${model.germplasm.photo.photoName}"
+         data-bs-element="#photo-popover"
+         data-bs-container="body"
+         data-bs-trigger="focus">
         <img th:src="${model.germplasm.photo.thumbnailFile}" class="img-fluid" />
 
         <figcaption class="figure-caption">
           © <span th:text="${model.germplasm.photo.copyright}"></span>
         </figcaption>
-      </button>
+      </a>
     </div>
 
-
     <div class="col-12 col-lg">
-      <h2>Identification</h2>
-
-      <div th:replace="fragments/row::text-row(label='Germplasm name', text=${model.germplasm.germplasmName})"></div>
-      <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.accessionNumber})"></div>
+      <div class="f-card">
+        <h2>Identification</h2>
 
-      <div th:replace="fragments/source::source(source=${model.source}, url=${model.germplasm.url}, entityType='germplasm')"></div>
+        <div class="f-card-body">
+          <div th:replace="fragments/row::text-row(label='Germplasm name', text=${model.germplasm.germplasmName})"></div>
+          <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.accessionNumber})"></div>
 
-      <th:block th:unless="${#lists.isEmpty(model.germplasm.synonyms)}">
-        <div th:replace="fragments/row::row(label='Accession synonyms', content=~{::#accession-synonyms})">
-          <div id="accession-synonyms" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.synonyms, ', ')}"></div>
-        </div>
-      </th:block>
+          <div th:replace="fragments/source::source(source=${model.source}, url=${model.germplasm.url}, entityType='germplasm')"></div>
 
-      <th:block th:unless="${#strings.isEmpty(model.taxon)}">
-        <div th:replace="fragments/row::row(label='Taxon', content=~{::#taxon})">
-          <div id="taxon">
-            <template id="taxon-popover">
-              <th:block th:unless="${#strings.isEmpty(model.germplasm.genus)}">
-                <div th:replace="fragments/row::row(label='Genus', content=~{::#taxon-genus})">
-                  <em id="taxon-genus" th:text="${model.germplasm.genus}"></em>
-                </div>
-              </th:block>
-              <th:block th:unless="${#strings.isEmpty(model.germplasm.species)}">
-                <div th:replace="fragments/row::row(label='Species', content=~{::#taxon-species})">
-                  <span id="taxon-species">
-                    <em th:text="${model.germplasm.species}"></em>
-                    <span th:unless="${#strings.isEmpty(model.germplasm.speciesAuthority)}"
-                          th:text="${'(' + model.germplasm.speciesAuthority + ')'}"></span>
-                  </span>
-                </div>
-              </th:block>
-              <th:block th:unless="${#strings.isEmpty(model.germplasm.subtaxa)}">
-                <div th:replace="fragments/row::row(label='Subtaxa', content=~{::#taxon-subtaxa})">
-                  <span id="taxon-subtaxa">
-                    <em th:text="${model.germplasm.subtaxa}"></em>
-                    <span th:unless="${#strings.isEmpty(model.germplasm.subtaxaAuthority)}"
-                          th:text="${'(' + model.germplasm.subtaxaAuthority + ')'}"></span>
-                  </span>
-                </div>
-              </th:block>
-
-              <div th:replace="fragments/row::text-row(label='Authority', text=${model.taxonAuthor})"></div>
+          <th:block th:unless="${#lists.isEmpty(model.germplasm.synonyms)}">
+            <div th:replace="fragments/row::row(label='Accession synonyms', content=~{::#accession-synonyms})">
+              <div id="accession-synonyms" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.synonyms, ', ')}"></div>
+            </div>
+          </th:block>
 
-              <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonIds)}">
-                <div th:replace="fragments/row::row(label='Taxon IDs', content=~{::#taxon-ids})">
-                  <div id="taxon-ids">
-                    <div th:each="taxonId : ${model.germplasm.taxonIds}" class="row">
-                      <div class="col-6 text-nowrap" th:text="${taxonId.sourceName}"></div>
-                      <div class="col-6">
-                        <span class="taxon-id"
-                              th:replace="fragments/link::link(label=${taxonId.taxonId}, url=${#faidare.taxonIdUrl(taxonId)})"></span>
+          <th:block th:unless="${#strings.isEmpty(model.taxon)}">
+            <div th:replace="fragments/row::row(label='Taxon', content=~{::#taxon})">
+              <div id="taxon">
+                <template id="taxon-popover">
+                  <th:block th:unless="${#strings.isEmpty(model.germplasm.genus)}">
+                    <div th:replace="fragments/row::row(label='Genus', content=~{::#taxon-genus})">
+                      <em id="taxon-genus" th:text="${model.germplasm.genus}"></em>
+                    </div>
+                  </th:block>
+                  <th:block th:unless="${#strings.isEmpty(model.germplasm.species)}">
+                    <div th:replace="fragments/row::row(label='Species', content=~{::#taxon-species})">
+                      <span id="taxon-species">
+                        <em th:text="${model.germplasm.species}"></em>
+                        <span th:unless="${#strings.isEmpty(model.germplasm.speciesAuthority)}"
+                              th:text="${'(' + model.germplasm.speciesAuthority + ')'}"></span>
+                      </span>
+                    </div>
+                  </th:block>
+                  <th:block th:unless="${#strings.isEmpty(model.germplasm.subtaxa)}">
+                    <div th:replace="fragments/row::row(label='Subtaxa', content=~{::#taxon-subtaxa})">
+                      <span id="taxon-subtaxa">
+                        <em th:text="${model.germplasm.subtaxa}"></em>
+                        <span th:unless="${#strings.isEmpty(model.germplasm.subtaxaAuthority)}"
+                              th:text="${'(' + model.germplasm.subtaxaAuthority + ')'}"></span>
+                      </span>
+                    </div>
+                  </th:block>
+
+                  <div th:replace="fragments/row::text-row(label='Authority', text=${model.taxonAuthor})"></div>
+
+                  <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonIds)}">
+                    <div th:replace="fragments/row::row(label='Taxon IDs', content=~{::#taxon-ids})">
+                      <div id="taxon-ids">
+                        <div th:each="taxonId : ${model.germplasm.taxonIds}" class="row">
+                          <div class="col-6 text-nowrap" th:text="${taxonId.sourceName}"></div>
+                          <div class="col-6">
+                            <span class="taxon-id"
+                                  th:replace="fragments/link::link(label=${taxonId.taxonId}, url=${#faidare.taxonIdUrl(taxonId)})"></span>
+                          </div>
+                        </div>
                       </div>
                     </div>
-                  </div>
-                </div>
-              </th:block>
+                  </th:block>
 
-              <div th:replace="fragments/row::text-row(label='Comment', text=${model.germplasm.taxonComment})"></div>
-              <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonCommonNames)}">
-                <div th:replace="fragments/row::row(label='Taxon common names', content=~{::#taxon-common-names})">
-                  <div id="taxon-common-names" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.taxonCommonNames, ', ')}"></div>
-                </div>
-              </th:block>
-              <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonSynonyms)}">
-                <div th:replace="fragments/row::row(label='Taxon synonyms', content=~{::#taxon-synonyms})">
-                  <div id="taxon-synonyms" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.taxonSynonyms, ', ')}"></div>
-                </div>
-              </th:block>
-            </template>
-            <button class="btn btn-link p-0"
-                    data-bs-toggle="popover"
-                    th:data-bs-title="${model.taxon}"
-                    data-bs-element="#taxon-popover"
-                    data-bs-container="body"
-                    data-bs-trigger="focus">
-              <em th:text="${model.taxon}"></em>
-              <th:block th:unless="${#strings.isEmpty(model.taxonAuthor)}">(<span th:text="${model.taxonAuthor}"></span>)</th:block>
-            </button>
-          </div>
-        </div>
-      </th:block>
+                  <div th:replace="fragments/row::text-row(label='Comment', text=${model.germplasm.taxonComment})"></div>
+                  <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonCommonNames)}">
+                    <div th:replace="fragments/row::row(label='Taxon common names', content=~{::#taxon-common-names})">
+                      <div id="taxon-common-names" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.taxonCommonNames, ', ')}"></div>
+                    </div>
+                  </th:block>
+                  <th:block th:unless="${#lists.isEmpty(model.germplasm.taxonSynonyms)}">
+                    <div th:replace="fragments/row::row(label='Taxon synonyms', content=~{::#taxon-synonyms})">
+                      <div id="taxon-synonyms" class="content-overflow" th:text="${#strings.listJoin(model.germplasm.taxonSynonyms, ', ')}"></div>
+                    </div>
+                  </th:block>
+                </template>
+                <a role="button"
+                   tabindex="0"
+                   data-bs-toggle="popover"
+                   th:data-bs-title="${model.taxon}"
+                   data-bs-element="#taxon-popover"
+                   data-bs-container="body"
+                   data-bs-trigger="focus">
+                  <em th:text="${model.taxon}"></em>
+                  <th:block th:unless="${#strings.isEmpty(model.taxonAuthor)}">(<span th:text="${model.taxonAuthor}"></span>)</th:block>
+                </a>
+              </div>
+            </div>
+          </th:block>
 
-      <div th:replace="fragments/row::text-row(label='Biological status', text=${model.germplasm.biologicalStatusOfAccessionCode})"></div>
-      <div th:replace="fragments/row::text-row(label='Genetic nature', text=${model.germplasm.geneticNature})"></div>
-      <div th:replace="fragments/row::text-row(label='Seed source', text=${model.germplasm.seedSource})"></div>
-      <div th:replace="fragments/row::text-row(label='Pedigree', text=${model.germplasm.pedigree})"></div>
-      <div th:replace="fragments/row::text-row(label='Comments', text=${model.germplasm.comment})"></div>
+          <div th:replace="fragments/row::text-row(label='Biological status', text=${model.germplasm.biologicalStatusOfAccessionCode})"></div>
+          <div th:replace="fragments/row::text-row(label='Genetic nature', text=${model.germplasm.geneticNature})"></div>
+          <div th:replace="fragments/row::text-row(label='Seed source', text=${model.germplasm.seedSource})"></div>
+          <div th:replace="fragments/row::text-row(label='Pedigree', text=${model.germplasm.pedigree})"></div>
+          <div th:replace="fragments/row::text-row(label='Comments', text=${model.germplasm.comment})"></div>
 
-      <th:block th:if="${model.germplasm.originSite != null && !#strings.isEmpty(model.germplasm.originSite.siteName)}">
-        <div th:replace="fragments/row::row(label='Origin site', content=~{::#origin-site})">
-          <a id="origin-site" th:href="@{/sites/{siteId}(siteId=${#faidare.toSiteParam(model.germplasm.originSite.siteId)})}" th:text="${model.germplasm.originSite.siteName}"></a>
+          <th:block th:if="${model.germplasm.originSite != null && !#strings.isEmpty(model.germplasm.originSite.siteName)}">
+            <div th:replace="fragments/row::row(label='Origin site', content=~{::#origin-site})">
+              <a id="origin-site" th:href="@{/sites/{siteId}(siteId=${#faidare.toSiteParam(model.germplasm.originSite.siteId)})}" th:text="${model.germplasm.originSite.siteName}"></a>
+            </div>
+          </th:block>
         </div>
-      </th:block>
+      </div>
     </div>
   </div>
 
-  <th:block th:if="${model.germplasm.holdingInstitute}">
+  <div class="f-card" th:if="${model.germplasm.holdingInstitute}">
     <h2>Depositary</h2>
-    <template id="holding-institute-popover">
-      <div th:replace="fragments/institute::institute(institute=${model.germplasm.holdingInstitute})"></div>
-    </template>
-    <div th:replace="fragments/row::row(label='Institution', content=~{::#institution})">
-      <button id="institution"
-              data-bs-toggle="popover"
-              th:data-bs-title="${model.germplasm.holdingInstitute.instituteName}"
-              data-bs-element="#holding-institute-popover"
-              data-bs-container="body"
-              data-bs-trigger="focus"
-              class="btn btn-link p-0"
-              th:text="${model.germplasm.holdingInstitute.instituteName}"></button>
-    </div>
-
-    <th:block th:if="${model.germplasm.holdingGenbank != null && !#strings.isEmpty(model.germplasm.holdingGenbank.instituteName) && !#strings.isEmpty(model.germplasm.holdingGenbank.webSite)}">
-      <div th:replace="fragments/row::row(label='Stock center name', content=~{::#stock-center-name})">
-        <a id="stock-center-name"
-           target="_blank"
-           th:href="${model.germplasm.holdingGenbank.webSite}"
-           th:text="${model.germplasm.holdingGenbank.instituteName}"></a>
+    <div class="f-card-body">
+      <template id="holding-institute-popover">
+        <div th:replace="fragments/institute::institute(institute=${model.germplasm.holdingInstitute})"></div>
+      </template>
+      <div th:replace="fragments/row::row(label='Institution', content=~{::#institution})">
+        <a id="institution"
+           role="button"
+           tabindex="0"
+           data-bs-toggle="popover"
+           th:data-bs-title="${model.germplasm.holdingInstitute.instituteName}"
+           data-bs-element="#holding-institute-popover"
+           data-bs-container="body"
+           data-bs-trigger="focus"
+           th:text="${model.germplasm.holdingInstitute.instituteName}"></a>
       </div>
-    </th:block>
 
-    <div th:replace="fragments/row::text-row(label='Presence status', text=${model.germplasm.presenceStatus})"></div>
-  </th:block>
+      <th:block th:if="${model.germplasm.holdingGenbank != null && !#strings.isEmpty(model.germplasm.holdingGenbank.instituteName) && !#strings.isEmpty(model.germplasm.holdingGenbank.webSite)}">
+        <div th:replace="fragments/row::row(label='Stock center name', content=~{::#stock-center-name})">
+          <a id="stock-center-name"
+             target="_blank"
+             th:href="${model.germplasm.holdingGenbank.webSite}"
+             th:text="${model.germplasm.holdingGenbank.instituteName}"></a>
+        </div>
+      </th:block>
+
+      <div th:replace="fragments/row::text-row(label='Presence status', text=${model.germplasm.presenceStatus})"></div>
+    </div>
+  </div>
 
-  <th:block th:if="${model.collecting}">
+  <div class="f-card" th:if="${model.collecting}">
     <h2>Collector</h2>
-    <th:block th:if="${model.germplasm.collectingSite != null && !#strings.isEmpty(model.germplasm.collectingSite.siteName)}">
-      <div th:replace="fragments/row::row(label='Collecting site', content=~{::#collecting-site})">
-        <a id="collecting-site"
-           th:href="@{/sites/{siteId}(siteId=${#faidare.toSiteParam(model.germplasm.collectingSite.siteId)})}"
-           th:text="${model.germplasm.collectingSite.siteName}"
-        ></a>
-      </div>
-    </th:block>
+    <div class="f-card-body">
+      <th:block th:if="${model.germplasm.collectingSite != null && !#strings.isEmpty(model.germplasm.collectingSite.siteName)}">
+        <div th:replace="fragments/row::row(label='Collecting site', content=~{::#collecting-site})">
+          <a id="collecting-site"
+             th:href="@{/sites/{siteId}(siteId=${#faidare.toSiteParam(model.germplasm.collectingSite.siteId)})}"
+             th:text="${model.germplasm.collectingSite.siteName}"
+          ></a>
+        </div>
+      </th:block>
 
-    <div th:replace="fragments/row::text-row(label='Material type', text=${model.germplasm.collector.materialType})"></div>
-    <div th:replace="fragments/row::text-row(label='Collectors', text=${model.germplasm.collector.collectors})"></div>
+      <div th:replace="fragments/row::text-row(label='Material type', text=${model.germplasm.collector.materialType})"></div>
+      <div th:replace="fragments/row::text-row(label='Collectors', text=${model.germplasm.collector.collectors})"></div>
 
-    <th:block th:if="${!#strings.isEmpty(model.germplasm.acquisitionDate) && model.germplasm.collector.accessionCreationDate == null}">
-      <div th:replace="fragments/row::text-row(label='Acquisition / Creation date', text=${model.germplasm.acquisitionDate})"></div>
-    </th:block>
+      <th:block th:if="${!#strings.isEmpty(model.germplasm.acquisitionDate) && model.germplasm.collector.accessionCreationDate == null}">
+        <div th:replace="fragments/row::text-row(label='Acquisition / Creation date', text=${model.germplasm.acquisitionDate})"></div>
+      </th:block>
 
-    <th:block th:if="${model.germplasm.collector.institute != null && !#strings.isEmpty(model.germplasm.collector.institute.instituteName)}">
-      <template id="collector-institute-popover">
-        <div th:replace="fragments/institute::institute(institute=${model.germplasm.collector.institute})"></div>
-      </template>
-      <div th:replace="fragments/row::row(label='Institution', content=~{::#collecting-institution})">
-        <button id="collecting-institution"
-                data-bs-toggle="popover"
-                th:data-bs-title="${model.germplasm.collector.institute.instituteName}"
-                data-bs-element="#collector-institute-popover"
-                data-bs-container="body"
-                data-bs-trigger="focus"
-                class="btn btn-link p-0"
-                th:text="${model.germplasm.collector.institute.instituteName}"></button>
-      </div>
-    </th:block>
+      <th:block th:if="${model.germplasm.collector.institute != null && !#strings.isEmpty(model.germplasm.collector.institute.instituteName)}">
+        <template id="collector-institute-popover">
+          <div th:replace="fragments/institute::institute(institute=${model.germplasm.collector.institute})"></div>
+        </template>
+        <div th:replace="fragments/row::row(label='Institution', content=~{::#collecting-institution})">
+          <a id="collecting-institution"
+             role="button"
+             tabindex="0"
+             data-bs-toggle="popover"
+             th:data-bs-title="${model.germplasm.collector.institute.instituteName}"
+             data-bs-element="#collector-institute-popover"
+             data-bs-container="body"
+             data-bs-trigger="focus"
+             th:text="${model.germplasm.collector.institute.instituteName}"></a>
+        </div>
+      </th:block>
 
-    <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.collector.accessionNumber})"></div>
-  </th:block>
+      <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.collector.accessionNumber})"></div>
+    </div>
+  </div>
 
-  <th:block th:if="${model.breeding}">
+  <div class="f-card" th:if="${model.breeding}">
     <h2>Breeder</h2>
-    <th:block th:if="${model.germplasm.breeder.institute != null && !#strings.isEmpty(model.germplasm.breeder.institute.instituteName)}">
-      <template id="breeder-institute-popover">
-        <div th:replace="fragments/institute::institute(institute=${model.germplasm.breeder.institute})"></div>
-      </template>
-      <div th:replace="fragments/row::row(label='Institute', content=~{::#breeding-institution})">
-        <button id="breeding-institution"
-                data-bs-toggle="popover"
-                th:data-bs-title="${model.germplasm.breeder.institute.instituteName}"
-                data-bs-element="#breeder-institute-popover"
-                data-bs-container="body"
-                data-bs-trigger="focus"
-                class="btn btn-link p-0"
-                th:text="${model.germplasm.breeder.institute.instituteName}"></button>
-      </div>
-    </th:block>
+    <div class="f-card-body">
+      <th:block th:if="${model.germplasm.breeder.institute != null && !#strings.isEmpty(model.germplasm.breeder.institute.instituteName)}">
+        <template id="breeder-institute-popover">
+          <div th:replace="fragments/institute::institute(institute=${model.germplasm.breeder.institute})"></div>
+        </template>
+        <div th:replace="fragments/row::row(label='Institute', content=~{::#breeding-institution})">
+          <a id="breeding-institution"
+             role="button"
+             tabindex="0"
+             data-bs-toggle="popover"
+             th:data-bs-title="${model.germplasm.breeder.institute.instituteName}"
+             data-bs-element="#breeder-institute-popover"
+             data-bs-container="body"
+             data-bs-trigger="focus"
+             th:text="${model.germplasm.breeder.institute.instituteName}"></a>
+        </div>
+      </th:block>
 
-    <div th:replace="fragments/row::text-row(label='Accession creation year', text=${model.germplasm.breeder.accessionCreationDate})"></div>
-    <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.breeder.accessionNumber})"></div>
-    <div th:replace="fragments/row::text-row(label='Catalog registration year', text=${model.germplasm.breeder.registrationYear})"></div>
-    <div th:replace="fragments/row::text-row(label='Catalog deregistration year', text=${model.germplasm.breeder.deregistrationYear})"></div>
-  </th:block>
+      <div th:replace="fragments/row::text-row(label='Accession creation year', text=${model.germplasm.breeder.accessionCreationDate})"></div>
+      <div th:replace="fragments/row::text-row(label='Accession number', text=${model.germplasm.breeder.accessionNumber})"></div>
+      <div th:replace="fragments/row::text-row(label='Catalog registration year', text=${model.germplasm.breeder.registrationYear})"></div>
+      <div th:replace="fragments/row::text-row(label='Catalog deregistration year', text=${model.germplasm.breeder.deregistrationYear})"></div>
+    </div>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.germplasm.donors)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.germplasm.donors)}">
     <h2>Donors</h2>
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Institute name</th>
@@ -255,13 +270,14 @@
                 <template th:id="${'donor-institute-popover-' + donorIterStat.index}">
                   <div th:replace="fragments/institute::institute(institute=${row.donorInstitute})"></div>
                 </template>
-                <button data-bs-toggle="popover"
-                        th:data-bs-title="${row.donorInstitute.instituteName}"
-                        th:data-bs-element="${'#donor-institute-popover-' + donorIterStat.index}"
-                        data-bs-container="body"
-                        data-bs-trigger="focus"
-                        class="btn btn-link p-0"
-                        th:text="${row.donorInstitute.instituteName}"></button>
+                <a role="button"
+                   tabindex="0"
+                   data-bs-toggle="popover"
+                   th:data-bs-title="${row.donorInstitute.instituteName}"
+                   th:data-bs-element="${'#donor-institute-popover-' + donorIterStat.index}"
+                   data-bs-container="body"
+                   data-bs-trigger="focus"
+                   th:text="${row.donorInstitute.instituteName}"></a>
               </td>
               <td th:text="${row.donorInstituteCode}"></td>
               <td th:text="${row.donationDate}"></td>
@@ -272,13 +288,13 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.germplasm.distributors)}">
-    <h2>Donors</h2>
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.germplasm.distributors)}">
+    <h2>Distributors</h2>
+    <div class="f-card-body">
+      <div class="scroll-table-container">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Institute</th>
@@ -292,13 +308,13 @@
                 <template th:id="${'distributor-institute-popover-' + distributorIterStat.index}">
                   <div th:replace="fragments/institute::institute(institute=${row.institute})"></div>
                 </template>
-                <button data-bs-toggle="popover"
-                        th:data-bs-title="${row.institute.instituteName}"
-                        th:data-bs-element="${'#distributor-institute-popover-' + distributorIterStat.index}"
-                        data-bs-container="body"
-                        data-bs-trigger="focus"
-                        class="btn btn-link p-0"
-                        th:text="${row.institute.instituteName}"></button>
+                <a role="button"
+                   tabindex="0"
+                   th:data-bs-title="${row.institute.instituteName}"
+                   th:data-bs-element="${'#distributor-institute-popover-' + distributorIterStat.index}"
+                   data-bs-container="body"
+                   data-bs-trigger="focus"
+                   th:text="${row.institute.instituteName}"></a>
               </td>
               <td th:text="${row.accessionNumber}"></td>
               <td th:text="${row.distributionStatus}"></td>
@@ -307,112 +323,120 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.attributes)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.attributes)}">
     <h2>Evaluation Data</h2>
-    <th:block th:each="descriptor : ${model.attributes}">
-      <div th:replace="fragments/row::text-row(label=${descriptor.attributeName}, text=${descriptor.value})"></div>
-    </th:block>
-  </th:block>
+    <div class="f-card-body">
+      <th:block th:each="descriptor : ${model.attributes}">
+        <div th:replace="fragments/row::text-row(label=${descriptor.attributeName}, text=${descriptor.value})"></div>
+      </th:block>
+    </div>
+  </div>
 
-  <th:block th:if="${model.genealogyPresent}">
+  <div class="f-card" th:if="${model.genealogyPresent}">
     <h2>Genealogy</h2>
+    <div class="f-card-body">
+      <th:block th:if="${model.pedigree != null}">
+        <div th:replace="fragments/row::text-row(label='Crossing plan', text=${model.pedigree.crossingPlan})"></div>
+        <div th:replace="fragments/row::text-row(label='Crossing year', text=${model.pedigree.crossingYear})"></div>
+        <div th:replace="fragments/row::text-row(label='Family code', text=${model.pedigree.familyCode})"></div>
+        <th:block th:unless="${#strings.isEmpty(model.pedigree.parent1Name)}">
+          <div th:replace="fragments/row::row(label='Parent accessions', content=~{::#parent-accessions})">
+            <div id="parent-accessions">
+              <th:block th:if="${model.pedigree.parent1DbId}">
+                <div th:replace="fragments/row::row(label=${model.pedigree.parent1Type}, content=~{::#parent1-link})">
+                  <a id="parent1-link" th:href="@{/germplasms/{germplasmId}(germplasmId=${model.pedigree.parent1DbId})}" th:text="${model.pedigree.parent1Name}"></a>
+                </div>
+              </th:block>
 
-    <th:block th:if="${model.pedigree != null}">
-      <div th:replace="fragments/row::text-row(label='Crossing plan', text=${model.pedigree.crossingPlan})"></div>
-      <div th:replace="fragments/row::text-row(label='Crossing year', text=${model.pedigree.crossingYear})"></div>
-      <div th:replace="fragments/row::text-row(label='Family code', text=${model.pedigree.familyCode})"></div>
-      <th:block th:unless="${#strings.isEmpty(model.pedigree.parent1Name)}">
-        <div th:replace="fragments/row::row(label='Parent accessions', content=~{::#parent-accessions})">
-          <div id="parent-accessions">
-            <th:block th:if="${model.pedigree.parent1DbId}">
-              <div th:replace="fragments/row::row(label=${model.pedigree.parent1Type}, content=~{::#parent1-link})">
-                <a id="parent1-link" th:href="@{/germplasms/{germplasmId}(germplasmId=${model.pedigree.parent1DbId})}" th:text="${model.pedigree.parent1Name}"></a>
-              </div>
-            </th:block>
+              <th:block th:if="${model.pedigree.parent2DbId}">
+                <div th:replace="fragments/row::row(label=${model.pedigree.parent2Type}, content=~{::#parent2-link})">
+                  <a id="parent2-link" th:href="@{/germplasms/{germplasmId}(germplasmId=${model.pedigree.parent2DbId})}" th:text="${model.pedigree.parent2Name}"></a>
+                </div>
+              </th:block>
+            </div>
+          </div>
+        </th:block>
 
-            <th:block th:if="${model.pedigree.parent2DbId}">
-              <div th:replace="fragments/row::row(label=${model.pedigree.parent2Type}, content=~{::#parent2-link})">
-                <a id="parent2-link" th:href="@{/germplasms/{germplasmId}(germplasmId=${model.pedigree.parent2DbId})}" th:text="${model.pedigree.parent2Name}"></a>
-              </div>
-            </th:block>
+        <th:block th:unless="${#lists.isEmpty(model.pedigree.siblings)}">
+          <div th:replace="fragments/row::row(label='Sibling accessions', content=~{::#sibling-accessions})">
+            <div id="sibling-accessions" class="content-overflow">
+              <a th:each="sibling : ${model.pedigree.siblings}"
+                 th:href="@{/germplasms/{germplasmId}(germplasmId=${sibling.germplasmDbId})}"
+                 th:text="${sibling.defaultDisplayName}"></a>
+            </div>
           </div>
-        </div>
+        </th:block>
       </th:block>
 
-      <th:block th:unless="${#lists.isEmpty(model.pedigree.siblings)}">
-        <div th:replace="fragments/row::row(label='Sibling accessions', content=~{::#sibling-accessions})">
-          <div id="sibling-accessions" class="content-overflow">
-            <a th:each="sibling : ${model.pedigree.siblings}"
-               th:href="@{/germplasms/{germplasmId}(germplasmId=${sibling.germplasmDbId})}"
-               th:text="${sibling.defaultDisplayName}"></a>
+      <th:block th:unless="${#lists.isEmpty(model.germplasm.children)}">
+        <div th:replace="fragments/row::row(label='Descendants', content=~{::#descendants})">
+          <div id="descendants" class="content-overflow content-overflow-big">
+            <th:block th:each="child : ${model.germplasm.children}">
+              <div th:replace="fragments/row::row(label=${#strings.isEmpty(child.secondParentName) ? ('children of ' + child.firstParentName) : ('children of ' + child.firstParentName + ' x ' + child.secondParentName) }, content=~{::.descendant-child})">
+                <div class="descendant-child">
+                  <th:block th:each="sibling, siblingIterStat : ${child.sibblings}">
+                    <a th:href="@{/germplasms(pui=${sibling.pui})}"
+                       th:text="${sibling.name}"></a><th:block th:unless="${siblingIterStat.last}">, </th:block>
+                  </th:block>
+                </div>
+              </div>
+            </th:block>
           </div>
         </div>
       </th:block>
-    </th:block>
-
-    <th:block th:unless="${#lists.isEmpty(model.germplasm.children)}">
-      <div th:replace="fragments/row::row(label='Descendants', content=~{::#descendants})">
-        <div id="descendants" class="content-overflow-big">
-          <th:block th:each="child : ${model.germplasm.children}">
-            <div th:replace="fragments/row::row(label=${#strings.isEmpty(child.secondParentName) ? ('children of ' + child.firstParentName) : ('children of ' + child.firstParentName + ' x ' + child.secondParentName) }, content=~{::.descendant-child})">
-              <div class="descendant-child">
-                <th:block th:each="sibling, siblingIterStat : ${child.sibblings}">
-                  <a th:href="@{/germplasms(pui=${sibling.pui})}"
-                     th:text="${sibling.name}"></a><th:block th:unless="${siblingIterStat.last}">, </th:block>
-                </th:block>
+    </div>
+  </div>
+
+  <div class="f-card" th:unless="${#lists.isEmpty(model.germplasm.population)}">
+    <h2>Population</h2>
+    <div class="f-card-body">
+      <th:block th:each="population : ${model.germplasm.population}">
+
+        <th:block th:if="${population.germplasmRef != null}">
+          <th:block th:unless="${#strings.isEmpty(population.germplasmRef.pui)}">
+            <div th:replace="fragments/row::row(label=${#faidare.collPopTitle(population)}, content=~{::.population-1})">
+              <div class="population-1">
+                <a th:if="${population.germplasmRef.pui != model.germplasm.germplasmPUI}"
+                   th:href="@{/germplasms(pui=${population.germplasmRef.pui})}"
+                   th:text="${population.germplasmRef.name}"></a>
+                <span th:if="${population.germplasmRef.pui == model.germplasm.germplasmPUI}"
+                      th:text="${population.germplasmRef.name}"></span>
+                is composed by <span th:text="${population.germplasmCount}"></span> accession(s)
+                <!-- TODO there was a link pointing at a search here -->
               </div>
             </div>
           </th:block>
-        </div>
-      </div>
-    </th:block>
-
-  </th:block>
+        </th:block>
 
-  <th:block th:unless="${#lists.isEmpty(model.germplasm.population)}">
-    <h2>Population</h2>
-    <th:block th:each="population : ${model.germplasm.population}">
-
-      <th:block th:if="${population.germplasmRef != null}">
-        <th:block th:unless="${#strings.isEmpty(population.germplasmRef.pui)}">
-          <div th:replace="fragments/row::row(label=${#faidare.collPopTitle(population)}, content=~{::.population-1})">
-            <div class="population-1">
-              <a th:if="${population.germplasmRef.pui != model.germplasm.germplasmPUI}"
-                 th:href="@{/germplasms(pui=${population.germplasmRef.pui})}"
-                 th:text="${population.germplasmRef.name}"></a>
-              <span th:if="${population.germplasmRef.pui == model.germplasm.germplasmPUI}"
-                    th:text="${population.germplasmRef.name}"></span>
-              is composed by <span th:text="${population.germplasmCount}"></span> accession(s)
-              <!-- TODO there was a link pointing at a search here -->
-            </div>
-          </div>
+        <th:block th:if="${population.germplasmRef == null}">
+          <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitle(population)}, text=${population.germplasmCount + ' accession(s)'})"></div>
+          <!-- TODO there was a link pointing at a search here -->
         </th:block>
       </th:block>
+    </div>
+  </div>
 
-      <th:block th:if="${population.germplasmRef == null}">
-        <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitle(population)}, text=${population.germplasmCount + ' accession(s)'})"></div>
+  <div class="f-card" th:unless="${#lists.isEmpty(model.germplasm.collection)}">
+    <h2>Collection</h2>
+    <div class="f-card-body">
+      <th:block th:each="collection : ${model.germplasm.collection}">
+        <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitle(collection)}, text=${collection.germplasmCount + ' accession(s)'})"></div>
         <!-- TODO there was a link pointing at a search here -->
       </th:block>
-    </th:block>
-  </th:block>
-
-  <th:block th:unless="${#lists.isEmpty(model.germplasm.collection)}">
-    <h2>Collection</h2>
-    <th:block th:each="collection : ${model.germplasm.collection}">
-      <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitle(collection)}, text=${collection.germplasmCount + ' accession(s)'})"></div>
-      <!-- TODO there was a link pointing at a search here -->
-    </th:block>
-  </th:block>
+    </div>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.germplasm.panel)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.germplasm.panel)}">
     <h2>Panel</h2>
-    <th:block th:each="panel : ${model.germplasm.panel}">
-      <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitleWithoutUnderscores(panel)}, text=${panel.germplasmCount + ' accession(s)'})"></div>
-      <!-- TODO there was a link pointing at a search here -->
-    </th:block>
-  </th:block>
+    <div class="f-card-body">
+      <th:block th:each="panel : ${model.germplasm.panel}">
+        <div th:replace="fragments/row::text-row(label=${#faidare.collPopTitleWithoutUnderscores(panel)}, text=${panel.germplasmCount + ' accession(s)'})"></div>
+        <!-- TODO there was a link pointing at a search here -->
+      </th:block>
+    </div>
+  </div>
 
   <div th:replace="fragments/xrefs::xrefs(crossReferences=${model.crossReferences})"></div>
 </main>
diff --git a/backend/src/main/resources/templates/layout/main.html b/backend/src/main/resources/templates/layout/main.html
index 47bfcf0d..22c36a5e 100644
--- a/backend/src/main/resources/templates/layout/main.html
+++ b/backend/src/main/resources/templates/layout/main.html
@@ -12,18 +12,17 @@
   </head>
 
   <body>
-    <div class="container">
-      <header>
-        Common header
-      </header>
-
+    <nav class="navbar navbar-expand-lg navbar-light bg-light">
+      <div class="container">
+        <span class="navbar-brand py-0">
+          <img th:src="@{/assets/images/logo.png}" style="height: 40px"/>
+        </span>
+      </div>
+    </nav>
+    <div class="container mt-3">
       <div th:replace="${content}">
         <p>Layout content</p>
       </div>
-
-      <footer>
-        common footer
-      </footer>
     </div>
     <script type="text/javascript" th:src="@{/assets/script.js}"></script>
     <script type="text/javascript" th:replace="${script}"></script>
diff --git a/backend/src/main/resources/templates/site.html b/backend/src/main/resources/templates/site.html
index d859f4f2..c3bd01b2 100644
--- a/backend/src/main/resources/templates/site.html
+++ b/backend/src/main/resources/templates/site.html
@@ -15,48 +15,55 @@
 
   <div th:replace="fragments/map::map"></div>
 
-  <th:block th:if="${model.site.uri != null && !model.site.uri.startsWith('urn:')}">
-    <div th:replace="fragments/row::text-row(label='Permanent unique identifier', text=${model.site.uri})"></div>
-  </th:block>
+  <div class="f-card mt-4">
+    <h2>Details</h2>
+    <div class="f-card-body">
+      <th:block th:if="${model.site.uri != null && !model.site.uri.startsWith('urn:')}">
+        <div th:replace="fragments/row::text-row(label='Permanent unique identifier', text=${model.site.uri})"></div>
+      </th:block>
 
-  <div th:replace="fragments/source::source(source=${model.source}, url=${model.site.url}, entityType='site')"></div>
+      <div th:replace="fragments/source::source(source=${model.source}, url=${model.site.url}, entityType='site')"></div>
 
-  <div th:replace="fragments/row::text-row(label='Abbreviation', text=${model.site.abbreviation})"></div>
-  <div th:replace="fragments/row::text-row(label='Type', text=${model.site.locationType})"></div>
-  <div th:replace="fragments/row::text-row(label='Status', text=${model.siteStatus})"></div>
-  <div th:replace="fragments/row::text-row(label='Institution/Landowner', text=${model.site.instituteName})"></div>
-  <div th:replace="fragments/row::text-row(label='Institution address', text=${model.site.instituteAddress})"></div>
-  <div th:replace="fragments/row::text-row(label='Coordinates precision', text=${model.coordinatesPrecision})"></div>
-  <th:block th:if="${model.site.latitude}">
-    <div th:replace="fragments/row::text-row(label='Latitude', text=${#coordinates.formatLatitude(model.site.latitude)})"></div>
-  </th:block>
-  <th:block th:if="${model.site.longitude}">
-    <div th:replace="fragments/row::text-row(label='Longitude', text=${#coordinates.formatLongitude(model.site.longitude)})"></div>
-  </th:block>
-  <div th:replace="fragments/row::text-row(label='Geographical location', text=${model.geographicalLocation})"></div>
-  <th:block th:if="${model.site.countryName != null && model.geographicalLocation == null}">
-    <div th:replace="fragments/row::text-row(label='Country name', text=${model.site.countryName})"></div>
-  </th:block>
+      <div th:replace="fragments/row::text-row(label='Abbreviation', text=${model.site.abbreviation})"></div>
+      <div th:replace="fragments/row::text-row(label='Type', text=${model.site.locationType})"></div>
+      <div th:replace="fragments/row::text-row(label='Status', text=${model.siteStatus})"></div>
+      <div th:replace="fragments/row::text-row(label='Institution/Landowner', text=${model.site.instituteName})"></div>
+      <div th:replace="fragments/row::text-row(label='Institution address', text=${model.site.instituteAddress})"></div>
+      <div th:replace="fragments/row::text-row(label='Coordinates precision', text=${model.coordinatesPrecision})"></div>
+      <th:block th:if="${model.site.latitude}">
+        <div th:replace="fragments/row::text-row(label='Latitude', text=${#coordinates.formatLatitude(model.site.latitude)})"></div>
+      </th:block>
+      <th:block th:if="${model.site.longitude}">
+        <div th:replace="fragments/row::text-row(label='Longitude', text=${#coordinates.formatLongitude(model.site.longitude)})"></div>
+      </th:block>
+      <div th:replace="fragments/row::text-row(label='Geographical location', text=${model.geographicalLocation})"></div>
+      <th:block th:if="${model.site.countryName != null && model.geographicalLocation == null}">
+        <div th:replace="fragments/row::text-row(label='Country name', text=${model.site.countryName})"></div>
+      </th:block>
 
-  <th:block th:if="${model.site.countryCode != null && model.geographicalLocation == null}">
-    <div th:replace="fragments/row::text-row(label='Country code', text=${model.site.countryName})"></div>
-  </th:block>
+      <th:block th:if="${model.site.countryCode != null && model.geographicalLocation == null}">
+        <div th:replace="fragments/row::text-row(label='Country code', text=${model.site.countryName})"></div>
+      </th:block>
 
-  <div th:replace="fragments/row::text-row(label='Altitude', text=${model.site.altitude})"></div>
-  <div th:replace="fragments/row::text-row(label='Slope', text=${model.slope})"></div>
-  <div th:replace="fragments/row::text-row(label='Exposure', text=${model.exposure})"></div>
-  <div th:replace="fragments/row::text-row(label='Topography', text=${model.topography})"></div>
-  <div th:replace="fragments/row::text-row(label='Environment type', text=${model.environmentType})"></div>
-  <div th:replace="fragments/row::text-row(label='Distance to city', text=${model.distanceToCity})"></div>
-  <div th:replace="fragments/row::text-row(label='Direction from city', text=${model.directionFromCity})"></div>
-  <div th:replace="fragments/row::text-row(label='Comment', text=${model.comment})"></div>
+      <div th:replace="fragments/row::text-row(label='Altitude', text=${model.site.altitude})"></div>
+      <div th:replace="fragments/row::text-row(label='Slope', text=${model.slope})"></div>
+      <div th:replace="fragments/row::text-row(label='Exposure', text=${model.exposure})"></div>
+      <div th:replace="fragments/row::text-row(label='Topography', text=${model.topography})"></div>
+      <div th:replace="fragments/row::text-row(label='Environment type', text=${model.environmentType})"></div>
+      <div th:replace="fragments/row::text-row(label='Distance to city', text=${model.distanceToCity})"></div>
+      <div th:replace="fragments/row::text-row(label='Direction from city', text=${model.directionFromCity})"></div>
+      <div th:replace="fragments/row::text-row(label='Comment', text=${model.comment})"></div>
+    </div>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.additionalInfoProperties)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.additionalInfoProperties)}">
     <h2>Additional info</h2>
-    <th:block th:each="prop : ${model.additionalInfoProperties}">
-      <div th:replace="fragments/row::text-row(label=${prop.key}, text=${prop.value})"></div>
-    </th:block>
-  </th:block>
+    <div class="f-card-body">
+      <th:block th:each="prop : ${model.additionalInfoProperties}">
+        <div th:replace="fragments/row::text-row(label=${prop.key}, text=${prop.value})"></div>
+      </th:block>
+    </div>
+  </div>
 
   <div th:replace="fragments/xrefs::xrefs(crossReferences=${model.crossReferences})"></div>
 </main>
diff --git a/backend/src/main/resources/templates/study.html b/backend/src/main/resources/templates/study.html
index c2ee9a3b..225b6cc8 100644
--- a/backend/src/main/resources/templates/study.html
+++ b/backend/src/main/resources/templates/study.html
@@ -15,51 +15,53 @@
 
   <div th:replace="fragments/map::map"></div>
 
-  <h2>Identification</h2>
-
-  <div th:replace="fragments/row::text-row(label='Name', text=${model.study.studyName})"></div>
-  <div th:replace="fragments/row::text-row(label='Identifier', text=${model.study.studyDbId})"></div>
-
-  <div th:replace="fragments/source::source(source=${model.source}, url=${model.study.url}, entityType='study')"></div>
-
-  <div th:replace="fragments/row::text-row(label='Project name', text=${model.study.programName})"></div>
-  <div th:replace="fragments/row::text-row(label='Description', text=${model.study.studyDescription})"></div>
-  <th:block th:if="${model.study.active != null}">
-    <div th:replace="fragments/row::text-row(label='Active', text=${model.study.active ? 'Yes' : 'No'})"></div>
-  </th:block>
-
-  <th:block th:unless="${#lists.isEmpty(model.study.seasons)}">
-    <div th:replace="fragments/row::text-row(label='Seasons', text=${#strings.listJoin(model.study.seasons, ',')})"></div>
-  </th:block>
-  <th:block th:if="${model.study.startDate != null && model.study.endDate != null}">
-    <div th:replace="fragments/row::text-row(label='Date', text=${'From ' + #dates.format(model.study.startDate, 'yyyy-MM-dd') + ' to ' + #dates.format(model.study.endDate, 'yyyy-MM-dd') })"></div>
-  </th:block>
-  <th:block th:if="${model.study.startDate != null && model.study.endDate == null}">
-    <div th:replace="fragments/row::text-row(label='Date', text=${'Started on ' + #dates.format(model.study.startDate, 'yyyy-MM-dd')})"></div>
-  </th:block>
-
-  <th:block th:if="${model.study.locationDbId}">
-    <div th:replace="fragments/row::row(label='Location name', content=~{::#location})">
-      <a id="location" th:href="@{/sites/{siteId}(siteId=${model.study.locationDbId})}" th:text="${model.study.locationName}"></a>
+  <div class="f-card mt-4">
+    <h2>Identification</h2>
+    <div class="f-card-body">
+      <div th:replace="fragments/row::text-row(label='Name', text=${model.study.studyName})"></div>
+      <div th:replace="fragments/row::text-row(label='Identifier', text=${model.study.studyDbId})"></div>
+
+      <div th:replace="fragments/source::source(source=${model.source}, url=${model.study.url}, entityType='study')"></div>
+
+      <div th:replace="fragments/row::text-row(label='Project name', text=${model.study.programName})"></div>
+      <div th:replace="fragments/row::text-row(label='Description', text=${model.study.studyDescription})"></div>
+      <th:block th:if="${model.study.active != null}">
+        <div th:replace="fragments/row::text-row(label='Active', text=${model.study.active ? 'Yes' : 'No'})"></div>
+      </th:block>
+
+      <th:block th:unless="${#lists.isEmpty(model.study.seasons)}">
+        <div th:replace="fragments/row::text-row(label='Seasons', text=${#strings.listJoin(model.study.seasons, ',')})"></div>
+      </th:block>
+      <th:block th:if="${model.study.startDate != null && model.study.endDate != null}">
+        <div th:replace="fragments/row::text-row(label='Date', text=${'From ' + #dates.format(model.study.startDate, 'yyyy-MM-dd') + ' to ' + #dates.format(model.study.endDate, 'yyyy-MM-dd') })"></div>
+      </th:block>
+      <th:block th:if="${model.study.startDate != null && model.study.endDate == null}">
+        <div th:replace="fragments/row::text-row(label='Date', text=${'Started on ' + #dates.format(model.study.startDate, 'yyyy-MM-dd')})"></div>
+      </th:block>
+
+      <th:block th:if="${model.study.locationDbId}">
+        <div th:replace="fragments/row::row(label='Location name', content=~{::#location})">
+          <a id="location" th:href="@{/sites/{siteId}(siteId=${model.study.locationDbId})}" th:text="${model.study.locationName}"></a>
+        </div>
+      </th:block>
+
+      <th:block th:unless="${#lists.isEmpty(model.study.dataLinks)}">
+        <div th:replace="fragments/row::row(label='Data files', content=~{::#data-files})">
+          <ul id="data-files" class="list-unstyled">
+            <li th:each="dataLink : ${model.study.dataLinks}">
+              <a target="_blank" th:href="${dataLink.url}" th:text="${dataLink.name}"></a>
+            </li>
+          </ul>
+        </div>
+      </th:block>
     </div>
-  </th:block>
-
-  <th:block th:unless="${#lists.isEmpty(model.study.dataLinks)}">
-    <div th:replace="fragments/row::row(label='Data files', content=~{::#data-files})">
-      <ul id="data-files" class="list-unstyled">
-        <li th:each="dataLink : ${model.study.dataLinks}">
-          <a target="_blank" th:href="${dataLink.url}" th:text="${dataLink.name}"></a>
-        </li>
-      </ul>
-    </div>
-  </th:block>
+  </div>
 
-  <th:block th:unles="${#lists.isEmpty(model.germplasms)}">
+  <div class="f-card" th:unles="${#lists.isEmpty(model.germplasms)}">
     <h2>Genotype</h2>
-
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container scroll-table-container-big">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Accession number</th>
@@ -79,13 +81,13 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.variables)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.variables)}">
     <h2>Variables</h2>
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Variable ID</th>
@@ -110,13 +112,13 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.trials)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.trials)}">
     <h2>Data Set</h2>
-    <div class="table-responsive scroll-big-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container scroll-table-container-big">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Name</th>
@@ -144,13 +146,13 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.study.contacts)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.study.contacts)}">
     <h2>Contact</h2>
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container">
+        <table class="table table-sm table-striped table-sticky table-responsive-sm">
           <thead>
             <tr>
               <th scope="col">Role</th>
@@ -170,23 +172,23 @@
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
-  <th:block th:unless="${#lists.isEmpty(model.additionalInfoProperties)}">
+  <div class="f-card" th:unless="${#lists.isEmpty(model.additionalInfoProperties)}">
     <h2>Additional information</h2>
-    <div class="table-responsive scroll-table table-card-body">
-      <div class="card">
-        <table class="table table-sm table-striped">
+    <div class="f-card-body">
+      <div class="scroll-table-container">
+        <table class="table table-sm">
           <tbody>
             <tr th:each="row : ${model.additionalInfoProperties}">
-              <td style="width: 50%;" th:text="${row.key}"></td>
+              <th class="label" style="width: 33.33%" th:text="${row.key}" scope="row"></th>
               <td th:text="${row.value}"></td>
             </tr>
           </tbody>
         </table>
       </div>
     </div>
-  </th:block>
+  </div>
 
   <div th:replace="fragments/xrefs::xrefs(crossReferences=${model.crossReferences})"></div>
 </main>
diff --git a/web/src/style/style.scss b/web/src/style/style.scss
index 4dd56d61..42aa2bb3 100644
--- a/web/src/style/style.scss
+++ b/web/src/style/style.scss
@@ -1,14 +1,53 @@
+$headings-color: #0f6191;
+$border-color: #0f6e9f;
+$link-color: #0f6fa1;
+$link-decoration: none;
+$link-hover-decoration: underline;
+$enable-shadows: true;
+$table-border-color: #dee2e6;
+$table-group-separator-color: $table-border-color;
+
 @import 'custom-bootstrap';
 @import '~leaflet/dist/leaflet.css';
 @import '~leaflet.markercluster/dist/MarkerCluster.css';
 @import '~leaflet.markercluster/dist/MarkerCluster.Default.css';
 
-.label {
-  font-weight: 500;
+a[role=button] {
+  color: $link-color !important;
+}
+
+.f-row {
+  border-top: 1px solid $gray-300;
+  padding: 0.5rem 0;
+  .label {
+    font-weight: 700;
+  }
+}
+
+.f-card {
+  border: 1px solid $border-color;
+  border-radius: 0.25rem;
+  margin: 0.5rem 0;
+  h2 {
+    font-size: $h4-font-size;
+    padding: 0.5rem 1rem;
+    background-image: repeating-linear-gradient(#0f96cd, #0f6191, #0f76a5);
+    color: $white;
+  }
+  .f-card-body {
+    padding: 0.25rem 1rem;
+    .f-row:first-of-type {
+      border-top: 0;
+    }
+  }
 }
 
 .popover {
-  max-width: min(80vw, 600px);
+  max-width: min(80vw, 500px);
+}
+
+.popover-header {
+  font-weight: 700;
 }
 
 #map {
@@ -19,3 +58,34 @@
   height: 1.5rem;
 }
 
+.content-overflow {
+  max-height: 200px;
+  overflow-y: auto;
+  overflow-x: hidden;
+  &.content-overflow-big {
+    max-height: 275px;
+  }
+}
+
+.scroll-table-container {
+  max-height: 200px;
+  overflow-y: auto;
+  padding-top: 0;
+  &.scroll-table-container-big {
+    max-height: 500px;
+  }
+}
+
+.table-sticky {
+  width: 100%;
+  thead th {
+    position: sticky;
+    position: -webkit-sticky;
+    top: 0;
+    background-color: white;
+    border-top-width: 0;
+    th {
+      padding-top: 0;
+    }
+  }
+}
-- 
GitLab