@import "util";

$image-front-background: url('../images/card-front-background.png');
$image-generic-front: url('../images/products/generic-front.png');
$image-generic-back: url('../images/products/generic-back.png');

$card-face-width: 24.8em;
$card-face-height: 15.6em;
$sprite-front-height: 93.6em;

// *****************************************************************************
// Generic card layout
// *****************************************************************************
.skeuocard.js {

  .face.front {
    background-color: #eee;
    background-image: url('../images/products/generic-front.png'), $image-front-background;
    background-repeat: no-repeat;
    background-size: cover;
  }

  .face.back {
    background-color: #eee;
    background-image: url('../images/products/generic-back.png');
    background-repeat: no-repeat;
    background-size: cover;
  }

  .face.valid{
    @include vendor-prefix(box-shadow, 0 0 10px $color-valid);
  }



  /* 
  1. If a field (or group) has focus, regardless of whether it's filled, the 
     inputs should look like inputs.
  2. Focused inputs within a focused field or group should look focused.
  3. An un-filled field should always look editable.
  4. Filled, valid fields should be flat until hover.
  */

  .cc-field{

    input{
      border: none;
      outline: none;
      background-color: rgba(255, 255, 255, 0.6);
      @include vendor-prefix(border-radius, 0px);
      @include vendor-prefix(box-shadow, inset 1px 1px 1px 1px #ccc);
      @include vendor-prefix(transition, background-color 300ms ease);
    }

    input:focus{
      outline: 3px auto $color-field-glow;
      @include vendor-prefix(box-shadow, none);
    }

    &.filled.valid:not(.focus){
      input{
        @include vendor-prefix(box-shadow, none);
        background-color: transparent;
      }
    }

    &.filled:hover:not(.focus){
      input{
        @include vendor-prefix(box-shadow, inset 1px 1px 1px 1px #ccc);
        background-color: rgba(255, 255, 255, 0.6);
      }
    }

  }

  .face.filled .cc-field.invalid{
    input{
      @include vendor-prefix(box-shadow, inset 0px 0px 2px 1px $color-invalid);
      border: 1px solid $color-invalid;
    }
    
    input:focus{
      @include vendor-prefix(box-shadow, none);
    }

    /*
    &:after{
      display: inline-block;
      width: 1.575em;
      height: 1.25em;
      content: "";
      background: url('../images/error-pointer.png') no-repeat center center;
      background-size: 1.575em 1.25em;
      padding-left: 4px;
    }
    */
  }

  .cc-number{
    position: absolute;
    display: block; 
    left: 1.8em;
    top: 8.05em;
    padding: 0.1em;
    input{
      color: #333;
      font-family: $cc-field-family;
      font-size: 1.5em;
      &.group4{ width: 3.2em; }
      &.group5{ width: 3.8em; }
      &.group6{ width: 4.6em; }
      &.group19{ width: 14em; }
    }
    input + input {
      margin-left: 0.4em;
    }
  }

  .cc-exp {
    position: absolute; 
    display: block; 
    input, .separator {
      margin: 0; padding: 0;
      font-size: 1em;
      font-family: $cc-field-family;
      color: #333;
      text-align: center;
      &.group2{ width: 2em; }
      &.group4{ width: 4em; }
    }
  }

  .cc-name {
    margin: 0; padding: 0;
    position: absolute; 
    display: block; 
    font-size: 1em;
    font-family: $cc-field-family;
    text-transform: uppercase;
  }

  .cc-cvc {
    margin: 0; padding: 0;
    position: absolute; 
    display: block; 
    font-size: 1em;
    font-family: $cc-label-family;
  }

  &.unaccepted .cc-number input{
    outline: none;
    @include vendor-prefix(box-shadow, 0 0 10px $color-invalid);
    @include vendor-prefix(transition, box-shadow linear 0.15s);
  }
}

// *****************************************************************************
// Base layout for cards
// This is inherited by card products.
// *****************************************************************************
.skeuocard.card-product {
  .face.front{
    background-repeat: no-repeat, no-repeat;
    background-size: cover, cover;
  }
  .face.back{
    background-repeat: no-repeat, no-repeat;
    background-size: cover, cover;
  }
}

// *****************************************************************************
// Visa product layout
// *****************************************************************************
.skeuocard.product-visa {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/visa-front.png'), $image-front-background;
  }

  .face.back {
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em; 
    top: 8.05em;
  }

  .cc-exp{
    left: 10.9em;
    top: 11.2em;
    width: 5em;
  }

  .cc-name{
    left: 1.8em;
    top: 13em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }

  // This card puts all required information on the back, rather than the front.
  &.issuer-chase-sapphire{
    .face.front{
      background-image: url('../images/issuers/visa-chase-sapphire.png');
    }
    .cc-name{
      left: 1.25em;
      top: 8.90em;
      font-family: $cc-label-family;
      letter-spacing: 2px;
    }
    .cc-number{
      left: 1.25em;
      top: 9.6em;
      input{
        font-family: $cc-label-family;
        letter-spacing: 2px;
        font-size: 1.425em;
        &.group4{ width: 2.8em; }
      }
      input + input{
        margin-left: 0.1em;
      }
    }
    .cc-exp{
      left: 3.75em;
      top: 11.5em; 
      input, .separator{
        font-family: $cc-label-family;
        &.group2{ width: 1.6em; }
      }
    }
    .cc-cvc{
      top: 6.3em;
      left: 15.25em;
    }

  }

}

// *****************************************************************************
// China UnionPay card layout
// *****************************************************************************
.skeuocard.product-unionpay {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/unionpay-front.png'), $image-front-background;
  }
  .face.back {
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em; 
    top: 8.05em;
  }

  .cc-exp{
    left: 10.9em;
    top: 11.2em;
    width: 5em;
  }

  .cc-name{
    left: 1.8em;
    top: 13em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

// *****************************************************************************
// American Express card layout
// *****************************************************************************
.skeuocard.product-amex {
  @extend .skeuocard.card-product;

  .face.front {
    background-image: url('../images/products/amex-front.png'), $image-front-background;
  }
  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 3em;
    top: 8em;
  }

  .cc-name{
    left: 2.5em;
    top: 13.5em;
  }

  .cc-exp{
    left: 2.5em;
    top: 11.5em;
  }

  .cc-cvc{
    left: 21.25em;
    top: 7em;
    width: 3em;
  }
}

// *****************************************************************************
// Diners Club International card layout
// *****************************************************************************
.skeuocard.product-dinersclubintl {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/dinersclubintl-front.png'), $image-front-background;
  }
  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }
  .cc-number{
    left: 1.8em;
    top: 8.05em;
  }
  .cc-name{
    left: 1.8em;
    top: 11.5em;
  }
  .cc-exp{
    left: 17.5em;
    top: 13.5em;
  }
  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

