/*
========================================
Global
========================================
*/
html {
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  font-family: verdana, arial, sans-serif, helvetica;
  background-color: #e5e5e5;
  font-size: 8pt;
  margin: 0;
}

a {
  font-weight: bold;
  text-decoration: none;
}

a:link {
  color: #003399;
}

a:visited {
  color: #003399;
}

a:hover {
  text-decoration: underline;
  color: #cc0000;
}

h2 {
  font-size: 9pt;
  margin: 0;
  font-weight: bold;
}

p {
  line-height: 1.3;
}

/*
========================================
Master Container
========================================
*/
.master-container {
  margin: auto;
  width: 800px;
  background-color: white;
}

/*
========================================
Main Header
========================================
*/
.main-header {
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 151px;
  background-color: rgb(0, 51, 153);
  color: #ffffff;
}

.main-header ul {
  list-style-type: none;
}

.main-header a:link {
  color: #ffffff;
  font-weight: normal;
}

.main-header a:visited {
  color: #ffffff;
}

/*
========================================
Search Bar
========================================
*/
.search-bar {
  display: grid;
  grid-template-columns: .25fr 1fr .25fr;
}

.search-bar form {
  justify-self: center;
  margin: 0;
}

.search-bar form [type="text"] {
  width: 160px;
}

.search-bar form [type="radio"] {
  margin-right: .33rem;
}

.search-bar ul {
  display: flex;
}

.submit-btn {
  margin: 8px;
  border: 1px solid black;
  padding: 2px 7px;
  background-color: #E0FFFF;
  font-size: 10px;
  border-color: rgb(186, 186, 186);
}

.topnav {
  padding: 0;
  margin: 8px;
}

.topnav li:first-child::after {
  content: '|';
  margin: .33rem;
}

.home {
  justify-self: start;
}

.signup {
  justify-self: end;
}

/*
========================================
Navigation Bar
========================================
*/
.navbar {
  display: flex;
  align-items: center;
  margin-top: auto;
  background-color: rgb(102, 153, 204);
  height: 26px;
}

.navbar ul {
  display: flex;
  margin: 0 auto;
  padding: 0;
}

.navbar li::after {
  content: '|';
  margin: .33rem;
  color: black;
}

.navbar li:last-child::after {
  content: '';
}

.navbar a:hover {
  color: #003399;
}

/*
========================================
Page Content Container
========================================
*/
.page-content-container {
  display: grid;
  grid-template-columns: 325px 453px;
  grid-column-gap: 20px;
  grid-template-areas: "sidebar main";
}

/*
========================================
Profile Sidebar Column
========================================
*/
.profile-sidebar {
  grid-area: sidebar;
  margin-left: 27px;
  width: 300px;
}

h1 {
  font-size: 12.25pt;
  font-weight: bold;
  margin-top: 15px;
  margin-bottom: 0px;
}

.profile-sidebar ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

/*
========================================
Profile Picture Container
========================================
*/
.profile-picture-container {
  display: grid;
  grid-template-columns: 170px 115px;
  grid-template-rows: auto auto;
  grid-column-gap: 15px;
  margin-bottom: 12px;
}

.profile-picture-container p {
  margin: 0;
}

.profile-pic {
  grid-area: 1/1;
  margin-top: 10px;
  margin-bottom: 10px;
  width: 170px;
  height: 156px;
  object-fit: cover;
  border: 1px solid #333;
}

.personal-msg {
  grid-area: 1/2;
  margin: 0;
}

.gender-age {
  grid-area: 1/2;
}

.gender-age li:first-child {
  margin-top: 28px;
}

.last-login {
  grid-area: 1/2;
  align-self: end;
}

.last-login li:last-child {
  margin-bottom: 15px;
}

/* Own grid row, so it can never land on top of the photo. */
.pics-videos {
  grid-area: 2/1;
  justify-self: center;
  text-align: center;
}

