consul/consul

View on GitHub
app/assets/stylesheets/legislation_process.scss

Summary

Maintainability
Test Coverage
// Table of Contents
//
// 01. Hero
// 02. Legislation process navigation
// 03. Debate list
// 04. Debate quiz
// 05. Legislation allegations
// 06. Legislation changes
// 07. Legislation comments
// 08. Legislation draft comment
// 09. Legislation proposals
//

// 01. Hero
// --------

.legislation-hero {
  @include full-width-background;

  .title {
    font-weight: bold;
    text-transform: uppercase;
  }

  .description li p {
    display: inline;
  }
}

// 02. Legislation process navigation
// ----------------------------------

.legislation-process-list {
  @include full-width-border(bottom, 1px solid $border);
}

.key-dates {
  list-style-type: none;
  margin: 0 rem-calc(-10);

  @include breakpoint(large) {
    margin: 0;
  }

  li {
    border: 1px solid $border;
    display: block;
    margin: rem-calc(-1) 0;
    min-height: $line-height * 3;
    position: relative;
    vertical-align: top;

    @include breakpoint(large down) {

      &::after {
        content: "\63";
        font-family: "icons" !important;
        font-size: rem-calc(24);
        pointer-events: none;
        position: absolute;
        right: 12px;
        top: 12px;
      }
    }

    @include breakpoint(large) {
      background: #fafafa;
      display: inline-block;
      border-bottom: 0;
      border-top-left-radius: rem-calc(6);
      border-top-right-radius: rem-calc(6);
      margin-bottom: 0;
      margin-right: calc(#{$line-height} / 4);
      margin-top: 0;

      &:hover:not(.is-active) {
        background: $highlight;
      }

      &::after {
        content: "";
      }
    }

    a {
      display: block;
      padding: calc(#{$line-height} / 4) calc(#{$line-height} / 2);

      @include breakpoint(large) {
        display: inline-block;
      }

      &:hover {
        text-decoration: none;
      }

      h4 {
        margin-bottom: 0;
      }
    }
  }

  span {
    color: $text-medium;
    font-size: $small-font-size;
  }

  .is-active {
    background: $highlight;
    position: relative;

    @include breakpoint(large) {
      background: none;
      border: 1px solid $border;
      border-bottom-color: $body-background;
      z-index: 1;
    }
  }
}

// 03. Debate list
// ----------------

.debate-chooser {
  padding: rem-calc(32) rem-calc(16);

  @include breakpoint(medium) {
    .debate-chooser {
      padding: rem-calc(32) rem-calc(48);
    }
  }

  .debate-block {
    margin-bottom: rem-calc(40);

    .debate-type {
      @include brand-color;
      text-transform: uppercase;
      font-weight: 700;
      font-size: $small-font-size;

      .icon-debates {
        margin-left: rem-calc(3);
      }
    }

    .debate-title a {
      @include brand-color;
    }
  }

  .debate-meta,
  .debate-meta a {
    font-size: $small-font-size;
    color: #6d6d6d;
  }

  .debate-info {
    padding: rem-calc(16);
    background: #f4f4f4;
  }
}

// 04. Debate quiz
// ---------------

.debate-questions {

  .comments {
    margin-top: $line-height * 2.5;
  }

  .quiz-header {
    margin-bottom: $line-height;

    .quiz-title,
    .quiz-next {
      padding: $line-height;

      @include breakpoint(medium) {
        height: $line-height * 4;
      }
    }

    .quiz-title {
      background: $highlight;

      .quiz-header-title {
        font-size: $small-font-size;
        font-weight: 700;
        margin-bottom: 0;
        text-transform: uppercase;
      }

      a {
        @include brand-color;
        @include header-font-size(h4);
        text-decoration: none;
      }
    }

    .quiz-next-link {
      display: block;

      &:hover,
      &:active {
        text-decoration: none;
      }
    }

    .quiz-next {
      @include brand-color;
      background: #ccdbe5;
      font-size: $small-font-size;
      font-weight: bold;
      text-align: right;
      text-transform: uppercase;
      transition: background 0.25s ease-out, background 0.25s ease-out;

      .icon-angle-right {
        vertical-align: middle;
      }

      &:hover,
      &:active {
        @extend %brand-background;
        text-decoration: none;
      }
    }
  }

  .quiz-question {
    @include header-font-size(h2);
    margin-bottom: $line-height;
  }

  .debate-questions {
    position: relative;
    list-style: none;

    .control {
      background: #fff;
      border: 1px solid $border;
      border-radius: rem-calc(4);
      color: #555;
      cursor: pointer;
      display: inline-block;
      margin-bottom: calc(#{$line-height} / 2);
      margin-right: $line-height;
      padding: calc(#{$line-height} / 2)  $line-height * 2;
      position: relative;
    }

    .is-active {
      background: #ccdbe6;
      border: 0;
    }

    .control input {
      position: absolute;
      opacity: 0;
      z-index: -1;
    }

    .control input:checked ~ .control-indicator {
      @include brand-background;
      border: 0;
    }

    .radio .control-indicator {
      border-radius: 50%;
    }

    .control-indicator {
      position: absolute;
      top: 15px;
      left: 15px;
      display: block;
      width: rem-calc(16);
      height: rem-calc(16);
      line-height: rem-calc(16);
      font-size: 65%;
      text-align: center;
      border: 2px solid #9c9c9c;
      pointer-events: none;
      user-select: none;
    }
  }
}

// 05. Legislation allegations
// ---------------------------

.draft-panels {
  position: relative;
  padding: rem-calc(32) 0;

  .draft-chooser {

    h3 {
      vertical-align: top;
      display: inline-block;
      font-weight: 400;
      margin-right: rem-calc(8);
    }

    span {
      margin-left: rem-calc(4);
      font-style: italic;
      font-size: $small-font-size;
      color: $text-medium;
      vertical-align: top;
      line-height: rem-calc(37);
    }

    .select-box {
      position: relative;

      @include breakpoint(medium) {
        display: inline-block;
      }

      select {
        margin-bottom: 0;
        display: block;
      }

      span {
        vertical-align: inherit;
        font-style: normal;
      }

      .see-changes {
        color: $text-medium;
        text-decoration: underline;
      }
    }

    .button {
      margin-top: rem-calc(16);

      @include breakpoint(medium) {
        margin-top: 0;
      }
    }
  }

  .draft-allegation {

    @include breakpoint(medium) {
      display: flex;

      .calc-index {
        max-width: calc(35% - 25px);

        .draft-index {
          @supports (position: sticky) {
            max-height: 100vh;
            overflow-y: auto;
            position: sticky;
            top: $line-height;
          }
        }

        > * {
          padding-right: rem-calc(20);
        }
      }

      .calc-text {
        flex: 1;
      }

      .calc-comments {
        min-width: 15rem;
        width: calc(35% - 25px);

        > * {
          padding-left: rem-calc(20);
        }
      }
    }

    .border-right {
      @include breakpoint(medium) {
        border-right: 1px solid $border;
      }
    }

    .border-left {
      @include breakpoint(medium) {
        border-left: 1px solid $border;
      }
    }

    .draft-panel {
      text-transform: uppercase;
      font-weight: 700;
      padding: rem-calc(8) rem-calc(16);
      color: #696969;
      background: #f2f2f2;
      font-size: $small-font-size;

      .icon-comments {
        margin-right: rem-calc(4);
      }

      .icon-banner {
        line-height: 0;
        color: $text-medium;
        vertical-align: sub;
      }
    }

    .draft-index {
      ul:first-child {
        font-size: rem-calc(16);
        text-decoration: underline;
        margin-left: rem-calc(36);
        margin-top: $line-height;
      }

      ul {
        list-style: none;

        li {
          margin-bottom: rem-calc(16);
        }

        .open::before {
          cursor: pointer;
          position: absolute;
          margin-left: rem-calc(-20);
          font-family: "icons";
          content: "\58";
          -webkit-font-smoothing: antialiased;
          -moz-osx-font-smoothing: grayscale;
        }

        .closed::before {
          cursor: pointer;
          position: absolute;
          margin-left: rem-calc(-20);
          font-family: "icons";
          content: "\5a";
          -webkit-font-smoothing: antialiased;
          -moz-osx-font-smoothing: grayscale;
        }
      }
    }

    .draft-text {
      position: relative;
      padding: rem-calc(16);

      @include breakpoint(medium) {
        margin: 0 auto;
        max-width: calc(3 * #{$grid-row-width} / 4);
        padding: rem-calc(32) rem-calc(32) rem-calc(32) rem-calc(48);
      }

      table {
        @include table-scroll;
      }

      h2 {
        font-weight: 400;
        margin-bottom: rem-calc(32);
        margin-top: rem-calc(32);
      }

      h3 {
        font-weight: 400;
        margin-bottom: rem-calc(16);
      }

      .anchor::before {
        display: none;
        content: "#";
        color: $text-medium;
        position: absolute;
        left: 0;

        @include breakpoint(medium) {
          left: 24px;
        }
      }

      a {
        color: inherit;

        &:hover,
        &:active,
        &:focus {
          text-decoration: none;

          h3 {
            color: inherit;
          }

          .anchor::before {
            display: block;
          }
        }
      }
    }

    .calc-comments {
      position: relative;
    }

    summary {
      cursor: pointer;
      list-style: none;

      &::-webkit-details-marker {
        display: none;
      }
    }

    details:not([open]) {
      background: #f2f2f2;

      @include breakpoint(small only) {
        border-bottom: 1px solid #d4d4d4;
      }

      @include breakpoint(medium) {
        min-width: auto;
        width: rem-calc(50);

        .draft-panel {
          line-height: 1;
          display: block;
          font-size: $small-font-size;
          text-transform: uppercase;
          font-weight: 700;
          color: #696969;
          padding: 0;
          text-align: center;

          .icon-banner::before,
          .icon-comments::before {
            display: block;
            margin: rem-calc(24) auto rem-calc(36);
          }

          .panel-title {
            display: block;
            transform: rotate(-90deg);
            filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
          }
        }
      }
    }

    .calc-text {
      border-right: 0;

      .show-comments {
        width: 105%;
        background: #fafafa;
        padding: rem-calc(4) rem-calc(40) rem-calc(4) rem-calc(4);
        border: 1px solid $border;
        margin-bottom: rem-calc(16);

        p {
          margin-bottom: 0;
        }
      }

    }

    .calc-comments {
      cursor: auto;

      @include breakpoint(small only) {
        summary {
          display: none;
        }
      }

      &:not([open]) {
        border-left: 1px solid #d4d4d4;
      }

      .comments-box-container {
        position: relative;
        top: rem-calc(180);
      }

      .comment-box {
        padding: rem-calc(4);
        background: #f9f9f9;
        border: 1px solid $border;
        display: block;
        margin-bottom: rem-calc(32);

        .button {
          font-size: $small-font-size;
          padding: rem-calc(10) rem-calc(20);
        }

        .publish-comment {
          float: right;
        }

        .comment-header {
          padding-bottom: rem-calc(8);
          margin-bottom: rem-calc(16);
          border-bottom: 1px solid $border;

          a .icon-expand {
            color: #838383;
            font-size: $small-font-size;
            float: right;
          }
        }

        .comments-wrapper {
          position: relative;
        }

        .comment-input {
          padding-bottom: rem-calc(64);
          margin-bottom: rem-calc(16);
          margin-top: rem-calc(16);
          border-bottom: 1px solid $border;

          .comment-advice {
            border-top: 1px solid #d0d0d0;
            border-right: 1px solid #d0d0d0;
            border-left: 1px solid #d0d0d0;
            width: 100%;
            padding: rem-calc(8);
            display: inline-block;
            font-size: $small-font-size;
            background: #dfdfdf;

            .icon-proposals {
              color: #838383;
            }

            a {
              color: #87a3b9;
              text-decoration: underline;
            }
          }

          textarea {
            border-radius: 0;
            box-shadow: none;
            border-bottom: 1px solid #d0d0d0;
            border-right: 1px solid #d0d0d0;
            border-left: 1px solid #d0d0d0;
            width: 100%;
            height: rem-calc(200);
            margin-bottom: rem-calc(8);
          }

          .comment-actions {
            .cancel-comment {
              color: #87a3b9;
              text-decoration: underline;
              font-size: $small-font-size;
              display: inline-block;
            }
          }
        }

        .comment {
          border-bottom: 1px solid $border;
          padding-bottom: calc(#{$line-height} / 2);
          margin-bottom: rem-calc(16);
          font-size: $small-font-size;

          .comment-text {
            margin-bottom: rem-calc(8);

            p {
              line-height: 1.5;
              font-size: $small-font-size;

              &:last-child {
                margin-bottom: rem-calc(8);
              }
            }
          }

          .comment-meta {

            .comment-more-info {
              display: inline-block;

              .comment-expand {
                display: inline-block;

                &::after {
                  content: "|";
                  color: #838383;
                }
              }

              .comment-replies {
                display: inline-block;
              }
            }

            .comment-votes {
              color: #838383;
              float: right;
              display: inline-block;

              .comment-votes-number {
                margin-right: rem-calc(4);
                display: inline-block;

                &::after {
                  margin-left: rem-calc(4);
                  content: "|";
                }
              }
            }
          }
        }
      }
    }
  }
}

// 06. Legislation changes
// -----------------

.legislation-changes {

  ul {
    list-style: none;
    margin-left: 0;

    li {
      margin-bottom: rem-calc(16);

      &::before {
        margin-right: rem-calc(4);
        content: "—";
      }
    }
  }

  .changes-link {
    display: block;
    margin-left: rem-calc(16);
    font-size: $small-font-size;

    @include breakpoint(medium) {
      display: inline-block;
    }

    a {

      span {
        text-decoration: underline;
      }

      .icon-external {
        text-decoration: none;
        color: #999;
        line-height: 0;
        vertical-align: sub;
        margin-left: rem-calc(8);
      }

      &:active,
      &:focus,
      &:hover {
        text-decoration: none;
      }
    }
  }
}

// 07. Legislation comments
// -----------------

.legislation-comments {

  .comment-section {
    background: #fafafa;
    padding: rem-calc(16);
    border: 1px solid #dee0e3;
    margin-top: rem-calc(4);
    margin-bottom: rem-calc(16);
  }

  .comment {
    margin-bottom: rem-calc(48);

    .expand-context a {
      span {
        text-decoration: underline;
      }

      .icon-expand {
        text-decoration: none;
        color: #999;
        line-height: 0;
      }

      .icon-expand {
        margin-left: rem-calc(4);
      }

      &:active,
      &:focus,
      &:hover {
        text-decoration: none;
      }
    }
  }
}

// 08. Legislation draft comment
// -----------------

.legislation-comment {

  .annotation-share-comment {
    margin-bottom: rem-calc(32);
  }

  .comment-section {
    background: #fafafa;
    padding: rem-calc(16);
    border: 1px solid #dee0e3;
    margin-top: rem-calc(4);
    margin-bottom: rem-calc(16);
  }

  .comment {

    a {
      span {
        text-decoration: underline;
      }

      .icon-expand,
      .icon-comments {
        text-decoration: none;
        color: #999;
        line-height: 0;
      }

      .icon-expand {
        margin-left: rem-calc(4);
      }

      .icon-comments {
        margin-right: rem-calc(4);
      }

      &:active,
      &:focus,
      &:hover {
        text-decoration: none;
      }
    }
  }
}

// 09. Legislation proposals
// -------------------------

.proposal-show {

  &.legislation-proposal-show h1 {
    font-size: rem-calc(24);

    @include breakpoint(medium) {
      font-size: rem-calc(36);
    }
  }
}

.legislation-proposals {
  margin-top: rem-calc(-6);

  .proposal h3 {
    font-size: rem-calc(20);
    margin-top: 0;
  }
}

.process-proposal {
  margin-bottom: $line-height;

  .header {
    background: $highlight;
    padding: $line-height;

    @include breakpoint(medium) {
      height: $line-height * 4;
    }
  }

  .process-title {
    font-size: $small-font-size;
    margin-bottom: 0;
    text-transform: uppercase;
  }

  .process-link {
    font-size: rem-calc(19);
    font-weight: bold;
  }
}

// 10. Legislation summary
// -------------------------

.process-summary {
  > section {
    margin-top: $line-height * 1.5;
    padding: 0 rem-calc(16);
  }

  h4,
  p {
    margin-bottom: 0;
  }

  > section > header,
  .question-title,
  .annotation-title,
  .comment-summary,
  .proposal-summary {
    @include breakpoint(medium) {
      align-items: center;
      display: flex;

      > :first-child {
        $margin: rem-calc(map-get($grid-column-gutter, "medium"));

        margin-right: $margin;
        width: calc(75% - #{$margin});
      }
    }
  }

  .debate-summary,
  .proposal-summary,
  .annotation-summary {
    @extend %panel;
    min-height: auto;
    padding-bottom: rem-calc(16);
    padding-top: rem-calc(16);

    &:not(:last-child) {
      margin-bottom: calc(#{$line-height} / 2);
    }
  }

  .question-title:not(:only-child) {
    margin-bottom: calc(#{$line-height} / 2);
  }

  .annotation-title {
    margin-bottom: calc(#{$line-height} / 2);
    margin-top: calc(#{$line-height} / 2);
  }

  .annotation-quote {
    border: 1px solid $black;
    padding: rem-calc(10);
  }

  .comment-summary {
    margin-bottom: calc(#{$line-height} / 2);

    > :first-child {
      background-color: rgba(217, 216, 243, 0.2);
      border-radius: rem-calc(10);
      padding: rem-calc(12);
    }
  }

  .download-button {
    margin-bottom: 0;
    margin-left: 50%;
    margin-top: $line-height;
    transform: translateX(-50%);
  }
}