// *****************************************************************************
// Mastercard card layout
// *****************************************************************************
.skeuocard.product-mastercard {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/mastercard-front.png'), $image-front-background;
  }
  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em;
    top: 8.05em;
  }

  .cc-name{
    left: 2.5em;
    top: 12.2em;
  }

  .cc-exp{
    left: 11.5em;
    top: 10.8em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

// *****************************************************************************
// Maestro card layout
// *****************************************************************************
.skeuocard.product-maestro {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/maestro-front.png'), $image-front-background;
  }
  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em;
    top: 8.05em;
  }

  .cc-name{
    left: 2.5em;
    top: 12.2em;
  }

  .cc-exp{
    left: 11.5em;
    top: 10.8em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

// *****************************************************************************
// Discover card layout
// *****************************************************************************
.skeuocard.product-discover {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/discover-front.png'), $image-front-background;
  }

  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em;
    top: 8.05em;
  }

  .cc-name{
    left: 1.55em;
    top: 13.575em;
  }

  .cc-exp{
    left: 13.15em;
    top: 11.61em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

// *****************************************************************************
// JCB card product
// *****************************************************************************
.skeuocard.product-jcb {
  @extend .skeuocard.card-product;

  .face.front{
    background-image: url('../images/products/jcb-front.png'), $image-front-background;
  }

  .face.back{
    background-image: url('../images/products/visa-back.png'), $image-generic-back;
  }

  .cc-number{
    left: 1.8em;
    top: 8.05em;
  }

  .cc-name{
    left: 1.55em;
    top: 13.575em;
  }

  .cc-exp{
    left: 10.65em;
    top: 11.50em;
  }

  .cc-cvc{
    top: 7.15em;
    left: 18.1em;
    width: 3em;
  }
}

/* Preload face images */
body:after{
    display:none;
    content: url('../images/products/visa-back.png') // most use this
             url('../images/products/visa-front.png') 
             url('../images/products/unionpay-front.png') 
             url('../images/products/amex-front.png') 
             url('../images/products/discover-front.png') 
             url('../images/products/mastercard-front.png') 
             url('../images/products/dinersclubintl-front.png')
             url('../images/products/jcb-front.png');
}