/*
========================================
Contact Box
========================================
*/
.contact-box {
  border: 2px solid rgb(102, 153, 204);
  height: 149px;
  width: 300px;
  margin-bottom: 24px;
}

.contact-box h2 {
  color: white;
  background-color: rgb(102, 153, 204);
  height: 17px;
  padding-left: 10px;
}

.contact-images {
  display: grid;
  grid-template-columns: 150px 150px;
  margin: 0;
  margin-top: 5px;
  margin-left: 10px;
}

/*
========================================
MySpace URL
========================================
*/
.myspace-url-box {
  border: 1px solid rgb(102, 153, 204);
  height: 26px;
  margin-bottom: 24px;
}

.myspace-url-box h3,
.myspace-url-box p {
  margin: 0;
  padding: 0;
}

.myspace-url-box h3 {
  font-size: 8pt;
  padding-left: 2px;
}

.myspace-url-box p {
  padding-left: 6px;
}

/*
========================================
Sidebar Table Class
========================================
*/
.sidebar-table {
  border: 2px solid rgb(102, 153, 204);
  display: table;
  border-collapse: separate;
  border-spacing: 3px;
}

.sidebar-table-h2 {
  background-color: rgb(102, 153, 204);
  color: white;
  text-align: left;
  height: 17px;
  padding-left: 15px;
  padding-top: 2px;
}

.sidebar-table-header {
  vertical-align: top;
  text-align: left;
  width: 107px;
  background-color: rgb(177, 208, 240);
  color: #336699;
  padding: 3px;
  font-weight: bold;
  font-size: 8pt;
}

.sidebar-table-data {
  width: 184px;
  background-color: rgb(213, 232, 251);
  padding: 3px;
}

/*
========================================
Interests
========================================
*/
.interests p {
  margin-top: 0;
}

.interests p:only-child,
.interests p:last-child {
  margin-bottom: 0;
}

.interests table {
  margin-bottom: 13px;
}

/*
========================================
Details
========================================
*/
.details table {
  margin-bottom: 22px;
}

/*
========================================
Schools
========================================
*/
.schools .sidebar-table-header {
  width: 228px;
  color: black;
  font-weight: normal;
}

.schools .sidebar-table-data {
  width: 63px;
  text-align: center;
  vertical-align: top;
}

.schools ul {
  margin-bottom: 2em;
}

/*
========================================
Main Column
========================================
*/
main {
  grid-area: main;
}

/*
========================================
User Network
========================================
*/
.user-network {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 433px;
  margin: auto;
  height: 75px;
  border: 2px solid black;
  margin-top: 13px;
  text-align: center;
}

.user-network h2 {
  font-size: 12pt;
}

.user-network p {
  margin: 0;
}

/*
========================================
Blog
========================================
*/
.blog {
  display: grid;
  grid-auto-rows: 29px;
  flex-direction: column;
  margin-top: 13px;
  margin-left: 12px;
  margin-bottom: 16px;
}

.blog p {
  margin-top: 3px;
}

/*
========================================
Blurbs
========================================
*/
.main-section-header {
  background-color: #ffcc99;
  padding-top: 3px;
  padding-bottom: 3px;
  margin-bottom: 8px;
}

.main-section-h2 {
  color: #FF6600;
  margin-left: 20px;
}

.blurbs h3 {
  margin: 0;
  color: #FF6600;
  font-size: 9pt;
  margin-left: 15px;
}

.blurbs p {
  margin: 0 10px 15px 15px;
}

.info {
  color: green;
  font-weight: bold;
}

.shout {
  color: #cc0000;
  font-weight: bold;
}

/*
========================================
Friend Space
========================================
*/
.friends header {
  margin-bottom: 6px;
}

.friends p:nth-of-type(1) {
  margin-top: 0;
  margin-left: 15px;
}

.focus-highlight {
  color: #cc0000;
  font-weight: normal;
  font-size: 10pt;
}

