Build mobile apps with simple HTML, CSS, and JS components. http://goratchet.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

923 lines
20 KiB

/*
* =====================================================
* Ratchet v2.0.0
* Copyright 2013 Connor Sears, Dave Gamache, and Jacob Thornton
* Licensed under http://www.opensource.org/licenses/MIT
*
* Designed and built by @connors, @dhg, and @fat.
* =====================================================
*/
/* Hard reset
-------------------------------------------------- */
12 years ago
html,
body,
div,
span,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
section,
summary,
time,
audio,
video {
padding: 0;
margin: 0;
border: 0; }
html {
-webkit-text-size-adjust: 100%; }
/* Base styles
-------------------------------------------------- */
body {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
font: 14px/1.25 "Helvetica Neue", sans-serif;
11 years ago
color: #000;
background-color: #fff; }
a {
11 years ago
color: #007aff;
text-decoration: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
.content {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: auto;
11 years ago
background-color: #efeff4;
-webkit-transition-property: top, bottom;
transition-property: top, bottom;
-webkit-transition-duration: .2s, .2s;
transition-duration: .2s, .2s;
-webkit-transition-timing-function: linear, linear;
transition-timing-function: linear, linear;
-webkit-overflow-scrolling: touch; }
.content > * {
-webkit-transform: translateZ(0px);
transform: translateZ(0px); }
.content-padded {
padding: 10px; }
.bar-title ~ .content {
padding-top: 44px; }
.bar-tab ~ .content {
padding-bottom: 51px; }
.bar-header-secondary ~ .content {
padding-top: 88px; }
/* General bar styles
-------------------------------------------------- */
[class*="bar-"] {
position: fixed;
right: 0;
left: 0;
z-index: 10;
height: 44px;
padding: 5px;
11 years ago
background-color: rgba(247, 247, 247, 0.98);
box-shadow: 0 0px 1px rgba(0, 0, 0, 0.85);
box-sizing: border-box; }
.bar-header-secondary {
top: 44px; }
.bar-footer {
bottom: 0; }
.bar-footer.bar-standard,
.bar-footer-secondary.bar-standard {
box-shadow: 0 0px 1px rgba(0, 0, 0, 0.85); }
/* Title bar
-------------------------------------------------- */
.bar-title {
top: 0;
display: -webkit-box;
display: box;
-webkit-box-orient: horizontal;
box-orient: horizontal; }
.bar-title .title {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
11 years ago
font-size: 18px;
font-weight: 500;
line-height: 44px;
11 years ago
color: #000;
text-align: center;
white-space: nowrap; }
.bar-title > a:not([class*="button"]) {
display: block;
width: 100%;
height: 100%; }
.bar-title .title a {
color: inherit; }
/* Tab bar
-------------------------------------------------- */
.bar-tab {
bottom: 0;
height: 50px;
padding: 0;
box-shadow: 0 0px 1px rgba(0, 0, 0, 0.85); }
.tab-inner {
display: -webkit-box;
display: box;
height: 100%;
list-style: none;
-webkit-box-orient: horizontal;
box-orient: horizontal; }
.tab-item {
height: 100%;
padding-top: 9px;
text-align: center;
box-sizing: border-box;
-webkit-box-flex: 1;
box-flex: 1; }
.tab-icon {
display: block;
height: 18px;
margin: 0 auto; }
.tab-label {
margin-top: 1px;
11 years ago
font-size: 11px;
font-weight: 400;
color: #929292; }
11 years ago
.tab-item.active .tab-label {
color: #007aff; }
/* Buttons in title bars
-------------------------------------------------- */
.bar-title [class*="button"] {
position: relative;
z-index: 10;
padding-left: 5px;
padding-right: 5px;
11 years ago
font-size: 16px;
font-weight: 400;
line-height: 29px;
color: #007aff;
border: 0;
transition: opacity .2s linear;
-webkit-box-flex: 0;
box-flex: 0; }
.bar-title .title + [class*="button"]:last-child,
.bar-title .button + [class*="button"]:last-child,
.bar-title [class*="button"].pull-right {
position: absolute;
top: 5px;
right: 5px; }
.bar-title .button:active,
.bar-title .button-prev:active,
.bar-title .button-next:active {
color: #007aff;
background-color: transparent;
opacity: .3; }
/* Directional buttons in title bars
-------------------------------------------------- */
.bar-title .button-prev:before,
.bar-title .button-prev:after,
.bar-title .button-next:before,
.bar-title .button-next:after {
position: absolute;
display: block;
width: 15px;
height: 3px;
background-color: #007aff;
content: ''; }
.bar-title .button-prev {
padding-left: 22px; }
.bar-title .button-next {
padding-right: 22px; }
.bar-title .button-prev:before,
.bar-title .button-prev:after {
left: 0; }
.bar-title .button-next:before,
.bar-title .button-next:after {
right: 0; }
.bar-title .button-prev:before,
.bar-title .button-next:before {
top: 12px; }
.bar-title .button-prev:after,
.bar-title .button-next:after {
top: 21px; }
.bar-title .button-prev:before {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
.bar-title .button-prev:after {
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.bar-title .button-next:before {
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.bar-title .button-next:after {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
/* Block buttons in any bar
-------------------------------------------------- */
[class*="bar"] .button-block {
padding: 7px 0;
margin-bottom: 0; }
[class*="bar"] .button-block:active {
padding: 7px 0; }
/* Segmented controller in any bar
-------------------------------------------------- */
[class*="bar-"] .segmented-controller {
margin-bottom: 0; }
[class*="bar-"] .segmented-controller + [class*="button"],
[class*="bar-"] [class*="button"] + .segmented-controller {
margin-left: 5px; }
/* Segmented controller in a title bar
-------------------------------------------------- */
.bar-title .segmented-controller {
line-height: 18px;
-webkit-box-flex: 1;
box-flex: 1; }
/* Search forms in standard bar
-------------------------------------------------- */
.bar-standard input[type=search] {
height: 32px;
margin: 0; }
.table-view {
list-style: none;
background-color: #fff; }
11 years ago
.table-view li {
position: relative;
padding: 11px 60px 11px 0;
margin-left: 15px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.table-view li:first-child {
border-top: 1px solid rgba(0, 0, 0, 0.1); }
.table-view li:last-child {
border-bottom: 0; }
.table-view li > a:not([class*="button"]) {
position: relative;
display: block;
padding: inherit;
margin: -11px -60px -11px 0;
color: inherit; }
.table-view.inset {
width: auto;
margin-right: 10px;
margin-left: 10px;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 6px;
box-sizing: border-box; }
.table-view.inset li:first-child {
border-top-width: 0; }
.table-view.inset li:last-child {
border-bottom-width: 0; }
.table-view .table-view-divider {
position: relative;
top: -1px;
padding-top: 6px;
padding-bottom: 6px;
padding-left: 15px;
margin-left: 0;
font-weight: bold;
line-height: 18px;
background-color: #f8f8f8;
border-top: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
/* Rounding first divider on inset lists and remove border on the top */
/* Rounding last divider on inset table views */ }
.table-view .table-view-divider :first-child {
top: 0;
border-top-width: 0;
border-radius: 6px 6px 0 0; }
.table-view .table-view-divider :last-child {
border-radius: 0 0 6px 6px; }
.table-view .chevron,
.table-view [class*="button"],
.table-view [class*="count"],
.table-view .toggle {
position: absolute;
top: 50%;
right: 10px; }
.table-view .chevron,
.table-view [class*="count"] {
margin-top: -10px; }
.table-view .chevron + [class*="count"] {
right: 30px; }
.table-view [class*="button"] {
left: auto;
margin-top: -14px; }
.table-view .toggle {
margin-top: -15px; }
/* Forms
-------------------------------------------------- */
input,
textarea,
button,
select {
font-family: inherit;
font-size: inherit; }
select,
textarea,
input[type="text"],
input[type=search],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="tel"],
input[type="color"],
.input-group {
width: 100%;
height: 40px;
padding: 10px;
margin-bottom: 10px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
-webkit-appearance: none;
box-sizing: border-box;
outline: none; }
input[type=search] {
height: 34px;
font-size: 14px;
border-radius: 6px;
border-width: 0;
background-color: rgba(0, 0, 0, 0.1); }
textarea {
height: auto; }
select {
height: auto;
font-size: 14px;
background-color: #f8f8f8;
background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #d4d4d4 100%);
background-image: linear-gradient(to bottom, #f8f8f8 0%, #d4d4d4 100%);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); }
/* Input groups (cluster multiple inputs together into a single group)
---------------------------------------------------------------------- */
.input-group {
width: auto;
height: auto;
padding: 0; }
.input-group input {
margin-bottom: 0;
background-color: transparent;
border: 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 0;
box-shadow: none; }
.input-group input:last-child {
border-bottom-width: 0; }
/* Input groups with labels
-------------------------------------------------- */
.input-row {
overflow: hidden;
border-bottom: 1px solid rgba(0, 0, 0, 0.2); }
.input-row:last-child {
border-bottom-width: 0; }
.input-row label {
float: left;
width: 25%;
padding: 11px 10px 9px 13px;
font-weight: bold; }
.input-row label + input {
float: right;
width: 65%;
padding-left: 0;
margin-bottom: 0;
border-bottom: 0; }
/* General button styles
-------------------------------------------------- */
[class*="button"] {
position: relative;
display: inline-block;
padding: 4px 12px;
margin: 0;
font-weight: bold;
line-height: 18px;
color: #333;
text-align: center;
vertical-align: top;
cursor: pointer;
11 years ago
background-color: transparent;
border: 1px solid rgba(0, 0, 0, 0.5);
border-radius: 4px; }
[class*="button"]:active {
11 years ago
background-color: #333;
transition: background-color .1s linear; }
/* Button modifiers
-------------------------------------------------- */
.button-main,
.button-positive,
.button-negative {
color: #fff; }
.button-main {
11 years ago
color: #007aff;
border: 1px solid #007aff; }
.button-positive {
11 years ago
color: #4cd964;
border: 1px solid #4cd964; }
.button-negative {
11 years ago
color: #e71e1e;
border: 1px solid #b51a1a; }
11 years ago
[class*="button"]:active,
.button-main:active,
.button-positive:active,
.button-negative:active {
color: #fff; }
.button-main:active {
11 years ago
color: #fff;
background-color: #007aff; }
.button-positive:active {
11 years ago
color: #fff;
background-color: #4cd964; }
.button-negative:active {
background-color: #b21a1a; }
.button-block {
display: block;
padding: 11px 0 13px;
margin-bottom: 10px;
font-size: 16px; }
button.button-block {
width: 100%; }
/* Counts in buttons
-------------------------------------------------- */
[class*="button"] [class*="count"] {
padding-top: 2px;
padding-bottom: 2px;
margin-right: -4px;
margin-left: 4px;
background-color: rgba(0, 0, 0, 0.1); }
.button-block [class*="count"] {
position: absolute;
right: 0;
padding-top: 4px;
padding-bottom: 4px;
margin-right: 10px; }
/* Chevrons
-------------------------------------------------- */
.chevron {
display: block;
height: 20px; }
.chevron:before,
.chevron:after {
position: relative;
display: block;
width: 10px;
11 years ago
height: 3px;
background-color: #c7c7cc;
content: ''; }
.chevron:before {
top: 6px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.chevron:after {
top: 8px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
/* General count styles
-------------------------------------------------- */
[class*="count"] {
display: inline-block;
padding: 4px 9px;
font-size: 12px;
font-weight: bold;
line-height: 13px;
color: #fff;
background-color: rgba(0, 0, 0, 0.3);
border-radius: 100px; }
/* Count modifiers
-------------------------------------------------- */
.count-main,
.count-positive,
.count-negative {
color: #fff; }
.count-main {
background-color: #1eafe7; }
.count-positive {
background-color: #4cd964; }
.count-negative {
background-color: #e71e1e; }
/* Segmented controllers
-------------------------------------------------- */
.segmented-controller {
display: -webkit-box;
display: box;
margin-bottom: 10px;
overflow: hidden;
font-size: 12px;
font-weight: bold;
list-style: none;
11 years ago
background-color: transparent;
border: 1px solid #007aff;
border-radius: 4px;
-webkit-box-orient: horizontal;
box-orient: horizontal; }
.segmented-controller li {
overflow: hidden;
text-align: center;
white-space: nowrap;
11 years ago
border-left: 1px solid #007aff;
-webkit-box-flex: 1;
box-flex: 1; }
.segmented-controller li > a {
display: block;
padding: 8px 16px;
overflow: hidden;
line-height: 15px;
11 years ago
color: #007aff;
text-overflow: ellipsis; }
.segmented-controller li:first-child {
border-left-width: 0; }
.segmented-controller li.active {
11 years ago
background-color: #007aff;
transition: background-color .2s linear; }
11 years ago
.segmented-controller li.active > a {
color: #fff; }
.segmented-controller-item {
display: none; }
.segmented-controller-item.active {
display: block; }
/* Popovers (to be used with popovers.js)
-------------------------------------------------- */
.popover {
position: fixed;
top: 55px;
left: 50%;
z-index: 20;
display: none;
width: 280px;
padding: 5px;
margin-left: -146px;
background-color: #555;
background-image: -webkit-linear-gradient(top, #555555 5%, #555555 6%, #111111 30%);
background-image: linear-gradient(to bottom, #555555 5%, #555555 6%, #111111 30%);
border: 1px solid #111;
border-radius: 6px;
opacity: 0;
box-shadow: inset 0 1px 1px -1px white, 0 3px 10px rgba(0, 0, 0, 0.3);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
-webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out; }
.popover:before,
.popover:after {
position: absolute;
left: 50%;
width: 0;
height: 0;
content: ''; }
.popover:before {
top: -20px;
margin-left: -21px;
border-right: 21px solid transparent;
border-bottom: 21px solid #111;
border-left: 21px solid transparent; }
.popover:after {
top: -19px;
margin-left: -20px;
border-right: 20px solid transparent;
border-bottom: 20px solid #555;
border-left: 20px solid transparent; }
.popover-header {
display: -webkit-box;
display: box;
height: 34px;
margin-bottom: 5px; }
.popover-header .title {
position: absolute;
top: 0;
left: 0;
width: 100%;
margin: 15px 0;
font-size: 16px;
font-weight: bold;
line-height: 12px;
color: #fff;
text-align: center;
text-shadow: 0 -1px rgba(0, 0, 0, 0.5); }
.popover-header [class*="button"] {
z-index: 25;
font-size: 12px;
line-height: 22px;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
background-color: #454545;
background-image: -webkit-linear-gradient(top, #454545 0, #353535 100%);
background-image: linear-gradient(to bottom, #454545 0, #353535 100%);
border: 1px solid #111;
-webkit-box-flex: 0;
box-flex: 0; }
.popover-header .title + [class*="button"]:last-child,
.popover-header .button + [class*="button"]:last-child,
.popover-header [class*="button"].pull-right {
position: absolute;
top: 5px;
right: 5px; }
.popover-header .button:active {
color: #fff;
background-color: #0876b1; }
/* Popover animation
-------------------------------------------------- */
.popover.visible {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0); }
/* Backdrop (used as invisible touch escape)
-------------------------------------------------- */
.backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 10; }
/* Block level buttons in popovers
-------------------------------------------------- */
.popover .button-block {
margin-bottom: 5px;
border: 1px solid #111; }
.popover .button-block:last-child {
margin-bottom: 0; }
/* Lists in popovers
-------------------------------------------------- */
.popover .table-view {
width: auto;
max-height: 250px;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
overflow: auto;
background-color: #fff;
border: 1px solid #000;
border-radius: 3px;
-webkit-overflow-scrolling: touch; }
/* Modals
12 years ago
-------------------------------------------------- */
.modal {
position: fixed;
12 years ago
top: 0;
opacity: 0;
z-index: 11;
12 years ago
width: 100%;
min-height: 100%;
12 years ago
overflow: hidden;
background-color: #fff;
12 years ago
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
12 years ago
-webkit-transition: -webkit-transform .25s ease-in-out, opacity 1ms .25s;
transition: transform .25s ease-in-out, opacity 1ms .25s; }
12 years ago
/* Modal - When active
-------------------------------------------------- */
.modal.active {
opacity: 1;
height: 100%;
12 years ago
-webkit-transition: -webkit-transform .25s ease-in-out;
transition: transform .25 ease-in-out;
12 years ago
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0); }
.slider,
.slider > li {
width: 100%;
height: 200px; }
.slider {
overflow: hidden;
background-color: #000; }
11 years ago
.slider > ul {
position: relative;
font-size: 0;
white-space: nowrap;
-webkit-transition: all 0 linear;
transition: all 0 linear; }
.slider > ul > li {
display: inline-block;
vertical-align: top;
width: 100%;
height: 100%; }
.slider > ul > li > * {
font-size: 14px; }
.toggle {
position: relative;
11 years ago
width: 45px;
height: 28px;
11 years ago
background-color: #fff;
border: 2px solid #e6e6e6;
border-radius: 20px; }
11 years ago
.toggle .toggle-handle {
position: absolute;
top: -1px;
left: -1px;
z-index: 2;
width: 28px;
height: 28px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 100px;
box-shadow: 0 3px 3px rgba(0, 0, 0, 0.08);
-webkit-transition: -webkit-transform 0.1s ease-in-out, border 0.1s ease-in-out;
transition: transform 0.1s ease-in-out, border 0.1s ease-in-out; }
.toggle.active {
background-color: #4cd964;
border: 2px solid #4cd964; }
.toggle.active .toggle-handle {
border-color: #4cd964;
-webkit-transform: translate3d(17px, 0, 0);
transform: translate3d(17px, 0, 0); }
/* Push styles (to be used with push.js)
-------------------------------------------------- */
.content.fade {
left: 0;
opacity: 0;
-webkit-transition: opacity .2s ease-in-out;
transition: opacity .2s ease-in-out; }
.content.fade.in {
opacity: 1; }
.content.slide {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-transition: -webkit-transform .25s ease-in-out;
transition: transform .25s ease-in-out;
-webkit-transition-timing-function: cubic-bezier(0.1, 0.7, 0.1, 1); }
.content.slide.left {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0); }
.content.slide.right {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0); }