.friend-pic-container {
  display: grid;
  grid-template-columns: repeat(4, 109px);
  grid-row-gap: 10px;
}

.friend-pic-container figure {
  display: flex;
  flex-direction: column;
  margin: 0;
}

/* Caption holds two lines' worth of height so wrapped names cannot push
   the avatar down and break the grid alignment. */
.friend-pic-container figcaption {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  height: 26px;
  text-align: center;
  line-height: 1.15;
  overflow: hidden;
}

.friend-pic-container img {
  display: block;
  margin: auto;
  width: 100px;
  height: 100px;
  object-fit: cover;
  border: 1px solid #333;
}

.friends-list-link {
  display: flex;
  justify-content: flex-end;
  margin-top: 7px;
  margin-right: 8px;
  margin-bottom: 30px;
}

.friends-list-link a {
  color: #cc0000;
}

/*
========================================
Comment Wall
========================================
*/
.comment-wall .main-section-header {
  margin-bottom: 3px;
}

.comment-wall .main-section-h2 {
  margin-bottom: 0;
}

#comment-counter {
  margin-top: 0;
  margin-left: 15px;
  margin-bottom: 3px;
}

.comment-wall table {
  margin: auto;
  margin-bottom: 5px;
}

.comment-wall th {
  background-color: rgb(255, 153, 51);
  width: 158px;
  padding: 3px;
  vertical-align: top;
}

.comment-wall td {
  vertical-align: top;
  background-color: rgb(249, 214, 180);
  width: 269px;
  padding: 3px;
}

.comment-wall figcaption,
.comment-wall figure {
  margin: 0;
}

.comment-wall figcaption {
  margin-bottom: 1em;
}

.comment-images-note {
  display: none;
}

.contact-images span {
  font-size: 7pt;
  margin-bottom: 6px;
}

.comment-wall figure {
  margin-bottom: 10px;
}

.comment-wall img {
  display: block;
  margin: auto;
  width: 100px;
  height: 100px;
  object-fit: cover;
  border: 1px solid #333;
}

.comment-wall h3 {
  font-size: 10pt;
  margin: 0;
  margin-bottom: 1em;
}

.comment-wall p {
  font-weight: normal;
  text-align: left;
  margin: 0;
}

#add-comment {
  text-align: right;
  margin-right: 10px;
  margin-bottom: 5px;
}

/*
========================================
Footer
========================================
*/
footer {
  display: grid;
  grid-template-rows: 16px 39px;
  background-color: #e5e5e5;
  padding-top: 10px;
  height: 65px;
}

footer a {
  text-decoration: underline;
  font-weight: normal;
  font-size: 8pt;
}

footer ul {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  list-style-type: none;
  padding: 0;
  margin: 0;
}

footer li:after {
  content: ' | ';
  font-weight: normal;
}

#last:after {
  content: none;
}

footer small {
  display: flex;
  justify-content: center;
  align-items: flex-end;
  height: 100%;
  font-size: 8pt;
  font-weight: normal;
}

/*
========================================
Site-specific additions
========================================
*/

/* Scrolling welcome banner -- period-correct and mandatory */
.marquee-bar {
  width: 800px;
  margin: auto;
  background-color: #000000;
  color: #00ff00;
  font-family: "Courier New", monospace;
  font-size: 9pt;
  font-weight: bold;
  padding: 3px 0;
  border-top: 2px solid #ffcc00;
  border-bottom: 2px solid #ffcc00;
}

.marquee-bar marquee {
  display: block;
}

/* Profile player bar, bottom left */
.player-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 50;
  background-color: #000033;
  color: #ffffff;
  border: 2px solid #66cccc;
  padding: 4px 8px;
  font-size: 8pt;
  width: 300px;
}

.player-bar b {
  color: #66ff66;
}

.player-bar .eq {
  color: #ffcc00;
  letter-spacing: 1px;
}

/* Sidebar sponsored boxes */
.ad-box {
  border: 2px solid #cc0000;
  width: 300px;
  margin-bottom: 24px;
  background-color: #ffffcc;
}

.ad-box h2 {
  background-color: #cc0000;
  color: #ffffff;
  height: 17px;
  padding-left: 10px;
  font-size: 8pt;
}

.ad-box p {
  margin: 4px 6px;
}

.ad-box .ad-cta {
  display: block;
  margin: 5px 6px;
  background-color: #ffcc00;
  border: 1px solid #000000;
  color: #000000;
  text-align: center;
  padding: 2px 0;
  font-weight: bold;
}

/* Comment wall: Tom's replies to the ads */
.comment-wall .reply {
  margin: 6px 0 0 18px;
  padding-left: 6px;
  border-left: 2px solid #cc6600;
  color: #663300;
}

.comment-wall .reply b {
  color: #cc6600;
}

/*
========================================
Mobile
========================================
*/
@media (max-width: 820px) {
  html,
  body {
    overflow-x: hidden;
  }

  .master-container,
  .marquee-bar {
    width: 100%;
  }

  .main-header {
    height: auto;
    padding-bottom: 6px;
  }

  .search-bar {
    grid-template-columns: 1fr;
    justify-items: center;
    grid-row-gap: 6px;
    text-align: center;
  }

  .search-bar form [type="text"] {
    width: 120px;
  }

  .search-bar ul {
    justify-content: center;
    flex-wrap: wrap;
  }

  .topnav.home,
  .topnav.signup {
    justify-self: center;
  }

  .navbar {
    height: auto;
    padding: 4px 0;
  }

  .navbar ul {
    flex-wrap: wrap;
    justify-content: center;
    row-gap: 2px;
  }

  .page-content-container {
    display: block;
    padding: 0 10px;
  }

  .profile-sidebar {
    margin-left: 0;
    width: 100%;
  }

  .contact-box,
  .ad-box,
  .sidebar-table,
  .myspace-url-box {
    width: 100%;
    max-width: 100%;
  }

  .sidebar-table {
    table-layout: fixed;
  }

  .sidebar-table-header {
    width: 34%;
  }

  .sidebar-table-data {
    width: 66%;
    word-wrap: break-word;
  }

  .schools .sidebar-table-header {
    width: 70%;
  }

  .schools .sidebar-table-data {
    width: 30%;
  }

  .profile-picture-container {
    grid-template-columns: 170px 1fr;
  }

  .user-network {
    width: 100%;
    height: auto;
    padding: 8px 4px;
  }

  .friend-pic-container {
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: auto;
    grid-row-gap: 12px;
  }

  /* Narrow columns wrap names onto 3+ lines; let the caption grow rather
     than clipping it, and accept the ragged avatar tops that causes. */
  .friend-pic-container figcaption {
    height: auto;
    min-height: 26px;
    overflow: visible;
  }

  .friend-pic-container img {
    width: 100%;
    max-width: 100px;
    height: auto;
    aspect-ratio: 1 / 1;
  }

  .comment-wall table,
  .comment-wall th,
  .comment-wall td {
    width: auto;
  }

  .comment-wall th {
    width: 118px;
  }

  .comment-wall figure {
    overflow-wrap: anywhere;
  }

  .comment-wall img {
    width: 90px;
    height: 90px;
  }

  .blog {
    display: block;
    margin-left: 10px;
    margin-right: 10px;
  }

  .blog p {
    margin-bottom: 10px;
  }

  footer {
    height: auto;
    padding-bottom: 10px;
  }

  footer ul {
    flex-wrap: wrap;
    justify-content: flex-start;
    padding: 0 8px;
  }

  footer li {
    margin-right: 4px;
  }

  footer small {
    padding: 0 8px;
  }

  .player-bar {
    display: none;
  }
}