added more preview pages and more templates

This commit is contained in:
2026-07-21 07:10:03 -05:00
parent c6119ffdf5
commit b19fdee30d
3726 changed files with 651487 additions and 6169 deletions
+257
View File
@@ -0,0 +1,257 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>About | T.R.B. Painting</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Learn about T.R.B. Painting — interior painting, exterior painting, and power washing. Call (630) 606-6776.">
<meta name="format-detection" content="telephone=no"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/grid.css">
<link rel="stylesheet" href="css/style.css">
<script src="js/jquery.js"></script>
<script src="js/jquery-migrate-1.2.1.js"></script>
<!--[if lt IE 9]>
<html class="lt-ie9">
<div style=' clear: both; text-align:center; position: relative;'>
<a href="http://windows.microsoft.com/en-US/internet-explorer/..">
<img src="images/ie8-panel/warning_bar_0000_us.jpg" border="0" height="42" width="820"
alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today."/>
</a>
</div>
<script src="js/html5shiv.js"></script>
<![endif]-->
<script src='js/device.min.js'></script>
<style>
.preview-concept-banner{position:fixed;top:0;left:0;right:0;z-index:99999;background:#1a2332;color:#fff;font:600 13px/1.4 system-ui,sans-serif;padding:8px 16px;text-align:center}
.preview-concept-banner span{opacity:.85;font-weight:400}
.preview-concept-banner a{color:#fff;text-decoration:underline}
body{padding-top:36px}
.aiml-site-credit{text-align:center;padding:12px 16px 24px;font:14px/1.4 system-ui,sans-serif;color:#555}
.aiml-site-credit a{color:#1a2332;text-decoration:underline}
footer .aiml-site-credit{color:rgba(255,255,255,.85)}
footer .aiml-site-credit a{color:#fff}
</style>
</head>
<body>
<div class="preview-concept-banner">UX Concept Preview — T.R.B. Painting <span>· Concept site — not live</span> · <a href="ux-gallery.html">Feature gallery</a> · <a href="pricing.html">Pricing</a></div>
<div class="page">
<!--========================================================
HEADER
=========================================================-->
<header class="bg2">
<div id="stuck_container" class="stuck_container">
<div class="container">
<div class="brand">
<p class="brand_name">
<a href="index.html">T.R.B. Painting</a>
</p>
</div>
<nav class="nav" aria-label="Primary">
<ul class="sf-menu" data-type="navbar">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="services.html">Services</a>
<ul>
<li><a href="services.html#interior">Interior painting</a></li>
<li><a href="services.html#exterior">Exterior painting</a></li>
<li><a href="services.html#power-washing">Power washing</a></li>
</ul>
</li>
<li class="active">
<a href="about.html">About</a>
</li>
<li>
<a href="gallery.html">Gallery</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!--========================================================
CONTENT
=========================================================-->
<main>
<section class="well4">
<div class="container">
<h3>About T.R.B. Painting</h3>
<div class="row">
<div class="preffix_1 grid_10">
<p>T.R.B. Painting is a local painting contractor focused on three core services: interior painting, exterior painting, and power washing. We believe great results start with honest estimates, careful prep, and finishes that hold up. Call <a href="tel:+16306066776">(630) 606-6776</a> to discuss your project.</p>
<a class="btn" href="contact.html">Contact T.R.B.</a>
</div>
</div>
</div>
</section>
<section class="bg3 well5">
<div class="container">
<h3>What we stand for</h3>
<ul class="row index-list">
<li class="grid_4 wow fadeInLeft">
<h5>Clear communication</h5>
<p class="text1">Updates you can count on<br> from estimate to finish</p>
<a class="btn2" href="services.html">View services</a>
</li>
<li class="grid_4 wow fadeInLeft" data-wow-delay="0.2s">
<h5>Quality prep</h5>
<p class="text1">Surfaces cleaned and ready<br> so paint lasts longer</p>
<a class="btn2" href="services.html">View services</a>
</li>
<li class="grid_4 wow fadeInLeft" data-wow-delay="0.4s">
<h5>Clean jobsite</h5>
<p class="text1">Protective coverings and<br> tidy wrap-up every time</p>
<a class="btn2" href="services.html">View services</a>
</li>
</ul>
</div>
</section>
<section class="well4">
<div class="container">
<h3>Projects we take on</h3>
<div class="row wow fadeInUp">
<div class="grid_6">
<div class="box2">
<div class="box2_aside">
<img class="circle" src="images/page-4_img01.jpg" alt="Interior painting sample" loading="lazy" decoding="async">
</div>
<div class="box2_cnt__no-flow">
<h4>Interior painting</h4>
<p>Single rooms or whole-home interiors — walls, ceilings, trim, and doors finished with clean lines.</p>
<h5><a href="contact.html">Request an estimate</a></h5>
</div>
</div>
</div>
<div class="grid_6">
<div class="box2">
<div class="box2_aside">
<img class="circle" src="images/page-4_img02.jpg" alt="Exterior painting sample" loading="lazy" decoding="async">
</div>
<div class="box2_cnt__no-flow">
<h4>Exterior painting</h4>
<p>Siding, trim, and outdoor surfaces coated for protection and curb appeal.</p>
<h5><a href="contact.html">Request an estimate</a></h5>
</div>
</div>
</div>
</div>
<div class="row mt1 wow fadeInUp">
<div class="grid_6">
<div class="box2">
<div class="box2_aside">
<img class="circle" src="images/page-4_img03.jpg" alt="Power washing sample" loading="lazy" decoding="async">
</div>
<div class="box2_cnt__no-flow">
<h4>Power washing</h4>
<p>Wash homes and hard surfaces to restore appearance and prepare for paint.</p>
<h5><a href="contact.html">Request an estimate</a></h5>
</div>
</div>
</div>
<div class="grid_6">
<div class="box2">
<div class="box2_aside">
<img class="circle" src="images/page-4_img04.jpg" alt="Job walkthrough with homeowner" loading="lazy" decoding="async">
</div>
<div class="box2_cnt__no-flow">
<h4>Estimate &amp; walkthrough</h4>
<p>We walk the job with you, answer questions, and price the work before we start.</p>
<h5><a href="contact.html">Request an estimate</a></h5>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="parallax parallax_2" data-url="images/parallax05.jpg">
<div class="container">
<h3>Fair, transparent pricing</h3>
<div class="row">
<div class="preffix_1 grid_10">
<p>Every home is different — square footage, surface condition, and color choices all affect the quote. We explain the scope clearly so you know what you are paying for.</p>
<ul class="marked-list1">
<li>Written estimates before work begins</li>
<li>No surprise charges for standard prep</li>
<li>Call (630) 606-6776 for a free quote</li>
</ul>
</div>
</div>
</div>
</section>
<section class="well3">
<div class="container">
<h3>Get started</h3>
<div class="row">
<div class="preffix_1 grid_10">
<p>Ready for interior painting, exterior painting, or power washing? Call <a href="tel:+16306066776">(630) 606-6776</a> or send a message on our <a href="contact.html">contact page</a>.</p>
<p><a class="btn" href="contact.html">Contact T.R.B. Painting</a></p>
</div>
</div>
</div>
</section>
</main>
<!--========================================================
FOOTER
=========================================================-->
<footer class="parallax" data-url="images/parallax02.jpg">
<div class="container">
<div class="row">
<div class="grid_4">
<address class="addr">
<span class="fa fa-map-marker" aria-hidden="true"></span>
<p>Service area TBD<br><span style="opacity:.85">Confirm coverage with T.R.B. Painting</span></p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-envelope-o" aria-hidden="true"></span>
<p>Email TBD</p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-mobile" aria-hidden="true"></span>
<p><a href="tel:+16306066776">(630) 606-6776</a></p>
</address>
</div>
</div>
<p class="copy">
T.R.B. Painting © <span id="copyright-year"></span>
<span>All Rights Reserved</span>
&nbsp;|&nbsp;
<a href="privacy.html">Privacy Policy</a>
</p>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</footer>
</div>
<script src="js/script.js"></script>
<script>
(function () {
function labelToggle() {
var t = document.querySelector('.rd-mobilepanel_toggle');
if (t && !t.getAttribute('aria-label')) t.setAttribute('aria-label', 'Open menu');
}
document.addEventListener('DOMContentLoaded', function () {
labelToggle();
setTimeout(labelToggle, 500);
setTimeout(labelToggle, 1500);
});
})();
</script>
</body>
</html>
@@ -0,0 +1,467 @@
/* Shared UX gallery + pricing hub (platform proposals) */
:root {
--ink: #12141a;
--muted: #5c6570;
--surface: #f3f5f7;
--card: #fff;
--border: #d9dee5;
--accent: #1a4f6e;
--accent-2: #c45c26;
--ok: #1a7f4b;
--warn: #b45309;
--banner: #111827;
--radius: 4px;
--font: "Segoe UI", system-ui, sans-serif;
--display: Georgia, "Times New Roman", serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: var(--font);
color: var(--ink);
background: var(--surface);
line-height: 1.5;
}
a { color: var(--accent); }
.proposal-banner {
background: var(--banner);
color: #e5e7eb;
font-size: 13px;
padding: 8px 16px;
display: flex;
flex-wrap: wrap;
gap: 12px;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 100;
}
.proposal-banner a { color: #93c5fd; text-decoration: none; }
.proposal-banner a:hover { text-decoration: underline; }
.proposal-banner .tag {
display: inline-block;
background: var(--accent);
color: #fff;
padding: 2px 8px;
border-radius: 2px;
font-size: 11px;
letter-spacing: 0.04em;
text-transform: uppercase;
font-weight: 600;
}
.hub-hero {
background: linear-gradient(135deg, #0b1f33 0%, #1a4f6e 55%, #2a6f8f 100%);
color: #fff;
padding: 56px 24px 48px;
}
.hub-hero.paint {
background: linear-gradient(135deg, #1a2332 0%, #3d4a5c 50%, #c4a574 120%);
}
.hub-hero h1 {
font-family: var(--display);
font-weight: 700;
letter-spacing: -0.02em;
margin: 0 0 12px;
font-size: clamp(1.6rem, 3vw, 2.2rem);
}
.hub-hero p { max-width: 560px; margin: 0; opacity: 0.92; }
.hub-section {
max-width: 1100px;
margin: 0 auto;
padding: 32px 24px 8px;
}
.hub-section h2 {
font-family: var(--display);
font-size: 1.25rem;
margin: 0 0 6px;
}
.hub-section .sec-lead {
margin: 0 0 16px;
color: var(--muted);
font-size: 14px;
}
.hub-grid {
max-width: 1100px;
margin: 0 auto 40px;
padding: 0 24px;
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}
.hub-card {
background: var(--card);
border: 1px solid var(--border);
padding: 20px;
text-decoration: none;
color: inherit;
transition: border-color 0.15s, transform 0.15s;
display: block;
}
.hub-card:hover {
border-color: var(--accent);
transform: translateY(-2px);
color: inherit;
text-decoration: none;
}
.hub-card.planned {
opacity: 0.85;
border-style: dashed;
}
.hub-card .eyebrow {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--accent);
font-weight: 600;
margin-bottom: 6px;
}
.hub-card.paint .eyebrow { color: var(--accent-2); }
.hub-card h3 {
margin: 0 0 8px;
font-size: 18px;
font-family: var(--display);
}
.hub-card p { margin: 0; font-size: 14px; color: var(--muted); }
.hub-card .status {
display: inline-block;
margin-top: 10px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--ok);
}
.hub-card.planned .status { color: var(--warn); }
/* Pricing */
.pricing-layout {
max-width: 960px;
margin: 0 auto;
padding: 32px 24px 64px;
display: grid;
gap: 24px;
grid-template-columns: 1fr minmax(240px, 300px);
align-items: start;
}
@media (max-width: 800px) {
.pricing-layout { grid-template-columns: 1fr; }
}
.price-panel, .price-summary {
background: var(--card);
border: 1px solid var(--border);
padding: 20px;
}
.price-panel h2, .price-summary h2 {
font-family: var(--display);
font-size: 1.15rem;
margin: 0 0 16px;
}
.feat-row {
display: grid;
grid-template-columns: auto 1fr auto auto;
gap: 12px;
align-items: start;
padding: 14px 0;
border-bottom: 1px solid var(--border);
}
.feat-row:last-child { border-bottom: none; }
.feat-row.locked { background: #f8fafc; margin: 0 -12px; padding-left: 12px; padding-right: 12px; }
.feat-row label { font-weight: 600; cursor: pointer; }
.feat-row .desc { font-size: 13px; color: var(--muted); font-weight: 400; margin-top: 2px; }
.feat-row .amt { font-size: 13px; text-align: right; white-space: nowrap; color: var(--muted); }
.feat-row .amt strong { display: block; color: var(--ink); font-size: 14px; }
.feat-row input:disabled + .feat-text label { cursor: default; }
.dep-note { font-size: 12px; color: var(--warn); margin-top: 4px; }
.price-summary { position: sticky; top: 56px; }
.price-summary .line {
display: flex;
justify-content: space-between;
gap: 12px;
padding: 8px 0;
font-size: 14px;
}
.price-summary .total {
border-top: 2px solid var(--ink);
margin-top: 12px;
padding-top: 14px;
font-size: 18px;
font-weight: 700;
font-family: var(--display);
}
.price-summary .disclaimer {
margin-top: 16px;
font-size: 12px;
color: var(--muted);
}
.stub-page {
min-height: calc(100vh - 40px);
display: flex;
align-items: center;
justify-content: center;
padding: 40px 24px;
}
.stub-card {
background: var(--card);
border: 1px solid var(--border);
max-width: 480px;
padding: 32px;
text-align: center;
}
.stub-card h1 { font-family: var(--display); font-size: 1.5rem; margin: 0 0 8px; }
.stub-card p { color: var(--muted); margin: 0 0 20px; }
.stub-card a.btn {
display: inline-block;
background: var(--accent);
color: #fff;
text-decoration: none;
padding: 10px 18px;
font-weight: 600;
font-size: 14px;
}
/* —— Portal shell —— */
body.portal { margin: 0; background: var(--surface); font-family: var(--font); color: var(--ink); }
.portal-shell { display: flex; min-height: calc(100vh - 36px); }
.portal-sidebar {
width: 220px; flex-shrink: 0; background: #0b1f33; color: #cbd5e1;
display: flex; flex-direction: column;
}
.portal-brand {
padding: 16px 18px; border-bottom: 1px solid rgba(255,255,255,.08);
font-family: var(--display); font-weight: 700; color: #fff; font-size: 14px;
text-decoration: none; display: block;
}
.portal-brand span { display: block; color: #7dd3da; font-size: 11px; font-weight: 600; letter-spacing: .04em; margin-top: 2px; font-family: var(--font); }
.portal-nav { padding: 12px 0; flex: 1; overflow-y: auto; }
.portal-nav .nav-section {
font-size: 10px; text-transform: uppercase; letter-spacing: .1em; color: #64748b;
padding: 14px 18px 6px;
}
.portal-nav a {
display: block; padding: 9px 18px; color: #94a3b8; text-decoration: none; font-size: 13px;
border-left: 3px solid transparent;
}
.portal-nav a:hover { color: #fff; background: rgba(255,255,255,.04); }
.portal-nav a.active { color: #fff; background: rgba(26,79,110,.35); border-left-color: #7dd3da; }
.portal-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.portal-topbar {
background: #fff; border-bottom: 1px solid var(--border);
padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.portal-topbar h1 { margin: 0; font-size: 20px; font-family: var(--display); font-weight: 600; }
.portal-user { font-size: 13px; color: var(--muted); }
.portal-user strong { color: var(--ink); }
.portal-user a { color: var(--accent); }
.portal-content { padding: 24px; flex: 1; }
.proposal-note {
border-left: 3px solid var(--accent); background: #e8f0f5; padding: 12px 16px;
margin: 0 0 20px; font-size: 14px; color: #0d3a45;
}
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.stat-card { background: #fff; border: 1px solid var(--border); padding: 18px; }
.stat-card .label { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.stat-card .value { font-size: 28px; font-weight: 700; font-family: var(--display); margin-top: 4px; }
.stat-card .delta { font-size: 12px; margin-top: 4px; color: var(--ok); }
.panel { background: #fff; border: 1px solid var(--border); margin-bottom: 20px; }
.panel-h {
padding: 14px 18px; border-bottom: 1px solid var(--border);
display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.panel-h h2 { margin: 0; font-size: 15px; font-family: var(--display); font-weight: 600; }
.panel-b { padding: 18px; }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 900px) {
.portal-shell { flex-direction: column; }
.portal-sidebar { width: 100%; }
.portal-nav { display: flex; flex-wrap: wrap; padding: 8px; }
.portal-nav .nav-section { display: none; }
.portal-nav a { border-left: none; border-bottom: 2px solid transparent; padding: 8px 12px; }
.portal-nav a.active { border-bottom-color: #7dd3da; background: transparent; }
.split { grid-template-columns: 1fr; }
}
.btn {
display: inline-block; padding: 9px 18px; font-size: 13px; font-weight: 600;
border: none; cursor: pointer; text-decoration: none; font-family: var(--font);
}
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover { background: #143d56; color: #fff; text-decoration: none; }
.btn-ghost { background: transparent; border: 1px solid var(--border); color: var(--ink); }
.btn-sm { padding: 6px 12px; font-size: 12px; }
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th {
text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
color: var(--muted); padding: 10px 12px; border-bottom: 1px solid var(--border); font-weight: 600;
}
.table td { padding: 12px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.table tr:hover td { background: #f8fafc; }
.table a { color: var(--accent); text-decoration: none; font-weight: 500; }
.badge {
display: inline-block; padding: 2px 8px; font-size: 11px; font-weight: 600;
border-radius: 2px; text-transform: uppercase; letter-spacing: .04em;
}
.badge-new { background: #d0eef0; color: #00626c; }
.badge-contacted { background: #fef3c7; color: #92400e; }
.badge-won { background: #d1fae5; color: #065f46; }
.badge-lost { background: #fee2e2; color: #991b1b; }
.badge-sent { background: #d0eef0; color: #00626c; }
.badge-scheduled { background: #ede9fe; color: #5b21b6; }
.badge-paid { background: #d1fae5; color: #065f46; }
.badge-open { background: #fef3c7; color: #92400e; }
.badge-draft { background: #f3f4f6; color: #4b5563; }
.form-grid { display: grid; gap: 16px; }
.form-grid.cols-2 { grid-template-columns: 1fr 1fr; }
@media (max-width: 700px) { .form-grid.cols-2 { grid-template-columns: 1fr; } }
.field label { display: block; font-size: 12px; font-weight: 600; margin-bottom: 6px; color: #374151; }
.field input, .field select, .field textarea {
width: 100%; padding: 10px 12px; border: 1px solid var(--border); font: inherit; background: #fff; box-sizing: border-box;
}
.field textarea { min-height: 100px; resize: vertical; }
.field .hint { font-size: 12px; color: var(--muted); margin-top: 4px; }
.login-wrap {
min-height: calc(100vh - 36px); display: flex; align-items: center; justify-content: center;
background: linear-gradient(160deg, #0b1f33, #1a4f6e 60%, #e8f0f5 60%); padding: 24px;
}
.login-card { background: #fff; width: 100%; max-width: 400px; padding: 36px 32px; border: 1px solid var(--border); }
.login-card h1 { font-family: var(--display); font-size: 22px; margin: 0 0 6px; }
.login-card .sub { color: var(--muted); font-size: 14px; margin: 0 0 24px; }
.chart-ph {
height: 220px; background: linear-gradient(180deg, #e8f0f5 0%, #fff 100%);
border: 1px dashed #a8d8dc; display: flex; align-items: flex-end; gap: 8px; padding: 24px 16px 16px;
}
.chart-ph .bar { flex: 1; background: var(--accent); opacity: .75; border-radius: 2px 2px 0 0; min-height: 20px; }
.channel-tabs { display: flex; border-bottom: 1px solid var(--border); margin-bottom: 18px; }
.channel-tabs a {
padding: 10px 16px; font-size: 13px; font-weight: 600; color: var(--muted);
text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.channel-tabs a.active { color: var(--accent); border-bottom-color: var(--accent); }
.connect-grid { display: grid; gap: 12px; }
.connect-card {
display: flex; gap: 14px; align-items: flex-start; text-align: left;
padding: 14px; border: 1px solid var(--border); background: #fff; width: 100%;
cursor: pointer; font: inherit; color: inherit;
}
.connect-card:hover { border-color: var(--accent); }
.platform-icon {
width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center;
justify-content: center; color: #fff; font-weight: 700; flex-shrink: 0; font-size: 14px;
}
.platform-icon.meta { background: #1877f2; }
.platform-icon.ig { background: linear-gradient(45deg, #f58529, #dd2a7b, #8134af); font-size: 12px; }
.platform-icon.li { background: #0a66c2; }
.social-phone {
width: 100%; max-width: 360px; background: #fff; border: 1px solid #d1d5db;
box-shadow: 0 8px 30px rgba(15,23,42,.12); overflow: hidden; font-size: 14px;
}
.soc-header { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
.soc-avatar {
width: 40px; height: 40px; background: var(--accent); color: #fff; display: flex;
align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex-shrink: 0; border-radius: 50%;
}
.soc-name { font-weight: 700; font-size: 13px; }
.soc-meta { font-size: 11px; color: #6b7280; }
.soc-caption { padding: 0 14px 12px; white-space: pre-wrap; line-height: 1.4; font-size: 13px; }
.soc-image { height: 200px; background: linear-gradient(135deg, #e5e7eb, #cbd5e1); }
.soc-actions { padding: 10px 14px; border-top: 1px solid #e5e7eb; font-size: 12px; color: #4b5563; font-weight: 600; }
.ai-chat { display: flex; flex-direction: column; height: min(640px, 75vh); background: #fff; border: 1px solid var(--border); }
.ai-chat-h { padding: 12px 14px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; }
.ai-chat-h h2 { margin: 0; font-size: 15px; font-family: var(--display); }
.ai-pill { font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; background: #e8f0f5; color: var(--accent); padding: 3px 8px; }
.ai-messages { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 12px; background: linear-gradient(180deg, #f8fafc, #fff 40%); }
.ai-msg { max-width: 92%; font-size: 13px; line-height: 1.45; }
.ai-msg.bot { align-self: flex-start; }
.ai-msg.user { align-self: flex-end; }
.ai-msg .bubble { padding: 10px 12px; border: 1px solid var(--border); background: #fff; }
.ai-msg.user .bubble { background: var(--accent); color: #fff; border-color: var(--accent); }
.ai-msg .who { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin-bottom: 4px; }
.ai-draft { margin-top: 8px; padding: 10px; background: #f8fafc; border: 1px dashed #a8d8dc; white-space: pre-wrap; font-size: 12px; }
.ai-chat-input { border-top: 1px solid var(--border); padding: 10px 12px; display: flex; gap: 8px; align-items: flex-end; }
.ai-chat-input textarea { flex: 1; min-height: 44px; max-height: 100px; resize: vertical; border: 1px solid var(--border); padding: 8px 10px; font: inherit; font-size: 13px; }
.postcard {
width: 100%; max-width: 420px; aspect-ratio: 6/4; position: relative; overflow: hidden;
background: #111; box-shadow: 0 12px 40px rgba(15,23,42,.25); color: #fff;
}
.postcard-media { position: absolute; inset: 0; background: linear-gradient(135deg, #1a4f6e, #0b1f33 60%, #c45c26); }
.postcard-copy { position: absolute; left: 20px; right: 20px; bottom: 18px; z-index: 2; }
.postcard-headline { font-family: var(--display); font-weight: 700; font-size: 26px; border-left: 4px solid #7dd3da; padding-left: 10px; line-height: 1.1; }
.postcard-sub { margin-top: 8px; font-size: 14px; opacity: .95; }
.size-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.size-option {
border: 1px solid var(--border); background: #fff; padding: 10px 12px; text-align: left;
cursor: pointer; font: inherit; color: inherit;
}
.size-option.active { border-color: var(--accent); background: #e8f0f5; box-shadow: inset 3px 0 0 var(--accent); }
.designer-layout { display: grid; grid-template-columns: minmax(240px, 320px) 1fr; gap: 20px; align-items: start; }
@media (max-width: 960px) { .designer-layout { grid-template-columns: 1fr; } }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; font-size: 12px; }
.calendar-grid .dow { text-align: center; color: var(--muted); font-weight: 600; padding: 6px; }
.calendar-grid .day {
aspect-ratio: 1; border: 1px solid var(--border); background: #fff; padding: 6px; position: relative;
}
.calendar-grid .day.has-post { background: #e8f0f5; }
.calendar-grid .day .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); margin-top: 4px; }
.steps { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.step {
display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted);
padding: 8px 12px; background: #fff; border: 1px solid var(--border);
}
.step span {
width: 22px; height: 22px; border-radius: 50%; background: #e5e7eb; color: #374151;
display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700;
}
.step.active { border-color: var(--accent); color: var(--ink); }
.step.active span { background: var(--accent); color: #fff; }
.dropzone { border: 2px dashed var(--border); padding: 32px; text-align: center; background: #f8fafc; }
.public-simple { max-width: 720px; margin: 40px auto; padding: 0 24px 64px; }
.public-simple .card { background: #fff; border: 1px solid var(--border); padding: 32px; }
.public-nav {
background: #fff; border-bottom: 1px solid var(--border);
padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.public-nav .brand { font-family: var(--display); font-weight: 700; color: var(--ink); text-decoration: none; font-size: 18px; }
.public-nav .links a { margin-left: 16px; font-size: 14px; color: var(--muted); text-decoration: none; }
.public-nav .links a:hover { color: var(--accent); }
.blog-list { display: grid; gap: 16px; }
.blog-item { background: #fff; border: 1px solid var(--border); padding: 20px; text-decoration: none; color: inherit; display: block; }
.blog-item:hover { border-color: var(--accent); color: inherit; text-decoration: none; }
.blog-item h3 { margin: 0 0 6px; font-family: var(--display); }
.blog-item .meta { font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.blog-item p { margin: 0; font-size: 14px; color: var(--muted); }
.pay-box { max-width: 480px; margin: 48px auto; background: #fff; border: 1px solid var(--border); padding: 32px; }
.pay-box h1 { font-family: var(--display); margin: 0 0 8px; }
.pay-amount { font-size: 36px; font-weight: 700; font-family: var(--display); margin: 16px 0; }
.error-hero { text-align: center; padding: 80px 24px; }
.error-hero h1 { font-family: var(--display); font-size: 4rem; margin: 0; color: var(--accent); }
.muted { color: var(--muted); font-size: 12px; }
.theme-paint {
--accent: #c45c26;
--accent-2: #1a2332;
}
.theme-paint .portal-sidebar { background: #1a2332; }
.theme-paint .portal-nav a.active { background: rgba(196,92,38,.25); border-left-color: #c45c26; }
.theme-paint .login-wrap { background: linear-gradient(160deg, #1a2332, #3d4a5c 60%, #f3efe8 60%); }
.theme-paint .proposal-note { border-left-color: #c45c26; background: #faf6f1; color: #5c3d2e; }
.theme-paint .btn-primary { background: #c45c26; }
.theme-paint .btn-primary:hover { background: #a34a1e; }
.theme-paint .portal-nav a.active { border-left-color: #e8b88a; }
/* Vendor credit */
.aiml-site-credit {
text-align: center;
font-size: 12px;
color: var(--muted);
padding: 16px 24px 28px;
}
.aiml-site-credit a {
color: var(--accent);
text-decoration: none;
font-weight: 600;
}
.aiml-site-credit a:hover { text-decoration: underline; }
body.portal .aiml-site-credit {
border-top: 1px solid var(--border);
background: #fff;
margin-top: auto;
}
+207
View File
@@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Contact | T.R.B. Painting — (630) 606-6776</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Contact T.R.B. Painting for interior, exterior, or power washing estimates. Call (630) 606-6776.">
<meta name="format-detection" content="telephone=no"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/grid.css">
<link rel="stylesheet" href="css/google-map.css">
<link rel="stylesheet" href="css/contact-form.css">
<link rel="stylesheet" href="css/style.css">
<script src="js/jquery.js"></script>
<script src="js/jquery-migrate-1.2.1.js"></script>
<!--[if lt IE 9]>
<html class="lt-ie9">
<div style=' clear: both; text-align:center; position: relative;'>
<a href="http://windows.microsoft.com/en-US/internet-explorer/..">
<img src="images/ie8-panel/warning_bar_0000_us.jpg" border="0" height="42" width="820"
alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today."/>
</a>
</div>
<script src="js/html5shiv.js"></script>
<![endif]-->
<script src='js/device.min.js'></script>
<style>
.preview-concept-banner{position:fixed;top:0;left:0;right:0;z-index:99999;background:#1a2332;color:#fff;font:600 13px/1.4 system-ui,sans-serif;padding:8px 16px;text-align:center}
.preview-concept-banner span{opacity:.85;font-weight:400}
.preview-concept-banner a{color:#fff;text-decoration:underline}
body{padding-top:36px}
.aiml-site-credit{text-align:center;padding:12px 16px 24px;font:14px/1.4 system-ui,sans-serif;color:#555}
.aiml-site-credit a{color:#1a2332;text-decoration:underline}
footer .aiml-site-credit{color:rgba(255,255,255,.85)}
footer .aiml-site-credit a{color:#fff}
</style>
</head>
<body>
<div class="preview-concept-banner">UX Concept Preview — T.R.B. Painting <span>· Concept site — not live</span> · <a href="ux-gallery.html">Feature gallery</a> · <a href="pricing.html">Pricing</a></div>
<div class="page">
<!--========================================================
HEADER
=========================================================-->
<header class="bg2">
<div id="stuck_container" class="stuck_container">
<div class="container">
<div class="brand">
<p class="brand_name">
<a href="index.html">T.R.B. Painting</a>
</p>
</div>
<nav class="nav" aria-label="Primary">
<ul class="sf-menu" data-type="navbar">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="services.html">Services</a>
<ul>
<li><a href="services.html#interior">Interior painting</a></li>
<li><a href="services.html#exterior">Exterior painting</a></li>
<li><a href="services.html#power-washing">Power washing</a></li>
</ul>
</li>
<li>
<a href="about.html">About</a>
</li>
<li>
<a href="gallery.html">Gallery</a>
</li>
<li class="active">
<a href="contact.html">Contact</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!--========================================================
CONTENT
=========================================================-->
<main>
<section class="well4">
<div class="container">
<h3>Contact T.R.B. Painting</h3>
<p class="mt1" style="margin-bottom:1.5rem">Call <a href="tel:+16306066776">(630) 606-6776</a> or send a message below. Tell us whether you need interior painting, exterior painting, or power washing.</p>
<form id="contact-form" class='contact-form'>
<div class="contact-form-loader"></div>
<fieldset>
<label class="name">
<input type="text" name="name" placeholder="Your Name" aria-label="Your name" value=""
data-constraints="@Required @JustLetters"/>
<span class="empty-message">*This field is required.</span>
<span class="error-message">*This is not a valid name.</span>
</label>
<div class="input-wrap">
<label class="email">
<input type="text" name="email" placeholder="Your Email" aria-label="Your email" value=""
data-constraints="@Required @Email"/>
<span class="empty-message">*This field is required.</span>
<span class="error-message">*This is not a valid email.</span>
</label>
<label class="phone">
<input type="text" name="phone" placeholder="Your Phone Number" aria-label="Your phone number" value=""
data-constraints="@JustNumbers"/>
<span class="empty-message">*This field is required.</span>
<span class="error-message">*This is not a valid phone.</span>
</label>
</div>
<label class="message">
<textarea name="message" placeholder="Your Message" aria-label="Your message"
data-constraints='@Required @Length(min=20,max=999999)'></textarea>
<span class="empty-message">*This field is required.</span>
<span class="error-message">*The message is too short.</span>
</label>
<a class="btn" href="#" data-type="submit">Send message</a>
</fieldset>
<div class="modal fade response-message">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">
&times;
</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
You message has been sent! We will be in touch soon.
</div>
</div>
</div>
</div>
</form>
</div>
</section>
<section class="well4">
<div class="container">
<h3>Service area</h3>
<p>Service coverage is confirmed when you call. Phone: <a href="tel:+16306066776">(630) 606-6776</a>. Email address TBD.</p>
</div>
</section>
</main>
<!--========================================================
FOOTER
=========================================================-->
<footer class="parallax" data-url="images/parallax02.jpg">
<div class="container">
<div class="row">
<div class="grid_4">
<address class="addr">
<span class="fa fa-map-marker" aria-hidden="true"></span>
<p>Service area TBD<br><span style="opacity:.85">Confirm coverage with T.R.B. Painting</span></p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-envelope-o" aria-hidden="true"></span>
<p>Email TBD</p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-mobile" aria-hidden="true"></span>
<p><a href="tel:+16306066776">(630) 606-6776</a></p>
</address>
</div>
</div>
<p class="copy">
T.R.B. Painting © <span id="copyright-year"></span>
<span>All Rights Reserved</span>
&nbsp;|&nbsp;
<a href="privacy.html">Privacy Policy</a>
</p>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</footer>
</div>
<script src="js/script.js"></script>
<script>
(function () {
function labelToggle() {
var t = document.querySelector('.rd-mobilepanel_toggle');
if (t && !t.getAttribute('aria-label')) t.setAttribute('aria-label', 'Open menu');
}
document.addEventListener('DOMContentLoaded', function () {
labelToggle();
setTimeout(labelToggle, 500);
setTimeout(labelToggle, 1500);
});
})();
</script>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,342 @@
/*========================================================
Contact Form
=========================================================*/
/* Contact Form Basic Styles
========================================================*/
#contact-form {
position: relative; }
#contact-form label {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
position: relative;
display: block;
letter-spacing: normal;
margin: 0 0 23px;
width: 100%;
text-align: left; }
#contact-form label.message {
max-width: 100%;
width: 100%;
margin: 40px 0 5px; }
#contact-form fieldset {
border: none; }
/* Contact Form Placeholder Styles
========================================================*/
#contact-form ._placeholder {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font: 400 18px "Quattrocento", serif;
line-height: 24px;
padding: 10px 17px 10px;
color: #343434;
width: 100% !important;
position: absolute;
left: 0;
top: 0;
display: block;
border-radius: 0;
cursor: text; }
#contact-form ._placeholder.focused {
opacity: 0.4; }
.lt-ie9 #contact-form ._placeholder.focused {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0.4)";
filter: alpha(opacity=40); }
#contact-form ._placeholder.hidden,
#contact-form .file ._placeholder {
display: none; }
/* Contact Form Input
========================================================*/
#contact-form input[type='text'] {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font: 400 18px "Quattrocento", serif;
line-height: 24px;
padding: 10px 17px 10px;
color: #343434;
background-color: #fff;
border: none;
border-bottom: 1px solid #a2a2a2;
width: 100%;
border-radius: 0;
outline: none;
-webkit-appearance: none;
height: 44px;
margin: 0; }
@media (min-width: 980px) {
#contact-form .input-wrap:before, #contact-form .input-wrap:after {
display: table;
content: "";
line-height: 0; }
#contact-form .input-wrap:after {
clear: both; }
#contact-form .input-wrap label {
width: 49%;
float: left; }
#contact-form .input-wrap label + label {
margin-left: 2%; } }
/* Contact Form Buttons
========================================================*/
#contact-form .btn {
padding-left: 55px;
padding-right: 55px; }
/* Contact Form Textarea
========================================================*/
#contact-form textarea {
display: block;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font: 400 18px "Quattrocento", serif;
line-height: 24px;
padding: 10px 17px 10px;
color: #343434;
background-color: #fff;
border: none;
border-bottom: 1px solid #a2a2a2;
width: 100%;
border-radius: 0;
outline: none;
-webkit-appearance: none;
border: 1px solid #a2a2a2;
resize: none;
height: 158px;
overflow: auto; }
/* Contact Form Error messages
========================================================*/
#contact-form .empty-message,
#contact-form .error-message {
-moz-transition: 0.3s ease-in height;
-o-transition: 0.3s ease-in height;
-webkit-transition: 0.3s ease-in height;
transition: 0.3s ease-in height;
position: absolute;
right: 3px;
top: 2px;
color: red;
height: 0;
overflow: hidden;
font-size: 11px;
z-index: 99; }
#contact-form .invalid .error-message,
#contact-form .empty .empty-message {
height: 14px;
line-height: 14px; }
/* Contact Form Processing Box
========================================================*/
#contact-form .contact-form-loader {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
z-index: -1;
overflow: hidden;
background: rgba(247, 247, 247, 0.48) url(data:image/gif;base64,R0lGODlhIAAKAIAAAP///////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAAACwAAAAAIAAKAAACD4yPqcvtD6OctNqLs94cFwAh+QQJCQAFACwAAAAAIAAKAILs7uz8+vz09vT08vT8/vz///8AAAAAAAADMVgx3FIwykmhADjjVzsdmjZ4ZASG2FiSJ6quXRu+8IemdXwDdB5dt54PsgA1BoThJAEAIfkECQkACAAsAAAAACAACgCDtLK03Nrc1NLUvL68/Pr81NbUxMLE/P78////AAAAAAAAAAAAAAAAAAAAAAAAAAAABDjwBGMGNeWgzbv/SACM5CiAKGiU5ZC+3MqOLvwOM22/8lzvqhzgB/TgcsQipyA0KD8HAe5o0Tw7EQAh+QQJCQAMACwAAAAAIAAKAIN0dnS8vrysrqyMioy0trSUkpT8+vy0srSMjoy8uryUlpT8/vz///8AAAAAAAAAAAAEPnAFVWpRZLHNu/9MAIzkeIAoqJQlkr5cwZIDDK8zUNupPA4/HS+Fm+2GnyLriOwkaKVT07M4FAbYQeFgmHoiACH5BAkJAAsALAAAAAAgAAoAg7SytNza3Ozu7NTS1Pz6/Ly+vPT29PTy9NTW1Pz+/MTCxP///wAAAAAAAAAAAAAAAARUMAWlClUorUWO/8YmjmIAnOg5LIbgvm5IkkqaFssBw8dM2yjcjucbFYAnnG4o6BU3NaSQ2XxCkQDhcud8HqULatWKwCoWCWq3mBgcvxYNy9P8yJ8RACH5BAkJAAsALAAAAAAgAAoAg7SytNza3Ozu7NTS1Pz6/Ly+vPT29PTy9NTW1Pz+/MTCxP///wAAAAAAAAAAAAAAAARUcJFDq1krBaUKV0iCjSRmCGiKXgHgvu5QzoeqHosCw8Vc1jYUTrdz9XwjYBBXKBqRyaAw5wQcoUobs3pFZm9UZ9d3kuIQVQV0NKlVDiLCoGmNXdYRACH5BAkJAAwALAAAAAAgAAoAg3R2dLy+vKyurIyKjLS2tJSSlPz6/LSytIyOjLy6vJSWlPz+/P///wAAAAAAAAAAAAQ+kMlJ2Qqq6KLIqmBIBUBploeoVsp5ImvMFK45yGtbAzcu0qVBkOcT6Wq9ImtHVFYStlPKSVkcCoPsoHAwxCIAIfkECQkACwAsAAAAACAACgCDtLK03Nrc7O7s1NLU/Pr8vL689Pb09PL01NbU/P78xMLE////AAAAAAAAAAAAAAAABFZwyUlXCkqVrFCSxCGORmUuAaCu6rAYQizHxEkpLFssxzwftgkup9r5fkFJgVjkHWPA5JBofAqiwWnO2DtibUtm1ZpcIJgAhcX6PSUGy/Dm8xJdr4dEBAAh+QQJCQALACwAAAAAIAAKAIO0srTc2tzs7uzU0tT8+vy8vrz09vT08vTU1tT8/vzEwsT///8AAAAAAAAAAAAAAAAEVXDJSSU5OBuZglLFpyBJZRpCqqZbALzwO5jVsa7HosRxQVO2Wyq34718P0lQmCsYj0mlcKh7ApDJ5a1pBUQXWlz1if2hpjmEVfFdXGyZQ4kwcF5liQgAIfkECQkADAAsAAAAACAACgCDdHZ0vL68rK6sjIqMtLa0lJKU/Pr8tLK0jI6MvLq8lJaU/P78////AAAAAAAAAAAABD6QyUmrZSuowosiyyVeAWCe5jGuk4KiBcsW7znIq1sDNy7SpkGQ5xPpar1i5fhKKicJG0rwrCwOhYF2UDgYIgAh+QQJCQAIACwAAAAAIAAKAIO0srTc2tzU0tS8vrz8+vzU1tTEwsT8/vz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAEOBDJSatFJxgztinHJV4BYJ6mMK6TgaIDy7qvGcvjUNv4SNe3nuVXE150u6BxUtgBDMvKQaBDdg4RACH5BAkJAAUALAAAAAAgAAoAguzu7Pz6/PT29PTy9Pz+/P///wAAAAAAAAMvWLrcrmHIKZ61Auitw/3LwHEDCIqjVpoXmq7s445w3MykLaeb7mS8mg8iAYgkhAQAOw==);
background-repeat: no-repeat;
background-position: 50% 50%; }
.lt-ie9 #contact-form .contact-form-loader {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0); }
#contact-form.processing .contact-form-loader {
-moz-transition: all 0.3s ease-in;
-o-transition: all 0.3s ease-in;
-webkit-transition: all 0.3s ease-in;
transition: all 0.3s ease-in;
opacity: 0.7;
z-index: 99; }
.lt-ie9 #contact-form.processing .contact-form-loader {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0.7)";
filter: alpha(opacity=70); }
/* Contact Form Modal
========================================================*/
.modal-open {
overflow: hidden; }
#contact-form .modal {
top: 0;
left: 0;
right: 0;
bottom: 0;
letter-spacing: normal;
display: none;
overflow: auto;
overflow-y: scroll;
position: fixed;
z-index: 1050;
-webkit-overflow-scrolling: touch;
outline: 0;
font-family: "Quattrocento", serif;
font-size: 13px;
color: #222; }
#contact-form .modal h4 {
font-weight: bold;
color: #000;
padding: 0;
margin: 0; }
.modal.fade .modal-dialog {
-moz-transition: transform 0.3s ease-out;
-o-transition: transform 0.3s ease-out;
-webkit-transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out;
-moz-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
-o-transform: translate(0, -25%);
-webkit-transform: translate(0, -25%);
transform: translate(0, -25%); }
.modal.in .modal-dialog {
-moz-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
-webkit-transform: translate(0, 0);
transform: translate(0, 0); }
.modal-content {
position: relative;
background-color: #ffffff;
border: 1px solid #999999;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
background-clip: padding-box;
outline: none; }
.modal-backdrop {
top: 0;
left: 0;
right: 0;
bottom: 0;
position: fixed;
z-index: 1040;
background-color: #000000; }
.modal-backdrop.fade {
opacity: 0; }
.lt-ie9 .modal-backdrop.fade {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0); }
.modal-backdrop.in {
opacity: 0.5; }
.lt-ie9 .modal-backdrop.in {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0.5)";
filter: alpha(opacity=50); }
.modal-header {
padding: 15px;
border-bottom: 1px solid #e5e5e5;
min-height: 16.42857143px; }
.modal-header .close {
margin-top: -2px; }
.modal-title {
margin: 0;
line-height: 1.42857143; }
.modal-body {
position: relative;
padding: 20px; }
.modal-dialog {
width: 600px;
margin: 66px auto 10px; }
@media only screen and (max-width: 768px) {
.modal-dialog {
position: relative;
width: auto;
margin-left: 10px;
margin-right: 10px; } }
/* Contact Form Close icon
========================================================*/
.close {
float: right;
font-size: 21px;
font-weight: bold;
line-height: 1;
color: #000000;
text-shadow: 0 1px 0 #ffffff;
opacity: 0.2;
filter: alpha(opacity=20); }
.close:hover,
.close:focus {
color: #000000;
text-decoration: none;
cursor: pointer;
opacity: 0.5;
filter: alpha(opacity=50); }
button.close {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none; }
/* Contact Form reCaptcha
========================================================*/
#contact-form label.recaptcha {
max-width: 100%;
text-align: right; }
#captchadiv {
display: inline-block;
text-align: left;
background: #FFF; }
.empty-message + #captchadiv {
border: 1px solid #DCDCDC;
padding-top: 16px; }
#recaptcha_table {
border: none !important; }
#recaptcha_table input[type="text"] {
background: #FFF;
border: 1px solid #CDCDCD !important;
color: #999; }
@media (max-width: 767px) {
#captchadiv {
display: block; }
#recaptcha_table {
width: 100%; }
#recaptcha_table tr:first-child td + td {
padding-right: 14px !important; }
#recaptcha_table tr:first-child td + td + td {
display: none; }
#recaptcha_image {
width: 358px !important; }
#recaptcha_response_field {
width: 360px !important; } }
@media (max-width: 479px) {
#recaptcha_image {
width: 208px !important; }
#recaptcha_response_field {
width: 210px !important; } }
@@ -0,0 +1,135 @@
/**
* Title: 36 Slim Icons Flaticon Pack
* Author: Fermam Aziz
* Source: http://www.flaticon.com/packs/36-slim-icons
* License: CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/)
*/
@font-face {
font-family: "fl-36-slim-icons";
src: url("../fonts/36-slim-icons.eot");
src: url("../fonts/36-slim-icons.eot#iefix") format("embedded-opentype"),
url("../fonts/36-slim-icons.woff") format("woff"),
url("../fonts/36-slim-icons.ttf") format("truetype"),
url("../fonts/36-slim-icons.svg") format("svg");
font-weight: normal;
font-style: normal;
}
.fl-36-slim-icons-ico,
[class^="fl-36-slim-icons-"]:before, [class*=" fl-36-slim-icons-"]:before,
[class^="fl-36-slim-icons-"]:after, [class*=" fl-36-slim-icons-"]:after {
font-family: "fl-36-slim-icons";
font-size: inherit;
font-weight: 400;
font-style: normal;
}
.fl-36-slim-icons-bird73:before {
content: "\e000";
}
.fl-36-slim-icons-bookmark38:before {
content: "\e001";
}
.fl-36-slim-icons-calculator63:before {
content: "\e002";
}
.fl-36-slim-icons-calendar148:before {
content: "\e003";
}
.fl-36-slim-icons-circles21:before {
content: "\e004";
}
.fl-36-slim-icons-circular242:before {
content: "\e005";
}
.fl-36-slim-icons-clock91:before {
content: "\e006";
}
.fl-36-slim-icons-cloud288:before {
content: "\e007";
}
.fl-36-slim-icons-cogwheel25:before {
content: "\e008";
}
.fl-36-slim-icons-download155:before {
content: "\e009";
}
.fl-36-slim-icons-email90:before {
content: "\e00a";
}
.fl-36-slim-icons-file77:before {
content: "\e00b";
}
.fl-36-slim-icons-global32:before {
content: "\e00c";
}
.fl-36-slim-icons-happy49:before {
content: "\e00d";
}
.fl-36-slim-icons-house130:before {
content: "\e00e";
}
.fl-36-slim-icons-image77:before {
content: "\e00f";
}
.fl-36-slim-icons-laptop111:before {
content: "\e010";
}
.fl-36-slim-icons-like67:before {
content: "\e011";
}
.fl-36-slim-icons-like68:before {
content: "\e012";
}
.fl-36-slim-icons-monitor79:before {
content: "\e013";
}
.fl-36-slim-icons-musical110:before {
content: "\e014";
}
.fl-36-slim-icons-pencil98:before {
content: "\e015";
}
.fl-36-slim-icons-phone358:before {
content: "\e016";
}
.fl-36-slim-icons-photo193:before {
content: "\e017";
}
.fl-36-slim-icons-placeholder27:before {
content: "\e018";
}
.fl-36-slim-icons-play90:before {
content: "\e019";
}
.fl-36-slim-icons-rss49:before {
content: "\e01a";
}
.fl-36-slim-icons-search89:before {
content: "\e01b";
}
.fl-36-slim-icons-share31:before {
content: "\e01c";
}
.fl-36-slim-icons-shopping223:before {
content: "\e01d";
}
.fl-36-slim-icons-speech105:before {
content: "\e01e";
}
.fl-36-slim-icons-star165:before {
content: "\e01f";
}
.fl-36-slim-icons-tag65:before {
content: "\e020";
}
.fl-36-slim-icons-user152:before {
content: "\e021";
}
.fl-36-slim-icons-video166:before {
content: "\e022";
}
.fl-36-slim-icons-wifi76:before {
content: "\e023";
}
@@ -0,0 +1,687 @@
/**
* Title: Bigmug Line Flaticon Pack
* Author: Catalin Fertu
* Source: http://www.flaticon.com/packs/bigmug-line
* License: CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/)
*/
@font-face {
font-family: "fl-bigmug-line";
src: url("../fonts/fl-bigmug-line.eot");
src: url("../fonts/fl-bigmug-line.eot#iefix") format("embedded-opentype"),
url("../fonts/fl-bigmug-line.woff") format("woff"),
url("../fonts/fl-bigmug-line.ttf") format("truetype"),
url("../fonts/fl-bigmug-line.svg") format("svg");
font-weight: normal;
font-style: normal;
}
.fl-bigmug-line-ico,
[class^="fl-bigmug-line-"]:before, [class*=" fl-bigmug-line-"]:before,
[class^="fl-bigmug-line-"]:after, [class*=" fl-bigmug-line-"]:after {
font-family: 'fl-bigmug-line';
font-size: inherit;
font-weight: 400;
font-style: normal;
}
.fl-bigmug-line-add137:before {
content: "\e000";
}
.fl-bigmug-line-add139:before {
content: "\e001";
}
.fl-bigmug-line-add149:before {
content: "\e002";
}
.fl-bigmug-line-airplane86:before {
content: "\e003";
}
.fl-bigmug-line-alarm31:before {
content: "\e004";
}
.fl-bigmug-line-arrow592:before {
content: "\e005";
}
.fl-bigmug-line-attach8:before {
content: "\e006";
}
.fl-bigmug-line-attachment15:before {
content: "\e007";
}
.fl-bigmug-line-audio46:before {
content: "\e008";
}
.fl-bigmug-line-back44:before {
content: "\e009";
}
.fl-bigmug-line-back46:before {
content: "\e00a";
}
.fl-bigmug-line-big104:before {
content: "\e00b";
}
.fl-bigmug-line-book188:before {
content: "\e00c";
}
.fl-bigmug-line-bookmark28:before {
content: "\e00d";
}
.fl-bigmug-line-bottle34:before {
content: "\e00e";
}
.fl-bigmug-line-button5:before {
content: "\e00f";
}
.fl-bigmug-line-buttons5:before {
content: "\e010";
}
.fl-bigmug-line-cellphone55:before {
content: "\e011";
}
.fl-bigmug-line-cellular9:before {
content: "\e012";
}
.fl-bigmug-line-center10:before {
content: "\e013";
}
.fl-bigmug-line-chat51:before {
content: "\e014";
}
.fl-bigmug-line-chat55:before {
content: "\e015";
}
.fl-bigmug-line-checkmark14:before {
content: "\e016";
}
.fl-bigmug-line-checkmark15:before {
content: "\e017";
}
.fl-bigmug-line-checkmark16:before {
content: "\e018";
}
.fl-bigmug-line-circular220:before {
content: "\e019";
}
.fl-bigmug-line-circular224:before {
content: "\e01a";
}
.fl-bigmug-line-circular228:before {
content: "\e01b";
}
.fl-bigmug-line-circular229:before {
content: "\e01c";
}
.fl-bigmug-line-clipboard68:before {
content: "\e01d";
}
.fl-bigmug-line-close42:before {
content: "\e01e";
}
.fl-bigmug-line-cloud255:before {
content: "\e01f";
}
.fl-bigmug-line-cloud260:before {
content: "\e020";
}
.fl-bigmug-line-cocktail26:before {
content: "\e021";
}
.fl-bigmug-line-code30:before {
content: "\e022";
}
.fl-bigmug-line-collapse5:before {
content: "\e023";
}
.fl-bigmug-line-comment45:before {
content: "\e024";
}
.fl-bigmug-line-compass80:before {
content: "\e025";
}
.fl-bigmug-line-contract5:before {
content: "\e026";
}
.fl-bigmug-line-copy23:before {
content: "\e027";
}
.fl-bigmug-line-crescent23:before {
content: "\e028";
}
.fl-bigmug-line-cropping1:before {
content: "\e029";
}
.fl-bigmug-line-cross81:before {
content: "\e02a";
}
.fl-bigmug-line-cross83:before {
content: "\e02b";
}
.fl-bigmug-line-cube29:before {
content: "\e02c";
}
.fl-bigmug-line-double97:before {
content: "\e02d";
}
.fl-bigmug-line-double98:before {
content: "\e02e";
}
.fl-bigmug-line-double99:before {
content: "\e02f";
}
.fl-bigmug-line-down55:before {
content: "\e030";
}
.fl-bigmug-line-down56:before {
content: "\e031";
}
.fl-bigmug-line-down58:before {
content: "\e032";
}
.fl-bigmug-line-down59:before {
content: "\e033";
}
.fl-bigmug-line-down64:before {
content: "\e034";
}
.fl-bigmug-line-download136:before {
content: "\e035";
}
.fl-bigmug-line-download142:before {
content: "\e036";
}
.fl-bigmug-line-download146:before {
content: "\e037";
}
.fl-bigmug-line-download147:before {
content: "\e038";
}
.fl-bigmug-line-download148:before {
content: "\e039";
}
.fl-bigmug-line-electrical17:before {
content: "\e03a";
}
.fl-bigmug-line-electronic57:before {
content: "\e03b";
}
.fl-bigmug-line-email64:before {
content: "\e03c";
}
.fl-bigmug-line-email67:before {
content: "\e03d";
}
.fl-bigmug-line-equalization3:before {
content: "\e03e";
}
.fl-bigmug-line-equalizer26:before {
content: "\e03f";
}
.fl-bigmug-line-event6:before {
content: "\e040";
}
.fl-bigmug-line-expand25:before {
content: "\e041";
}
.fl-bigmug-line-expanding2:before {
content: "\e042";
}
.fl-bigmug-line-fast33:before {
content: "\e043";
}
.fl-bigmug-line-favourites5:before {
content: "\e044";
}
.fl-bigmug-line-file68:before {
content: "\e045";
}
.fl-bigmug-line-file69:before {
content: "\e046";
}
.fl-bigmug-line-film57:before {
content: "\e047";
}
.fl-bigmug-line-flag53:before {
content: "\e048";
}
.fl-bigmug-line-fog10:before {
content: "\e049";
}
.fl-bigmug-line-foggy3:before {
content: "\e04a";
}
.fl-bigmug-line-folder173:before {
content: "\e04b";
}
.fl-bigmug-line-fork34:before {
content: "\e04c";
}
.fl-bigmug-line-four87:before {
content: "\e04d";
}
.fl-bigmug-line-full40:before {
content: "\e04e";
}
.fl-bigmug-line-games32:before {
content: "\e04f";
}
.fl-bigmug-line-gear30:before {
content: "\e050";
}
.fl-bigmug-line-giftbox54:before {
content: "\e051";
}
.fl-bigmug-line-graphical8:before {
content: "\e052";
}
.fl-bigmug-line-headphones32:before {
content: "\e053";
}
.fl-bigmug-line-hot67:before {
content: "\e054";
}
.fl-bigmug-line-images21:before {
content: "\e055";
}
.fl-bigmug-line-ink12:before {
content: "\e056";
}
.fl-bigmug-line-label25:before {
content: "\e057";
}
.fl-bigmug-line-left144:before {
content: "\e058";
}
.fl-bigmug-line-left145:before {
content: "\e059";
}
.fl-bigmug-line-left146:before {
content: "\e05a";
}
.fl-bigmug-line-left148:before {
content: "\e05b";
}
.fl-bigmug-line-left152:before {
content: "\e05c";
}
.fl-bigmug-line-left153:before {
content: "\e05d";
}
.fl-bigmug-line-left158:before {
content: "\e05e";
}
.fl-bigmug-line-left159:before {
content: "\e05f";
}
.fl-bigmug-line-like51:before {
content: "\e060";
}
.fl-bigmug-line-link52:before {
content: "\e061";
}
.fl-bigmug-line-list63:before {
content: "\e062";
}
.fl-bigmug-line-list65:before {
content: "\e063";
}
.fl-bigmug-line-lock64:before {
content: "\e064";
}
.fl-bigmug-line-login12:before {
content: "\e065";
}
.fl-bigmug-line-login9:before {
content: "\e066";
}
.fl-bigmug-line-map87:before {
content: "\e067";
}
.fl-bigmug-line-megaphone11:before {
content: "\e068";
}
.fl-bigmug-line-men25:before {
content: "\e069";
}
.fl-bigmug-line-menu40:before {
content: "\e06a";
}
.fl-bigmug-line-menu41:before {
content: "\e06b";
}
.fl-bigmug-line-microphone76:before {
content: "\e06c";
}
.fl-bigmug-line-microphone77:before {
content: "\e06d";
}
.fl-bigmug-line-minus79:before {
content: "\e06e";
}
.fl-bigmug-line-minus80:before {
content: "\e06f";
}
.fl-bigmug-line-minus83:before {
content: "\e070";
}
.fl-bigmug-line-minus86:before {
content: "\e071";
}
.fl-bigmug-line-monitor74:before {
content: "\e072";
}
.fl-bigmug-line-music218:before {
content: "\e073";
}
.fl-bigmug-line-music219:before {
content: "\e074";
}
.fl-bigmug-line-music221:before {
content: "\e075";
}
.fl-bigmug-line-musical100:before {
content: "\e076";
}
.fl-bigmug-line-musical98:before {
content: "\e077";
}
.fl-bigmug-line-mute34:before {
content: "\e078";
}
.fl-bigmug-line-new83:before {
content: "\e079";
}
.fl-bigmug-line-nine16:before {
content: "\e07a";
}
.fl-bigmug-line-note35:before {
content: "\e07b";
}
.fl-bigmug-line-notebook41:before {
content: "\e07c";
}
.fl-bigmug-line-notification4:before {
content: "\e07d";
}
.fl-bigmug-line-notification5:before {
content: "\e07e";
}
.fl-bigmug-line-opened25:before {
content: "\e07f";
}
.fl-bigmug-line-oval34:before {
content: "\e080";
}
.fl-bigmug-line-paintbrush9:before {
content: "\e081";
}
.fl-bigmug-line-paper122:before {
content: "\e082";
}
.fl-bigmug-line-pause37:before {
content: "\e083";
}
.fl-bigmug-line-pencil85:before {
content: "\e084";
}
.fl-bigmug-line-phone351:before {
content: "\e085";
}
.fl-bigmug-line-photo181:before {
content: "\e086";
}
.fl-bigmug-line-pin42:before {
content: "\e087";
}
.fl-bigmug-line-planetary2:before {
content: "\e088";
}
.fl-bigmug-line-play83:before {
content: "\e089";
}
.fl-bigmug-line-portfolio23:before {
content: "\e08a";
}
.fl-bigmug-line-print34:before {
content: "\e08b";
}
.fl-bigmug-line-radio46:before {
content: "\e08c";
}
.fl-bigmug-line-rain30:before {
content: "\e08d";
}
.fl-bigmug-line-rectangular78:before {
content: "\e08e";
}
.fl-bigmug-line-recycling10:before {
content: "\e08f";
}
.fl-bigmug-line-rewind37:before {
content: "\e090";
}
.fl-bigmug-line-right139:before {
content: "\e091";
}
.fl-bigmug-line-right141:before {
content: "\e092";
}
.fl-bigmug-line-right142:before {
content: "\e093";
}
.fl-bigmug-line-right144:before {
content: "\e094";
}
.fl-bigmug-line-right148:before {
content: "\e095";
}
.fl-bigmug-line-right153:before {
content: "\e096";
}
.fl-bigmug-line-right154:before {
content: "\e097";
}
.fl-bigmug-line-right156:before {
content: "\e098";
}
.fl-bigmug-line-rounded51:before {
content: "\e099";
}
.fl-bigmug-line-sand14:before {
content: "\e09a";
}
.fl-bigmug-line-save15:before {
content: "\e09b";
}
.fl-bigmug-line-search74:before {
content: "\e09c";
}
.fl-bigmug-line-search78:before {
content: "\e09d";
}
.fl-bigmug-line-share27:before {
content: "\e09e";
}
.fl-bigmug-line-shopping198:before {
content: "\e09f";
}
.fl-bigmug-line-shopping199:before {
content: "\e0a0";
}
.fl-bigmug-line-shopping202:before {
content: "\e0a1";
}
.fl-bigmug-line-shopping204:before {
content: "\e0a2";
}
.fl-bigmug-line-shuffle17:before {
content: "\e0a3";
}
.fl-bigmug-line-sort47:before {
content: "\e0a4";
}
.fl-bigmug-line-sort48:before {
content: "\e0a5";
}
.fl-bigmug-line-speaker75:before {
content: "\e0a6";
}
.fl-bigmug-line-speaker80:before {
content: "\e0a7";
}
.fl-bigmug-line-speaker81:before {
content: "\e0a8";
}
.fl-bigmug-line-speaker86:before {
content: "\e0a9";
}
.fl-bigmug-line-speaker87:before {
content: "\e0aa";
}
.fl-bigmug-line-speech96:before {
content: "\e0ab";
}
.fl-bigmug-line-square152:before {
content: "\e0ac";
}
.fl-bigmug-line-square156:before {
content: "\e0ad";
}
.fl-bigmug-line-square160:before {
content: "\e0ae";
}
.fl-bigmug-line-store10:before {
content: "\e0af";
}
.fl-bigmug-line-sun81:before {
content: "\e0b0";
}
.fl-bigmug-line-sunrise3:before {
content: "\e0b1";
}
.fl-bigmug-line-switch23:before {
content: "\e0b2";
}
.fl-bigmug-line-switch24:before {
content: "\e0b3";
}
.fl-bigmug-line-tag47:before {
content: "\e0b4";
}
.fl-bigmug-line-television20:before {
content: "\e0b5";
}
.fl-bigmug-line-text108:before {
content: "\e0b6";
}
.fl-bigmug-line-text109:before {
content: "\e0b7";
}
.fl-bigmug-line-three142:before {
content: "\e0b8";
}
.fl-bigmug-line-timer35:before {
content: "\e0b9";
}
.fl-bigmug-line-tool16:before {
content: "\e0ba";
}
.fl-bigmug-line-triangle33:before {
content: "\e0bb";
}
.fl-bigmug-line-trophy55:before {
content: "\e0bc";
}
.fl-bigmug-line-two311:before {
content: "\e0bd";
}
.fl-bigmug-line-two316:before {
content: "\e0be";
}
.fl-bigmug-line-two317:before {
content: "\e0bf";
}
.fl-bigmug-line-two319:before {
content: "\e0c0";
}
.fl-bigmug-line-two323:before {
content: "\e0c1";
}
.fl-bigmug-line-unlocked27:before {
content: "\e0c2";
}
.fl-bigmug-line-up100:before {
content: "\e0c3";
}
.fl-bigmug-line-up102:before {
content: "\e0c4";
}
.fl-bigmug-line-up103:before {
content: "\e0c5";
}
.fl-bigmug-line-up104:before {
content: "\e0c6";
}
.fl-bigmug-line-up107:before {
content: "\e0c7";
}
.fl-bigmug-line-up111:before {
content: "\e0c8";
}
.fl-bigmug-line-up112:before {
content: "\e0c9";
}
.fl-bigmug-line-up114:before {
content: "\e0ca";
}
.fl-bigmug-line-up98:before {
content: "\e0cb";
}
.fl-bigmug-line-up99:before {
content: "\e0cc";
}
.fl-bigmug-line-upload91:before {
content: "\e0cd";
}
.fl-bigmug-line-upload92:before {
content: "\e0ce";
}
.fl-bigmug-line-upper8:before {
content: "\e0cf";
}
.fl-bigmug-line-user143:before {
content: "\e0d0";
}
.fl-bigmug-line-user144:before {
content: "\e0d1";
}
.fl-bigmug-line-video163:before {
content: "\e0d2";
}
.fl-bigmug-line-wallet26:before {
content: "\e0d3";
}
.fl-bigmug-line-weather21:before {
content: "\e0d4";
}
.fl-bigmug-line-weekly14:before {
content: "\e0d5";
}
.fl-bigmug-line-weekly15:before {
content: "\e0d6";
}
.fl-bigmug-line-wind24:before {
content: "\e0d7";
}
.fl-bigmug-line-window50:before {
content: "\e0d8";
}
.fl-bigmug-line-winds4:before {
content: "\e0d9";
}
.fl-bigmug-line-wrench66:before {
content: "\e0da";
}
.fl-bigmug-line-zoom60:before {
content: "\e0db";
}
@@ -0,0 +1,13 @@
/*================== GOOGLE MAP ======================*/
.map_model {
height: 490px; }
.map_model img {
max-width: none !important; }
@media (max-width: 767px) {
.map_model {
height: 250px; } }
@media (max-width: 479px) {
.map_model {
height: 200px; } }
.map_locations {
display: none; }
+354
View File
@@ -0,0 +1,354 @@
/*==========================================================
NORMALIZE
==========================================================*/
html, body, div, span, applet, object, 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, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: top; }
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block; }
body {
line-height: 1; }
ol, ul {
list-style: none; }
blockquote, q {
quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none; }
table {
border-collapse: collapse;
border-spacing: 0; }
button,
input[type='button'] {
background: none;
border: none;
display: inline-block;
margin: 0;
padding: 0;
outline: none;
outline-offset: 0;
overflow: visible;
cursor: pointer;
-webkit-appearance: none; }
button::-moz-focus-inner,
input[type='button']::-moz-focus-inner {
border: none;
padding: 0; }
.container, .container-fluid {
margin-right: auto;
margin-left: auto;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box; }
/*=============== Fluid grid ====================*/
.container-fluid [class*="grid_"] {
float: left;
width: 8.33333%;
min-height: 1px; }
.container-fluid .grid_1 {
width: 8.33333%; }
.container-fluid .grid_2 {
width: 16.66667%; }
.container-fluid .grid_3 {
width: 25%; }
.container-fluid .grid_4 {
width: 33.33333%; }
.container-fluid .grid_5 {
width: 41.66667%; }
.container-fluid .grid_6 {
width: 50%; }
.container-fluid .grid_7 {
width: 58.33333%; }
.container-fluid .grid_8 {
width: 66.66667%; }
.container-fluid .grid_9 {
width: 75%; }
.container-fluid .grid_10 {
width: 83.33333%; }
.container-fluid .grid_11 {
width: 91.66667%; }
.container-fluid .grid_12 {
width: 100%; }
.container-fluid .preffix_1 {
margin-left: 70px; }
.container-fluid .preffix_2 {
margin-left: 140px; }
.container-fluid .preffix_3 {
margin-left: 210px; }
.container-fluid .preffix_4 {
margin-left: 280px; }
.container-fluid .preffix_5 {
margin-left: 350px; }
.container-fluid .preffix_6 {
margin-left: 420px; }
.container-fluid .preffix_7 {
margin-left: 490px; }
.container-fluid .preffix_8 {
margin-left: 560px; }
.container-fluid .preffix_9 {
margin-left: 630px; }
.container-fluid .preffix_10 {
margin-left: 700px; }
.container-fluid .preffix_11 {
margin-left: 770px; }
.container-fluid .preffix_12 {
margin-left: 840px; }
.container, .container-fluid {
width: 1170px; }
.container .row {
margin-left: -30px; }
.container [class*="grid_"] {
float: left;
min-height: 1px;
margin-left: 30px; }
.container .grid_1 {
width: 70px; }
.container .grid_2 {
width: 170px; }
.container .grid_3 {
width: 270px; }
.container .grid_4 {
width: 370px; }
.container .grid_5 {
width: 470px; }
.container .grid_6 {
width: 570px; }
.container .grid_7 {
width: 670px; }
.container .grid_8 {
width: 770px; }
.container .grid_9 {
width: 870px; }
.container .grid_10 {
width: 970px; }
.container .grid_11 {
width: 1070px; }
.container .grid_12 {
width: 1170px; }
.container .preffix_1 {
margin-left: 130px; }
.container .preffix_2 {
margin-left: 230px; }
.container .preffix_3 {
margin-left: 330px; }
.container .preffix_4 {
margin-left: 430px; }
.container .preffix_5 {
margin-left: 530px; }
.container .preffix_6 {
margin-left: 630px; }
.container .preffix_7 {
margin-left: 730px; }
.container .preffix_8 {
margin-left: 830px; }
.container .preffix_9 {
margin-left: 930px; }
.container .preffix_10 {
margin-left: 1030px; }
.container .preffix_11 {
margin-left: 1130px; }
.container .preffix_12 {
margin-left: 1230px; }
@media (min-width: 980px) and (max-width: 1199px) {
.container, .container-fluid {
width: 940px; }
.container .row {
margin-left: -20px; }
.container [class*="grid_"] {
float: left;
min-height: 1px;
margin-left: 20px; }
.container .grid_1 {
width: 60px; }
.container .grid_2 {
width: 140px; }
.container .grid_3 {
width: 220px; }
.container .grid_4 {
width: 300px; }
.container .grid_5 {
width: 380px; }
.container .grid_6 {
width: 460px; }
.container .grid_7 {
width: 540px; }
.container .grid_8 {
width: 620px; }
.container .grid_9 {
width: 700px; }
.container .grid_10 {
width: 780px; }
.container .grid_11 {
width: 860px; }
.container .grid_12 {
width: 940px; }
.container .preffix_1 {
margin-left: 100px; }
.container .preffix_2 {
margin-left: 180px; }
.container .preffix_3 {
margin-left: 260px; }
.container .preffix_4 {
margin-left: 340px; }
.container .preffix_5 {
margin-left: 420px; }
.container .preffix_6 {
margin-left: 500px; }
.container .preffix_7 {
margin-left: 580px; }
.container .preffix_8 {
margin-left: 660px; }
.container .preffix_9 {
margin-left: 740px; }
.container .preffix_10 {
margin-left: 820px; }
.container .preffix_11 {
margin-left: 900px; }
.container .preffix_12 {
margin-left: 980px; } }
@media (min-width: 768px) and (max-width: 979px) {
.container, .container-fluid {
width: 748px; }
.container .row {
margin-left: -20px; }
.container [class*="grid_"] {
float: left;
min-height: 1px;
margin-left: 20px; }
.container .grid_1 {
width: 44px; }
.container .grid_2 {
width: 108px; }
.container .grid_3 {
width: 172px; }
.container .grid_4 {
width: 236px; }
.container .grid_5 {
width: 300px; }
.container .grid_6 {
width: 364px; }
.container .grid_7 {
width: 428px; }
.container .grid_8 {
width: 492px; }
.container .grid_9 {
width: 556px; }
.container .grid_10 {
width: 620px; }
.container .grid_11 {
width: 684px; }
.container .grid_12 {
width: 748px; }
.container .preffix_1 {
margin-left: 84px; }
.container .preffix_2 {
margin-left: 148px; }
.container .preffix_3 {
margin-left: 212px; }
.container .preffix_4 {
margin-left: 276px; }
.container .preffix_5 {
margin-left: 340px; }
.container .preffix_6 {
margin-left: 404px; }
.container .preffix_7 {
margin-left: 468px; }
.container .preffix_8 {
margin-left: 532px; }
.container .preffix_9 {
margin-left: 596px; }
.container .preffix_10 {
margin-left: 660px; }
.container .preffix_11 {
margin-left: 724px; }
.container .preffix_12 {
margin-left: 788px; } }
@media (max-width: 767px) {
.container, .container-fluid {
width: 420px;
padding: 0; }
.container .row {
margin-left: 0; }
.row + .row,
[class*="grid_"] + [class*="grid_"] {
margin-top: 30px; }
.container [class*="grid_"], .container-fluid [class*="grid_"] {
float: none;
display: block;
width: 100%;
margin-left: 0; } }
@media (max-width: 479px) {
body {
padding: 0; }
.container, .container-fluid {
width: 300px;
padding: 0 15px; }
.row {
margin-left: 0; } }
.container:before, .container-fluid:before, .row:before, .container:after, .container-fluid:after, .row:after {
display: table;
content: "";
line-height: 0; }
.container:after, .container-fluid:after, .row:after {
clear: both; }
+274
View File
@@ -0,0 +1,274 @@
/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
.fancybox-wrap,
.fancybox-skin,
.fancybox-outer,
.fancybox-inner,
.fancybox-image,
.fancybox-wrap iframe,
.fancybox-wrap object,
.fancybox-nav,
.fancybox-nav span,
.fancybox-tmp
{
padding: 0;
margin: 0;
border: 0;
outline: none;
vertical-align: top;
}
.fancybox-wrap {
position: absolute;
top: 0;
left: 0;
z-index: 8020;
}
.fancybox-skin {
position: relative;
background: #f9f9f9;
color: #444;
text-shadow: none;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.fancybox-opened {
z-index: 8030;
}
.fancybox-opened .fancybox-skin {
-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
}
.fancybox-outer, .fancybox-inner {
position: relative;
}
.fancybox-inner {
overflow: hidden;
}
.fancybox-type-iframe .fancybox-inner {
-webkit-overflow-scrolling: touch;
}
.fancybox-error {
color: #444;
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
margin: 0;
padding: 15px;
white-space: nowrap;
}
.fancybox-image, .fancybox-iframe {
display: block;
width: 100%;
height: 100%;
}
.fancybox-image {
max-width: 100%;
max-height: 100%;
}
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
background-image: url('../images/fancybox_sprite.png');
}
#fancybox-loading {
position: fixed;
top: 50%;
left: 50%;
margin-top: -22px;
margin-left: -22px;
background-position: 0 -108px;
opacity: 0.8;
cursor: pointer;
z-index: 8060;
}
#fancybox-loading div {
width: 44px;
height: 44px;
background: url('../images/fancybox_loading.gif') center center no-repeat;
}
.fancybox-close {
position: absolute;
top: -18px;
right: -18px;
width: 36px;
height: 36px;
cursor: pointer;
z-index: 8040;
}
.fancybox-nav {
position: absolute;
top: 0;
width: 40%;
height: 100%;
cursor: pointer;
text-decoration: none;
background: transparent url('../images/blank.gif'); /* helps IE */
-webkit-tap-highlight-color: rgba(0,0,0,0);
z-index: 8040;
}
.fancybox-prev {
left: 0;
}
.fancybox-next {
right: 0;
}
.fancybox-nav span {
position: absolute;
top: 50%;
width: 36px;
height: 34px;
margin-top: -18px;
cursor: pointer;
z-index: 8040;
visibility: hidden;
}
.fancybox-prev span {
left: 10px;
background-position: 0 -36px;
}
.fancybox-next span {
right: 10px;
background-position: 0 -72px;
}
.fancybox-nav:hover span {
visibility: visible;
}
.fancybox-tmp {
position: absolute;
top: -99999px;
left: -99999px;
visibility: hidden;
max-width: 99999px;
max-height: 99999px;
overflow: visible !important;
}
/* Overlay helper */
.fancybox-lock {
overflow: hidden !important;
width: auto;
}
.fancybox-lock body {
overflow: hidden !important;
}
.fancybox-lock-test {
overflow-y: hidden !important;
}
.fancybox-overlay {
position: absolute;
top: 0;
left: 0;
overflow: hidden;
display: none;
z-index: 8010;
background: url('../images/fancybox_overlay.png');
}
.fancybox-overlay-fixed {
position: fixed;
bottom: 0;
right: 0;
}
.fancybox-lock .fancybox-overlay {
overflow: auto;
overflow-y: scroll;
}
/* Title helper */
.fancybox-title {
visibility: hidden;
font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
position: relative;
text-shadow: none;
z-index: 8050;
}
.fancybox-opened .fancybox-title {
visibility: visible;
}
.fancybox-title-float-wrap {
position: absolute;
bottom: 0;
right: 50%;
margin-bottom: -35px;
z-index: 8050;
text-align: center;
}
.fancybox-title-float-wrap .child {
display: inline-block;
margin-right: -100%;
padding: 2px 20px;
background: transparent; /* Fallback for web browsers that doesn't support RGBa */
background: rgba(0, 0, 0, 0.8);
-webkit-border-radius: 15px;
-moz-border-radius: 15px;
border-radius: 15px;
text-shadow: 0 1px 2px #222;
color: #FFF;
font-weight: bold;
line-height: 24px;
white-space: nowrap;
}
.fancybox-title-outside-wrap {
position: relative;
margin-top: 10px;
color: #fff;
}
.fancybox-title-inside-wrap {
padding-top: 10px;
}
.fancybox-title-over-wrap {
position: absolute;
bottom: 0;
left: 0;
color: #fff;
padding: 10px;
background: #000;
background: rgba(0, 0, 0, .8);
}
/*Retina graphics!*/
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5){
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
background-image: url('../images/fancybox_sprite@2x.png');
background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
}
#fancybox-loading div {
background-image: url('../images/fancybox_loading@2x.gif');
background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
}
}
+974
View File
@@ -0,0 +1,974 @@
@charset "UTF-8";
@import url(animate.css);
@import url(//fonts.googleapis.com/css?family=Quattrocento:400,700|Raleway:400,700,800);
@import url(//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css);
/*========================================================
Main Styles
=========================================================*/
body {
background: #fff;
color: #3f4853;
font: 400 18px/36px "Quattrocento", serif;
-webkit-text-size-adjust: none;
text-align: center; }
img {
max-width: 100%;
height: auto; }
h1 {
font-family: 'Raleway', sans-serif;
font-size: 30px;
line-height: 40px;
font-weight: 800;
text-transform: uppercase;
color: #fff;
letter-spacing: 1px; }
h2 {
font-family: 'Raleway', sans-serif;
font-size: 42px;
line-height: 50px;
font-weight: 700;
text-transform: uppercase;
position: relative;
color: #fff;
letter-spacing: 1px; }
h2:after {
content: '';
display: block;
margin: 10px auto 0;
width: 170px;
height: 1px;
background: #fff; }
@media (max-width: 767px) {
h2 {
font-size: 35px; } }
h3 {
font-family: 'Raleway', sans-serif;
font-size: 18px;
line-height: 30px;
font-weight: 700;
text-transform: uppercase;
position: relative;
color: #343434;
letter-spacing: .7px; }
h3:after {
content: '';
display: block;
margin: 25px auto 0;
width: 170px;
height: 1px;
background: #5d5d5d; }
h4 {
font-family: 'Raleway', sans-serif;
font-size: 24px;
line-height: 34px;
font-weight: 700;
letter-spacing: 1px;
color: #c2410c; }
h5 {
font-family: 'Raleway', sans-serif;
font-size: 24px;
line-height: 34px;
font-weight: 700;
letter-spacing: 1px; }
h6 {
color: #c2410c; }
h2 a:hover, h3 a:hover, h5 a:hover {
color: #c2410c; }
h4 a:hover, h6 a:hover {
color: #3f4853; }
p a:hover, .marked-list a:hover, .inline-list a:hover {
text-decoration: underline; }
p .fa, .marked-list .fa, .inline-list .fa {
text-decoration: none; }
time {
display: block; }
a {
font: inherit;
color: inherit;
text-decoration: none;
-moz-transition: 0.3s;
-o-transition: 0.3s;
-webkit-transition: 0.3s;
transition: 0.3s; }
a:focus {
outline: none; }
a:active {
background-color: transparent; }
a[href^="tel:"],
a[href^="callto:"] {
color: inherit;
text-decoration: none; }
strong {
font-weight: 700; }
.fa {
line-height: inherit; }
[class*='fa-']:before {
font-weight: 400;
font-family: "FontAwesome"; }
.page {
overflow: hidden;
min-height: 500px; }
.lt-ie9 .page {
min-width: 1200px; }
/*=======================================================
Main Layout
=========================================================*/
h2 + * {
margin-top: 20px; }
* + h4 {
margin-top: 20px; }
h4 + * {
margin-top: 13px; }
* + h5 {
margin-top: 30px; }
h5 + * {
margin-top: 10px; }
* + .btn, * + .btn2 {
margin-top: 45px; }
* + h6 {
margin-top: 10px; }
.row + .row {
margin-top: 25px; }
h3 + * {
margin-top: 50px; }
/*=======================================================
Components
=========================================================*/
/*================== Brand ======================*/
.brand {
display: inline-block; }
.brand_name {
overflow: hidden; }
/*================== Backgrounds ======================*/
.bg1 {
background: no-repeat url(../images/bg1.jpg) 0 0;
background-size: cover; }
.bg2 {
background: no-repeat url(../images/bg2.jpg) 0 0;
background-size: cover; }
.bg3 {
background: #c2410c;
color: #fff;
position: relative;
overflow: hidden; }
.bg3 h2, .bg3 h3, .bg3 h4, .bg3 h5, .bg3 h6 {
color: #fff; }
.bg3 h2:after, .bg3 h3:after, .bg3 h4:after, .bg3 h5:after, .bg3 h6:after {
background: #fff; }
.bg3 h2 a:hover, .bg3 h3 a:hover, .bg3 h4 a:hover, .bg3 h5 a:hover, .bg3 h6 a:hover {
color: #3f4853; }
.bg3 .container {
position: relative; }
.bg-img1 {
display: none; }
@media (min-width: 1540px) {
.bg-img1 {
display: block;
position: absolute;
right: 50%;
margin-right: 360px;
top: 0;
height: 100%; } }
.bg-img2 {
display: none; }
@media (min-width: 1540px) {
.bg-img2 {
display: block;
position: absolute;
right: 50%;
margin-right: 5px;
top: 0;
height: 100%; } }
/*================== Icons ======================*/
.fl-bigmug-line {
font-size: 90px;
line-height: 100px;
color: #c2410c; }
/*================== Buttons ======================*/
.btn, .btn2 {
display: inline-block;
border: 1px solid #c2410c;
font-family: 'Raleway', sans-serif;
font-size: 14px;
line-height: 30px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .7px;
border-radius: 3px;
padding: 8px 40px;
color: #c2410c;
text-align: center; }
.btn:hover, .btn2:hover {
background: #c2410c;
color: #fff; }
.btn:active, .btn2:active {
background: #c55f02; }
.btn2 {
border-color: #fff;
color: #fff; }
.btn2:hover {
background: #fff;
color: #c2410c; }
.btn2:active {
background: #e6e6e6; }
/*================== Box ======================*/
.box {
border: 1px solid #a2a2a2;
padding: 27px 20px 35px;
font-weight: 700;
line-height: 30px; }
.box2 {
position: relative; }
.box2:before, .box2:after {
display: table;
content: "";
line-height: 0; }
.box2:after {
clear: both; }
.box2_over {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center; }
.box2_over time {
font-size: 120px;
line-height: 110px;
font-family: 'Raleway', sans-serif;
font-weight: 700;
color: rgba(255, 255, 255, 0.25);
padding-bottom: 20px; }
@media (max-width: 1500px) and (min-width: 980px) {
.box2_over time {
font-size: 75px;
line-height: 70px; } }
.box2_aside {
float: left;
margin-right: 30px; }
@media (max-width: 979px) {
.box2_aside {
float: none;
margin-bottom: 30px;
margin-right: 0; } }
.box2_cnt__no-flow {
overflow: hidden;
text-align: left; }
.box3 {
padding: 0 5%; }
/*================== Lists ======================*/
.inline-list {
text-transform: uppercase; }
* + .inline-list {
margin-top: 60px; }
.inline-list li {
display: inline-block;
margin: 0 20px; }
.marked-list li {
position: relative;
padding-left: 30px; }
.marked-list li:before {
content: '';
display: inline-block;
width: 9px;
height: 9px;
border-radius: 50%;
background: #fff;
position: absolute;
top: 13px;
left: 0; }
.marked-list li + li {
margin-top: 12px; }
.marked-list1 li {
position: relative; }
.marked-list1 li:before {
content: '';
display: inline-block;
width: 9px;
height: 9px;
border-radius: 50%;
background: #fff;
vertical-align: top;
margin-top: 13px;
margin-right: 20px; }
.marked-list1 li + li {
margin-top: 12px; }
* + .marked-list1 {
margin-top: 20px; }
.index-list {
counter-reset: li; }
.index-list li {
position: relative; }
.index-list li:before {
content: counter(li,decimal-leading-zero);
counter-increment: li;
display: inline-block;
width: 108px;
height: 108px;
border-radius: 50%;
background: #c2410c;
border: 1px solid #fff;
color: #fff;
font-size: 48px;
line-height: 108px;
font-family: 'Raleway', sans-serif;
font-weight: 700;
text-align: center;
margin-bottom: 30px; }
.list {
text-align: left; }
.list li + li {
margin-top: 10px; }
.list .title {
position: relative;
overflow: hidden;
padding-right: 70px; }
.list .title:before, .list .title:after {
display: table;
content: "";
line-height: 0; }
.list .title:after {
clear: both; }
.list .title_right {
position: absolute;
bottom: 0;
right: 0;
background: #fff; }
.list .title_no-flow {
overflow: hidden;
background: #fff; }
.list .title_text {
background: #fff; }
.list .title .dots {
position: absolute;
left: 0;
bottom: 0;
display: block;
width: 100%;
z-index: -1; }
/*======================== Menu ==========================*/
.sf-menu {
display: inline-block;
text-align: left; }
.sf-menu:before, .sf-menu:after {
display: table;
content: "";
line-height: 0; }
.sf-menu:after {
clear: both; }
.sf-menu > li {
position: relative;
float: left; }
.sf-menu > li + li {
margin-left: 50px; }
@media (max-width: 979px) and (min-width: 768px) {
.sf-menu > li + li {
margin-left: 25px; } }
.sf-menu a {
display: block;
font-family: 'Raleway', sans-serif;
font-size: 14px;
line-height: 24px;
color: #fff; }
.sf-menu > li > a {
color: #FFF;
letter-spacing: .4px; }
.sf-menu > li.sfHover > a, .sf-menu > li > a:hover, .sf-menu > li.active > a {
color: #fec795; }
.sf-menu ul {
display: none;
position: absolute;
top: 100%;
width: 150px;
margin-top: 15px;
margin-left: -20px;
padding: 13px 15px 20px;
background: #c2410c;
z-index: 2;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); }
.sf-menu ul > li + li {
margin-top: 12px; }
.sf-menu ul > li > a {
color: #FFF; }
.sf-menu ul > li.sfHover > a, .sf-menu ul > li > a:hover {
color: #3f4853; }
.sf-menu ul ul {
position: absolute;
top: -15px;
left: 100%;
width: 150px;
margin-left: 10px;
padding: 13px 15px 20px;
z-index: 4; }
.sf-menu ul ul > li > a {
color: #FFF; }
.sf-menu ul ul > li.sfHover > a, .sf-menu ul ul > li > a:hover {
color: #3f4853; }
.sf-menu > li > .sf-with-ul {
position: relative; }
.sf-menu > li > .sf-with-ul:before {
position: absolute;
left: 50%;
top: 75%;
margin-left: -6px;
content: "";
font: 400 12px/12px "FontAwesome"; }
@media (max-width: 767px) {
.sf-menu {
display: none; } }
/*================== RD Mobile Menu =====================*/
.rd-mobilemenu {
display: none;
position: fixed;
top: 0;
left: 0;
bottom: 0;
z-index: 9999999;
text-align: left;
-moz-transition: 0.3s all ease;
-o-transition: 0.3s all ease;
-webkit-transition: 0.3s all ease;
transition: 0.3s all ease; }
.rd-mobilemenu.active {
right: 0; }
.rd-mobilemenu_ul {
position: fixed;
top: -56px;
left: 0;
bottom: -56px;
width: 240px;
padding: 132px 0 76px;
color: #666;
background: #FFF;
font-size: 14px;
line-height: 20px;
overflow: auto;
-webkit-box-shadow: 5px 0 5px 0 rgba(0, 0, 0, 0.1);
-moz-box-shadow: 5px 0 5px 0 rgba(0, 0, 0, 0.1);
box-shadow: 5px 0 5px 0 rgba(0, 0, 0, 0.1);
-moz-transform: translateX(-240px);
-ms-transform: translateX(-240px);
-o-transform: translateX(-240px);
-webkit-transform: translateX(-240px);
transform: translateX(-240px);
-moz-transition: 0.3s ease;
-o-transition: 0.3s ease;
-webkit-transition: 0.3s ease;
transition: 0.3s ease;
-moz-transition: 0.3s cubic-bezier(0.55, 0, 0.1, 1);
-o-transition: 0.3s cubic-bezier(0.55, 0, 0.1, 1);
-webkit-transition: 0.3s cubic-bezier(0.55, 0, 0.1, 1);
transition: 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
.rd-mobilemenu.active .rd-mobilemenu_ul {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-o-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0); }
.rd-mobilemenu_ul a {
display: block;
padding: 14px 25px 16px; }
.rd-mobilemenu_ul a.active {
background: #f5f5f5;
color: #2d2d2d; }
.rd-mobilemenu_ul a:hover {
background: #c2410c;
color: #FFF; }
.rd-mobilemenu_ul a .rd-submenu-toggle {
position: absolute;
top: 50%;
right: 11px;
margin-top: -17.5px;
width: 32px;
height: 32px;
font: 400 10px "FontAwesome";
line-height: 32px;
text-align: center;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
-moz-transition: 0.5s all ease;
-o-transition: 0.5s all ease;
-webkit-transition: 0.5s all ease;
transition: 0.5s all ease;
z-index: 1;
background: rgba(0, 0, 0, 0.1); }
.rd-mobilemenu_ul a .rd-submenu-toggle:after {
content: '\f078'; }
.rd-mobilemenu_ul a .rd-submenu-toggle:hover {
background: #FFF;
color: #666; }
.rd-mobilemenu_ul a.rd-with-ul {
position: relative; }
.rd-mobilemenu_ul a.rd-with-ul.active .rd-submenu-toggle {
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.rd-mobilemenu_ul ul a {
padding-left: 40px; }
.rd-mobilemenu_ul ul ul a {
padding-left: 60px; }
.rd-mobilemenu_ul:after {
content: '';
display: block;
height: 20px; }
.rd-mobilepanel {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
height: 56px;
background: #FFF;
color: #000;
-webkit-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.1);
z-index: 99999991; }
.rd-mobilepanel_title {
position: fixed;
top: 4px;
left: 56px;
right: 56px;
color: #000;
font-size: 24px;
line-height: 48px;
text-overflow: ellipsis;
white-space: nowrap;
text-align: left; }
.rd-mobilepanel_title:after, .rd-mobilepanel_title:before {
display: none; }
.rd-mobilepanel_toggle {
position: fixed;
top: 4px;
left: 8px;
width: 48px;
height: 48px; }
.rd-mobilepanel_toggle span {
position: relative;
display: block;
margin: auto;
-moz-transition: all 0.3s ease;
-o-transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
transition: all 0.3s ease; }
.rd-mobilepanel_toggle span:after, .rd-mobilepanel_toggle span:before {
content: "";
position: absolute;
left: 0;
top: -8px;
-moz-transition: all 0.3s ease;
-o-transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
transition: all 0.3s ease; }
.rd-mobilepanel_toggle span:after {
top: 8px; }
.rd-mobilepanel_toggle span:after, .rd-mobilepanel_toggle span:before, .rd-mobilepanel_toggle span {
width: 24px;
height: 4px;
background-color: #000;
backface-visibility: hidden;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px; }
.rd-mobilepanel_toggle span {
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.rd-mobilepanel_toggle span:before, .rd-mobilepanel_toggle span:after {
-moz-transform-origin: 1.71429px center;
-ms-transform-origin: 1.71429px center;
-o-transform-origin: 1.71429px center;
-webkit-transform-origin: 1.71429px center;
transform-origin: 1.71429px center;
-moz-transform-origin: 1.71429px center;
-ms-transform-origin: 1.71429px center;
-o-transform-origin: 1.71429px center;
-webkit-transform-origin: 1.71429px center;
transform-origin: 1.71429px center; }
.rd-mobilepanel_toggle.active span {
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
transform: rotate(360deg); }
.rd-mobilepanel_toggle.active span:before, .rd-mobilepanel_toggle.active span:after {
top: 0;
width: 15px; }
.rd-mobilepanel_toggle.active span:before {
-webkit-transform: rotate3d(0, 0, 1, -40deg);
transform: rotate3d(0, 0, 1, -40deg); }
.rd-mobilepanel_toggle.active span:after {
-webkit-transform: rotate3d(0, 0, 1, 40deg);
transform: rotate3d(0, 0, 1, 40deg); }
@media (max-width: 767px) {
body {
padding-top: 56px; }
.rd-mobilemenu, .rd-mobilepanel {
display: block; } }
@media (max-width: 359px) {
.rd-mobilepanel_title {
font-size: 18px; } }
/*================== Stuck menu ======================*/
.isStuck {
background: rgba(248, 119, 2, 0.9);
border-bottom: 1px solid #fff;
z-index: 999;
padding-top: 20px;
padding-bottom: 10px; }
@media only screen and (max-width: 979px) {
.isStuck {
display: none !important; } }
/*================== ToTop ======================*/
.toTop {
width: 50px;
height: 50px;
font-size: 24px;
line-height: 46px;
color: #fff;
background: #3f4853;
border-radius: 50%;
-webkit-box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.4);
-moz-box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.4);
box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.4);
position: fixed;
right: 40px;
bottom: 40px;
display: none;
overflow: hidden;
text-align: center;
text-decoration: none;
z-index: 20; }
.toTop:hover {
color: #fff;
background: #c2410c;
text-decoration: none; }
.mobile .toTop,
.tablet .toTop {
display: none !important; }
/*================== RD Parallax ======================*/
.parallax {
position: relative;
overflow: hidden; }
.parallax_image, .parallax_pattern {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 100%;
background-position: center center;
will-change: transform; }
.parallax_image {
background-repeat: no-repeat;
-webkit-background-size: cover;
background-size: cover; }
.parallax_pattern {
background-repeat: repeat; }
.parallax_cnt {
position: relative;
color: #fff; }
.parallax h2, .parallax h3, .parallax h4, .parallax h5, .parallax h6 {
color: #fff; }
.parallax h2:after, .parallax h3:after, .parallax h4:after, .parallax h5:after, .parallax h6:after {
background: #fff; }
.parallax h2 a:hover, .parallax h3 a:hover, .parallax h4 a:hover, .parallax h5 a:hover, .parallax h6 a:hover {
color: #c2410c; }
.parallax_1 {
padding-top: 115px;
padding-bottom: 80px; }
.parallax_2 {
padding-top: 115px;
padding-bottom: 110px; }
/*================== Thumbnail ======================*/
.thumb {
display: block;
position: relative;
overflow: hidden; }
.thumb img {
width: 100%;
height: auto;
-moz-transition: 0.5s all ease;
-o-transition: 0.5s all ease;
-webkit-transition: 0.5s all ease;
transition: 0.5s all ease; }
.thumb_overlay {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
opacity: 0;
-moz-transition: 0.3s all ease;
-o-transition: 0.3s all ease;
-webkit-transition: 0.3s all ease;
transition: 0.3s all ease;
color: #fff;
background: transparent; }
.thumb_overlay:before {
content: "";
position: absolute;
top: 50%;
left: 0;
right: 0;
font: 400 30px "FontAwesome";
line-height: 30px;
margin-top: -15px;
text-align: center; }
.lt-ie9 .thumb_overlay:before {
display: none; }
.thumb:hover .thumb_overlay {
opacity: 1;
background: rgba(0, 0, 0, 0.5); }
.lt-ie9 .thumb:hover .thumb_overlay {
background: none;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#80000000')";
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#80000000');
zoom: 1; }
.lt-ie9 .thumb:hover .thumb_overlay:before {
display: block; }
/*========================================================
HEADER Section
=========================================================*/
header {
padding-top: 25px;
padding-bottom: 27px; }
header .brand {
float: left; }
header .nav {
float: right;
margin-top: 13px; }
@media (max-width: 767px) {
header {
text-align: center; }
header .brand, header .nav {
float: none; } }
.top-section {
padding-top: 170px;
padding-bottom: 195px;
color: #fff; }
.top-section h2 {
color: #fff; }
/*========================================================
CONTENT Section
=========================================================*/
main {
display: block; }
.text1 {
font-weight: 700;
line-height: 30px; }
.primary {
color: #c2410c; }
.circle {
display: inline-block;
border-radius: 50%; }
.full:before, .full:after {
display: table;
content: "";
line-height: 0; }
.full:after {
clear: both; }
@media (max-width: 767px) {
.full {
width: 420px;
margin-right: auto;
margin-left: auto; } }
@media (max-width: 479px) {
.full {
width: 300px;
padding: 0 15px; } }
.full-item {
width: 20%;
float: left; }
@media (min-width: 980px) {
.full-item .box {
border-left: 0; }
.full-item:last-child .box {
border-right: 0; } }
@media (max-width: 979px) and (min-width: 768px) {
.full-item {
width: 50%; }
.full-item:nth-child(2n) .box {
border-right: 0;
border-left: 0; }
.full-item:nth-child(n+3) .box {
border-top: 0; } }
@media (max-width: 767px) {
.full-item {
width: 100%; }
.full-item + .full-item {
margin-top: 30px; } }
.mt1, .row.mt1 {
margin-top: 50px; }
.mt2 {
margin-top: 100px; }
.mt3, .row.mt3 {
margin-top: 60px; }
.mt4 {
margin-top: 20px; }
.addr {
font-size: 18px;
line-height: 30px; }
.addr .fa {
font-size: 48px;
line-height: 53px; }
.addr .fa + * {
margin-top: 30px; }
.addr .fa-mobile {
font-size: 60px; }
.centered {
height: 100%;
display: inline-block; }
.center-wrap {
display: inline-block;
vertical-align: middle; }
.helper {
display: inline-block;
vertical-align: middle;
height: 100%;
width: 0px; }
.quote img + * {
margin-top: 15px; }
.quote * + h5 {
margin-top: 10px; }
.tl {
text-align: left; }
.terms {
padding-top: 115px;
padding-bottom: 80px; }
.terms p + h5 {
margin-top: 40px; }
.policy-link {
margin-top: 35px; }
/*================== Well ======================*/
.well1 {
padding-top: 130px;
padding-bottom: 140px; }
.well2 {
padding-top: 120px; }
@media (max-width: 979px) {
.well2 {
padding-top: 80px; } }
.well3 {
padding-top: 120px;
padding-bottom: 80px; }
.well4 {
padding-top: 118px;
padding-bottom: 125px; }
.well5 {
padding-top: 115px;
padding-bottom: 110px; }
.well6 {
padding-top: 125px;
padding-bottom: 135px; }
@media (max-width: 979px) {
.well1, .well3, .well4, .well5, .well6 {
padding-top: 80px;
padding-bottom: 80px; } }
/*========================================================
FOOTER Styles
=========================================================*/
footer {
padding-top: 80px;
padding-bottom: 40px;
color: #fff; }
* + footer .copy {
margin-top: 35px; }
footer .copy span, footer .copy a {
white-space: nowrap; }
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 270 KiB

+258
View File
@@ -0,0 +1,258 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Gallery | T.R.B. Painting</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Project gallery from T.R.B. Painting — interiors, exteriors, and power washing results.">
<meta name="format-detection" content="telephone=no"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/grid.css">
<link rel="stylesheet" href="css/jquery.fancybox.css">
<link rel="stylesheet" href="css/style.css">
<script src="js/jquery.js"></script>
<script src="js/jquery-migrate-1.2.1.js"></script>
<!--[if lt IE 9]>
<html class="lt-ie9">
<div style=' clear: both; text-align:center; position: relative;'>
<a href="http://windows.microsoft.com/en-US/internet-explorer/..">
<img src="images/ie8-panel/warning_bar_0000_us.jpg" border="0" height="42" width="820"
alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today."/>
</a>
</div>
<script src="js/html5shiv.js"></script>
<![endif]-->
<script src='js/device.min.js'></script>
<style>
.preview-concept-banner{position:fixed;top:0;left:0;right:0;z-index:99999;background:#1a2332;color:#fff;font:600 13px/1.4 system-ui,sans-serif;padding:8px 16px;text-align:center}
.preview-concept-banner span{opacity:.85;font-weight:400}
.preview-concept-banner a{color:#fff;text-decoration:underline}
body{padding-top:36px}
.aiml-site-credit{text-align:center;padding:12px 16px 24px;font:14px/1.4 system-ui,sans-serif;color:#555}
.aiml-site-credit a{color:#1a2332;text-decoration:underline}
footer .aiml-site-credit{color:rgba(255,255,255,.85)}
footer .aiml-site-credit a{color:#fff}
</style>
</head>
<body>
<div class="preview-concept-banner">UX Concept Preview — T.R.B. Painting <span>· Concept site — not live</span> · <a href="ux-gallery.html">Feature gallery</a> · <a href="pricing.html">Pricing</a></div>
<div class="page">
<!--========================================================
HEADER
=========================================================-->
<header class="bg2">
<div id="stuck_container" class="stuck_container">
<div class="container">
<div class="brand">
<p class="brand_name">
<a href="index.html">T.R.B. Painting</a>
</p>
</div>
<nav class="nav" aria-label="Primary">
<ul class="sf-menu" data-type="navbar">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="services.html">Services</a>
<ul>
<li><a href="services.html#interior">Interior painting</a></li>
<li><a href="services.html#exterior">Exterior painting</a></li>
<li><a href="services.html#power-washing">Power washing</a></li>
</ul>
</li>
<li>
<a href="about.html">About</a>
</li>
<li class="active">
<a href="gallery.html">Gallery</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!--========================================================
CONTENT
=========================================================-->
<main>
<section class="well4">
<div class="container">
<h3>Project gallery</h3>
<div class="row wow fadeInUp">
<div class="grid_4">
<div class="box" data-equal-group="1">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img01_original.jpg">
<img class="circle" src="images/page-3_img01.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Duis volutpat pulvinar</a></h4>
<p class="text1">Lorem ipsum dolor sit amet, conse ctetuer adipiscing elita enean.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="1">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img02_original.jpg">
<img class="circle" src="images/page-3_img02.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Urna ac mollis ulla dapi</a></h4>
<p class="text1">Consectetuer adipiscing elita enean commodo ligula eget dolor.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="1">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img03_original.jpg">
<img class="circle" src="images/page-3_img03.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Nulla dapibus lacus vel</a></h4>
<p class="text1">Cum sociis natoque penatibus et magnis dis parturi.</p>
</div>
</div>
</div>
<div class="row mt3 wow fadeInUp">
<div class="grid_4">
<div class="box" data-equal-group="2">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img04_original.jpg">
<img class="circle" src="images/page-3_img04.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Pulvinarurna ac mollis</a></h4>
<p class="text1">Atetuer adipiscing elita enean commodo ligula eget dolor.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="2">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img05_original.jpg">
<img class="circle" src="images/page-3_img05.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Mollis ulla dapibus</a></h4>
<p class="text1">Aenean massa. Cum sociis natoque et magnis dis part.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="2">
<a data-fancybox-group="1" class="thumb circle" href="images/page-3_img06_original.jpg">
<img class="circle" src="images/page-3_img06.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Lacus vel malesuada ulla</a></h4>
<p class="text1">Ent montes, nascetur ridiculus mus. Donec quam felis, ultricies.</p>
</div>
</div>
</div>
</div>
</section>
<section class="parallax parallax_2" data-url="images/parallax04.jpg">
<div class="container">
<h2>Choose the color of your life</h2>
<div class="row">
<div class="preffix_1 grid_10">
<p>Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis.</p>
</div>
</div>
</div>
</section>
<section class="well3">
<div class="container">
<h3>Recent projects</h3>
<div class="row wow fadeInUp">
<div class="grid_4">
<div class="box" data-equal-group="3">
<a data-fancybox-group="2" class="thumb circle" href="images/page-3_img07_original.jpg">
<img class="circle" src="images/page-3_img07.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Praesent lacinia congu</a></h4>
<p class="text1">Aenean lacinia, nulla nec faucibus egestas, libero arcu iaculis.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="3">
<a data-fancybox-group="2" class="thumb circle" href="images/page-3_img08_original.jpg">
<img class="circle" src="images/page-3_img08.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Congue velit vitae moll</a></h4>
<p class="text1">Libero arcu iaculis massa, et ullam corper nisi enim ac erat.</p>
</div>
</div>
<div class="grid_4">
<div class="box" data-equal-group="3">
<a data-fancybox-group="2" class="thumb circle" href="images/page-3_img09_original.jpg">
<img class="circle" src="images/page-3_img09.jpg" alt="Painted project photo">
<span class="thumb_overlay circle"></span>
</a>
<h4><a href="#">Velit vitae mollis hase</a></h4>
<p class="text1">Arcu iaculis massa, et ullamcorper nisi enim ac erat. Phasellus qui.</p>
</div>
</div>
</div>
</div>
</section>
</main>
<!--========================================================
FOOTER
=========================================================-->
<footer class="parallax" data-url="images/parallax02.jpg">
<div class="container">
<div class="row">
<div class="grid_4">
<address class="addr">
<span class="fa fa-map-marker" aria-hidden="true"></span>
<p>Service area TBD<br><span style="opacity:.85">Confirm coverage with T.R.B. Painting</span></p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-envelope-o" aria-hidden="true"></span>
<p>Email TBD</p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-mobile" aria-hidden="true"></span>
<p><a href="tel:+16306066776">(630) 606-6776</a></p>
</address>
</div>
</div>
<p class="copy">
T.R.B. Painting © <span id="copyright-year"></span>
<span>All Rights Reserved</span>
&nbsp;|&nbsp;
<a href="privacy.html">Privacy Policy</a>
</p>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</footer>
</div>
<script src="js/script.js"></script>
<script>
(function () {
function labelToggle() {
var t = document.querySelector('.rd-mobilepanel_toggle');
if (t && !t.getAttribute('aria-label')) t.setAttribute('aria-label', 'Open menu');
}
document.addEventListener('DOMContentLoaded', function () {
labelToggle();
setTimeout(labelToggle, 500);
setTimeout(labelToggle, 1500);
});
})();
</script>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

+344
View File
@@ -0,0 +1,344 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>T.R.B. Painting | Interior, Exterior &amp; Power Washing</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="T.R.B. Painting — interior painting, exterior painting, and power washing. Call (630) 606-6776 for a free estimate.">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://trb-painting-preview.aimloperations.com/">
<meta property="og:type" content="website">
<meta property="og:title" content="T.R.B. Painting | Interior, Exterior &amp; Power Washing">
<meta property="og:description" content="T.R.B. Painting — interior painting, exterior painting, and power washing. Call (630) 606-6776 for a free estimate.">
<meta property="og:url" content="https://trb-painting-preview.aimloperations.com/">
<meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="T.R.B. Painting | Interior, Exterior &amp; Power Washing">
<meta name="twitter:description" content="T.R.B. Painting — interior painting, exterior painting, and power washing. Call (630) 606-6776 for a free estimate.">
<meta name="format-detection" content="telephone=no"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/grid.css">
<link rel="stylesheet" href="css/fl-bigmug-line.css">
<link rel="stylesheet" href="css/style.css">
<script src="js/jquery.js"></script>
<script src="js/jquery-migrate-1.2.1.js"></script>
<!--[if lt IE 9]>
<html class="lt-ie9">
<div style=' clear: both; text-align:center; position: relative;'>
<a href="http://windows.microsoft.com/en-US/internet-explorer/..">
<img src="images/ie8-panel/warning_bar_0000_us.jpg" border="0" height="42" width="820"
alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today."/ loading="lazy" decoding="async">
</a>
</div>
<script src="js/html5shiv.js"></script>
<![endif]-->
<script src='js/device.min.js'></script>
<style>
.preview-concept-banner{position:fixed;top:0;left:0;right:0;z-index:99999;background:#1a2332;color:#fff;font:600 13px/1.4 system-ui,sans-serif;padding:8px 16px;text-align:center}
.preview-concept-banner span{opacity:.85;font-weight:400}
.preview-concept-banner a{color:#fff;text-decoration:underline}
body{padding-top:36px}
.aiml-site-credit{text-align:center;padding:12px 16px 24px;font:14px/1.4 system-ui,sans-serif;color:#555}
.aiml-site-credit a{color:#1a2332;text-decoration:underline}
footer .aiml-site-credit{color:rgba(255,255,255,.85)}
footer .aiml-site-credit a{color:#fff}
.box-title{font-size:18px;font-weight:700;margin:12px 0 8px}
.svc-label{font-size:16px;font-weight:700;line-height:1.35;margin:10px 0 0}
</style>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HousePainter",
"name": "T.R.B. Painting",
"url": "https://trb-painting-preview.aimloperations.com/",
"telephone": "+1-630-606-6776",
"description": "Interior painting, exterior painting, and power washing services.",
"areaServed": "US"
}
</script>
</head>
<body>
<div class="preview-concept-banner">UX Concept Preview — T.R.B. Painting <span>· Concept site — not live</span> · <a href="ux-gallery.html">Feature gallery</a> · <a href="pricing.html">Pricing</a></div>
<div class="page">
<!--========================================================
HEADER
=========================================================-->
<header class="bg1">
<div id="stuck_container" class="stuck_container">
<div class="container">
<div class="brand">
<h1 class="brand_name">
<a href="index.html">T.R.B. Painting</a>
</h1>
</div>
<nav class="nav" aria-label="Primary">
<ul class="sf-menu" data-type="navbar">
<li class="active">
<a href="index.html">Home</a>
</li>
<li>
<a href="services.html">Services</a>
<ul>
<li><a href="services.html#interior">Interior painting</a></li>
<li><a href="services.html#exterior">Exterior painting</a></li>
<li><a href="services.html#power-washing">Power washing</a></li>
</ul>
</li>
<li>
<a href="about.html">About</a>
</li>
<li>
<a href="gallery.html">Gallery</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</nav>
</div>
</div>
<section class="top-section">
<div class="container">
<h2>Quality painting &amp; power washing</h2>
<div class="row">
<div class="preffix_2 grid_8">
<p>Interior painting, exterior painting, and power washing — done right. Call <a href="tel:+16306066776">(630) 606-6776</a> for a free estimate.</p>
</div>
</div>
</div>
</section>
</header>
<!--========================================================
CONTENT
=========================================================-->
<main>
<section class="bg3 well6">
<img class="bg-img1" src="images/page-1_img01.jpg" alt="Professional painter at work">
<div class="container">
<div class="row">
<div class="preffix_2 grid_8">
<h3>Professional painting you can trust</h3>
<p class="mt4">T.R.B. Painting brings clean prep, careful application, and durable finishes to homes and small commercial jobs. From fresh interiors to curb-appeal exteriors and deep power washing — one crew, clear communication.</p>
</div>
</div>
</div>
</section>
<section class="well1">
<div class="container">
<h3>What we paint</h3>
<div class="row mt2">
<div class="grid_4">
<div class="box3 wow fadeInUp">
<img src="images/page-1_img02.jpg" alt="Interior painting project" loading="lazy" decoding="async">
<h3 class="box-title"><a href="services.html#interior">Interior painting</a></h3>
<p class="text1">Clean lines and durable finishes indoors.</p>
<a class="btn" href="services.html">View services</a>
</div>
</div>
<div class="grid_4">
<div class="box3 wow fadeInUp" data-wow-delay="0.2s">
<img src="images/page-1_img03.jpg" alt="Exterior painting project" loading="lazy" decoding="async">
<h3 class="box-title"><a href="services.html#exterior">Exterior painting</a></h3>
<p class="text1">Weather-ready coats that protect and impress.</p>
<a class="btn" href="services.html">View services</a>
</div>
</div>
<div class="grid_4">
<div class="box3 wow fadeInUp" data-wow-delay="0.4s">
<img src="images/page-1_img04.jpg" alt="Power washing a home exterior" loading="lazy" decoding="async">
<h3 class="box-title"><a href="services.html#power-washing">Power washing</a></h3>
<p class="text1">Restore curb appeal and prep for paint.</p>
<a class="btn" href="services.html">View services</a>
</div>
</div>
</div>
</div>
</section>
<section class="parallax parallax_1" data-url="images/parallax01.jpg">
<div class="container">
<h3> Our services</h3>
<div class="row">
<div class="grid_4">
<div class="box3">
<img src="images/page-1_icon01.png" alt="" loading="lazy" decoding="async">
<p class="svc-label"><a href="services.html#interior">Interior walls, ceilings,<br> trim &amp; more</a></p>
</div>
</div>
<div class="grid_4">
<div class="box3">
<img src="images/page-1_icon02.png" alt="" loading="lazy" decoding="async">
<p class="svc-label"><a href="services.html#exterior">Siding, trim, doors<br> &amp; outdoor surfaces</a></p>
</div>
</div>
<div class="grid_4">
<div class="box3">
<img src="images/page-1_icon03.png" alt="" loading="lazy" decoding="async">
<p class="svc-label"><a href="services.html#power-washing">Prep surfaces for paint<br> &amp; a cleaner look</a></p>
</div>
</div>
</div>
</div>
</section>
<section class="well2">
<div class="container">
<h3>Recent work</h3>
</div>
<div class="full mt1 wow fadeInUp">
<div class="full-item">
<div class="box" data-equal-group="1">
<div class="box2">
<img class="circle" src="images/page-1_img05.jpg" alt="" loading="lazy" decoding="async">
<div class="box2_over">
<div class="centered">
<div class="center-wrap">
<time datetime="2015-05-27">27<br>05</time>
</div>
<div class="helper"></div>
</div>
</div>
</div>
<h4><a href="#">Fresh interior refresh</a></h4>
<p>Walls, ceilings, and trim refreshed for a brighter home.</p>
</div>
</div>
<div class="full-item">
<div class="box" data-equal-group="1">
<div class="box2">
<img class="circle" src="images/page-1_img06.jpg" alt="" loading="lazy" decoding="async">
<div class="box2_over">
<div class="centered">
<div class="center-wrap">
<time datetime="2015-05-27">22<br>05</time>
</div>
<div class="helper"></div>
</div>
</div>
</div>
<h4><a href="#">Exterior color update</a></h4>
<p>Walls, ceilings, and trim refreshed for a brighter home.</p>
</div>
</div>
<div class="full-item">
<div class="box" data-equal-group="1">
<div class="box2">
<img class="circle" src="images/page-1_img07.jpg" alt="" loading="lazy" decoding="async">
<div class="box2_over">
<div class="centered">
<div class="center-wrap">
<time datetime="2015-05-27">17<br>05</time>
</div>
<div class="helper"></div>
</div>
</div>
</div>
<h4><a href="#">Power wash &amp; prep</a></h4>
<p>Walls, ceilings, and trim refreshed for a brighter home.</p>
</div>
</div>
<div class="full-item">
<div class="box" data-equal-group="1">
<div class="box2">
<img class="circle" src="images/page-1_img08.jpg" alt="" loading="lazy" decoding="async">
<div class="box2_over">
<div class="centered">
<div class="center-wrap">
<time datetime="2015-05-27">11<br>05</time>
</div>
<div class="helper"></div>
</div>
</div>
</div>
<h4><a href="#">Trim &amp; detail work</a></h4>
<p>Careful prep and lasting exterior color.</p>
</div>
</div>
<div class="full-item">
<div class="box" data-equal-group="1">
<div class="box2">
<img class="circle" src="images/page-1_img09.jpg" alt="" loading="lazy" decoding="async">
<div class="box2_over">
<div class="centered">
<div class="center-wrap">
<time datetime="2015-05-27">10<br>05</time>
</div>
<div class="helper"></div>
</div>
</div>
</div>
<h4><a href="#">Donec sagittis euismod </a></h4>
<p>Walls, ceilings, and trim refreshed for a brighter home.</p>
</div>
</div>
</div>
</section>
<section class="well3">
<div class="container wow fadeInUp">
<h3>About T.R.B. Painting</h3>
<div class="row">
<div class="preffix_1 grid_10">
<p>T.R.B. Painting focuses on three things done well: interior painting, exterior painting, and power washing. We show up prepared, protect your space, and leave a finish you will be proud of. Call (630) 606-6776 to talk through your project.</p>
</div>
</div>
</div>
</section>
</main>
<!--========================================================
FOOTER
=========================================================-->
<footer class="parallax" data-url="images/parallax02.jpg">
<div class="container">
<div class="row">
<div class="grid_4">
<address class="addr">
<span class="fa fa-map-marker" aria-hidden="true"></span>
<p>Service area TBD<br><span style="opacity:.85">Confirm coverage with T.R.B. Painting</span></p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-envelope-o" aria-hidden="true"></span>
<p>Email TBD</p>
</address>
</div>
<div class="grid_4">
<address class="addr">
<span class="fa fa-mobile" aria-hidden="true"></span>
<p><a href="tel:+16306066776">(630) 606-6776</a></p>
</address>
</div>
</div>
<p class="copy">
T.R.B. Painting © <span id="copyright-year"></span>
<span>All Rights Reserved</span>
&nbsp;|&nbsp;
<a href="privacy.html">Privacy Policy</a>
</p>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</footer>
</div>
<script src="js/script.js"></script>
<script>
(function () {
function labelToggle() {
var t = document.querySelector('.rd-mobilepanel_toggle');
if (t && !t.getAttribute('aria-label')) t.setAttribute('aria-label', 'Open menu');
}
document.addEventListener('DOMContentLoaded', function () {
labelToggle();
setTimeout(labelToggle, 500);
setTimeout(labelToggle, 1500);
});
})();
</script>
</body>
</html>
File diff suppressed because one or more lines are too long
+66
View File
@@ -0,0 +1,66 @@
/*! device.js 0.1.61 */
(function () {
var a, b, c, d, e, f, g, h, i, j;
a = window.device, window.device = {}, c = window.document.documentElement, j = window.navigator.userAgent.toLowerCase(), device.ios = function () {
return device.iphone() || device.ipod() || device.ipad()
}, device.iphone = function () {
return d("iphone")
}, device.ipod = function () {
return d("ipod")
}, device.ipad = function () {
return d("ipad")
}, device.android = function () {
return d("android")
}, device.androidPhone = function () {
return device.android() && d("mobile")
}, device.androidTablet = function () {
return device.android() && !d("mobile")
}, device.blackberry = function () {
return d("blackberry") || d("bb10") || d("rim")
}, device.blackberryPhone = function () {
return device.blackberry() && !d("tablet")
}, device.blackberryTablet = function () {
return device.blackberry() && d("tablet")
}, device.windows = function () {
return d("windows")
}, device.windowsPhone = function () {
return device.windows() && d("phone")
}, device.windowsTablet = function () {
return device.windows() && d("touch") && !device.windowsPhone()
}, device.fxos = function () {
return(d("(mobile;") || d("(tablet;")) && d("; rv:")
}, device.fxosPhone = function () {
return device.fxos() && d("mobile")
}, device.fxosTablet = function () {
return device.fxos() && d("tablet")
}, device.meego = function () {
return d("meego")
}, device.cordova = function () {
return window.cordova && "file:" === location.protocol
}, device.nodeWebkit = function () {
return"object" == typeof window.process
}, device.mobile = function () {
return device.androidPhone() || device.iphone() || device.ipod() || device.windowsPhone() || device.blackberryPhone() || device.fxosPhone() || device.meego()
}, device.tablet = function () {
return device.ipad() || device.androidTablet() || device.blackberryTablet() || device.windowsTablet() || device.fxosTablet()
}, device.desktop = function () {
return!device.tablet() && !device.mobile()
}, device.portrait = function () {
return window.innerHeight / window.innerWidth > 1
}, device.landscape = function () {
return window.innerHeight / window.innerWidth < 1
}, device.noConflict = function () {
return window.device = a, this
}, d = function (a) {
return-1 !== j.indexOf(a)
}, f = function (a) {
var b;
return b = new RegExp(a, "i"), c.className.match(b)
}, b = function (a) {
return f(a) ? void 0 : c.className += " " + a
}, h = function (a) {
return f(a) ? c.className = c.className.replace(a, "") : void 0
}, device.ios() ? device.ipad() ? b("ios ipad tablet") : device.iphone() ? b("ios iphone mobile") : device.ipod() && b("ios ipod mobile") : b(device.android() ? device.androidTablet() ? "android tablet" : "android mobile" : device.blackberry() ? device.blackberryTablet() ? "blackberry tablet" : "blackberry mobile" : device.windows() ? device.windowsTablet() ? "windows tablet" : device.windowsPhone() ? "windows mobile" : "desktop" : device.fxos() ? device.fxosTablet() ? "fxos tablet" : "fxos mobile" : device.meego() ? "meego mobile" : device.nodeWebkit() ? "node-webkit" : "desktop"), device.cordova() && b("cordova"), e = function () {
return device.landscape() ? (h("portrait"), b("landscape")) : (h("landscape"), b("portrait"))
}, i = "onorientationchange"in window, g = i ? "orientationchange" : "resize", window.addEventListener ? window.addEventListener(g, e, !1) : window.attachEvent ? window.attachEvent(g, e) : window[g] = e, e()
}).call(this);
+322
View File
@@ -0,0 +1,322 @@
/**
* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
var version = '3.7.2';
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv';
/** The id for the the documents expando */
var expanID = 0;
/** Cached data for each document */
var expandoData = {};
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
try {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
(document.createElement)('a');
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
} catch(e) {
// assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true;
supportsUnknownElements = true;
}
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Extends the built-in list of html5 elements
* @memberOf html5
* @param {String|Array} newElements whitespace separated list or array of new element names to shiv
* @param {Document} ownerDocument The context document.
*/
function addElements(newElements, ownerDocument) {
var elements = html5.elements;
if(typeof elements != 'string'){
elements = elements.join(' ');
}
if(typeof newElements != 'string'){
newElements = newElements.join(' ');
}
html5.elements = elements +' '+ newElements;
shivDocument(ownerDocument);
}
/**
* Returns the data associated to the given document
* @private
* @param {Document} ownerDocument The document.
* @returns {Object} An object of data.
*/
function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]];
if (!data) {
data = {};
expanID++;
ownerDocument[expando] = expanID;
expandoData[expanID] = data;
}
return data;
}
/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createElement(nodeName);
}
if (!data) {
data = getExpandoData(ownerDocument);
}
var node;
if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else {
node = data.createElem(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
}
/**
* returns a shived DocumentFragment for the given document
* @memberOf html5
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment.
*/
function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createDocumentFragment();
}
data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(),
i = 0,
elems = getElements(),
l = elems.length;
for(;i<l;i++){
clone.createElement(elems[i]);
}
return clone;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document.
*/
function shivMethods(ownerDocument, data) {
if (!data.cache) {
data.cache = {};
data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag();
}
ownerDocument.createElement = function(nodeName) {
//abort shiv
if (!html5.shivMethods) {
return data.createElem(nodeName);
}
return createElement(nodeName, ownerDocument, data);
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
data.createElem(nodeName);
data.frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, data.frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
if (!ownerDocument) {
ownerDocument = document;
}
var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}' +
// hides non-rendered elements
'template{display:none}'
);
}
if (!supportsUnknownElements) {
shivMethods(ownerDocument, data);
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
/**
* current version of html5shiv
*/
'version': version,
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': (options.shivCSS !== false),
/**
* Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5
* @type boolean
*/
'supportsUnknownElements': supportsUnknownElements,
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': (options.shivMethods !== false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument,
//creates a shived element
createElement: createElement,
//creates a shived documentFragment
createDocumentFragment: createDocumentFragment,
//extends list of elements
addElements: addElements
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));
@@ -0,0 +1,521 @@
/*!
* jQuery Migrate - v1.2.1 - 2013-05-08
* https://github.com/jquery/jquery-migrate
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
*/
(function( jQuery, window, undefined ) {
// See http://bugs.jquery.com/ticket/13335
// "use strict";
var warnedAbout = {};
// List of warnings already given; public read only
jQuery.migrateWarnings = [];
// Set to true to prevent console output; migrateWarnings still maintained
// jQuery.migrateMute = false;
// Show a message on the console so devs know we're active
if ( !jQuery.migrateMute && window.console && window.console.log ) {
window.console.log("JQMIGRATE: Logging is active");
}
// Set to false to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
jQuery.migrateTrace = true;
}
// Forget any warnings we've already given; public
jQuery.migrateReset = function() {
warnedAbout = {};
jQuery.migrateWarnings.length = 0;
};
function migrateWarn( msg) {
var console = window.console;
if ( !warnedAbout[ msg ] ) {
warnedAbout[ msg ] = true;
jQuery.migrateWarnings.push( msg );
if ( console && console.warn && !jQuery.migrateMute ) {
console.warn( "JQMIGRATE: " + msg );
if ( jQuery.migrateTrace && console.trace ) {
console.trace();
}
}
}
}
function migrateWarnProp( obj, prop, value, msg ) {
if ( Object.defineProperty ) {
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
// allow property to be overwritten in case some other plugin wants it
try {
Object.defineProperty( obj, prop, {
configurable: true,
enumerable: true,
get: function() {
migrateWarn( msg );
return value;
},
set: function( newValue ) {
migrateWarn( msg );
value = newValue;
}
});
return;
} catch( err ) {
// IE8 is a dope about Object.defineProperty, can't warn there
}
}
// Non-ES5 (or broken) browser; just set the property
jQuery._definePropertyBroken = true;
obj[ prop ] = value;
}
if ( document.compatMode === "BackCompat" ) {
// jQuery has never supported or tested Quirks Mode
migrateWarn( "jQuery is not compatible with Quirks Mode" );
}
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
oldAttr = jQuery.attr,
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
function() { return null; },
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
function() { return undefined; },
rnoType = /^(?:input|button)$/i,
rnoAttrNodeType = /^[238]$/,
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
ruseDefault = /^(?:checked|selected)$/i;
// jQuery.attrFn
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
jQuery.attr = function( elem, name, value, pass ) {
var lowerName = name.toLowerCase(),
nType = elem && elem.nodeType;
if ( pass ) {
// Since pass is used internally, we only warn for new jQuery
// versions where there isn't a pass arg in the formal params
if ( oldAttr.length < 4 ) {
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
}
if ( elem && !rnoAttrNodeType.test( nType ) &&
(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
return jQuery( elem )[ name ]( value );
}
}
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
// for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
}
// Restore boolHook for boolean property/attribute synchronization
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
jQuery.attrHooks[ lowerName ] = {
get: function( elem, name ) {
// Align boolean attributes with corresponding properties
// Fall back to attribute presence where some booleans are not supported
var attrNode,
property = jQuery.prop( elem, name );
return property === true || typeof property !== "boolean" &&
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
name.toLowerCase() :
undefined;
},
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// value is true since we know at this point it's type boolean and not false
// Set boolean attributes to the same name and set the DOM property
propName = jQuery.propFix[ name ] || name;
if ( propName in elem ) {
// Only set the IDL specifically if it already exists on the element
elem[ propName ] = true;
}
elem.setAttribute( name, name.toLowerCase() );
}
return name;
}
};
// Warn only for attributes that can remain distinct from their properties post-1.9
if ( ruseDefault.test( lowerName ) ) {
migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
}
}
return oldAttr.call( jQuery, elem, name, value );
};
// attrHooks: value
jQuery.attrHooks.value = {
get: function( elem, name ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrGet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value') no longer gets properties");
}
return name in elem ?
elem.value :
null;
},
set: function( elem, value ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrSet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
}
// Does not return so that setAttribute is also used
elem.value = value;
}
};
var matched, browser,
oldInit = jQuery.fn.init,
oldParseJSON = jQuery.parseJSON,
// Note: XSS check is done below after string is trimmed
rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
// $(html) "looks like html" rule change
jQuery.fn.init = function( selector, context, rootjQuery ) {
var match;
if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
(match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
// This is an HTML string according to the "old" rules; is it still?
if ( selector.charAt( 0 ) !== "<" ) {
migrateWarn("$(html) HTML strings must start with '<' character");
}
if ( match[ 3 ] ) {
migrateWarn("$(html) HTML text after last tag is ignored");
}
// Consistently reject any HTML-like string starting with a hash (#9521)
// Note that this may break jQuery 1.6.x code that otherwise would work.
if ( match[ 0 ].charAt( 0 ) === "#" ) {
migrateWarn("HTML string cannot start with a '#' character");
jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
}
// Now process using loose rules; let pre-1.8 play too
if ( context && context.context ) {
// jQuery object as context; parseHTML expects a DOM object
context = context.context;
}
if ( jQuery.parseHTML ) {
return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
context, rootjQuery );
}
}
return oldInit.apply( this, arguments );
};
jQuery.fn.init.prototype = jQuery.fn;
// Let $.parseJSON(falsy_value) return null
jQuery.parseJSON = function( json ) {
if ( !json && json !== null ) {
migrateWarn("jQuery.parseJSON requires a valid JSON string");
return null;
}
return oldParseJSON.apply( this, arguments );
};
jQuery.uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
matched = jQuery.uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
}
// Warn if the code tries to get jQuery.browser
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
jQuery.sub = function() {
function jQuerySub( selector, context ) {
return new jQuerySub.fn.init( selector, context );
}
jQuery.extend( true, jQuerySub, this );
jQuerySub.superclass = this;
jQuerySub.fn = jQuerySub.prototype = this();
jQuerySub.fn.constructor = jQuerySub;
jQuerySub.sub = this.sub;
jQuerySub.fn.init = function init( selector, context ) {
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
context = jQuerySub( context );
}
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
};
jQuerySub.fn.init.prototype = jQuerySub.fn;
var rootjQuerySub = jQuerySub(document);
migrateWarn( "jQuery.sub() is deprecated" );
return jQuerySub;
};
// Ensure that $.ajax gets the new parseJSON defined in core.js
jQuery.ajaxSetup({
converters: {
"text json": jQuery.parseJSON
}
});
var oldFnData = jQuery.fn.data;
jQuery.fn.data = function( name ) {
var ret, evt,
elem = this[0];
// Handles 1.7 which has this behavior and 1.8 which doesn't
if ( elem && name === "events" && arguments.length === 1 ) {
ret = jQuery.data( elem, name );
evt = jQuery._data( elem, name );
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
return evt;
}
}
return oldFnData.apply( this, arguments );
};
var rscriptType = /\/(java|ecma)script/i,
oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
jQuery.fn.andSelf = function() {
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
return oldSelf.apply( this, arguments );
};
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
if ( !jQuery.clean ) {
jQuery.clean = function( elems, context, fragment, scripts ) {
// Set context per 1.8 logic
context = context || document;
context = !context.nodeType && context[0] || context;
context = context.ownerDocument || context;
migrateWarn("jQuery.clean() is deprecated");
var i, elem, handleScript, jsTags,
ret = [];
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
// Complex logic lifted directly from jQuery 1.8
if ( fragment ) {
// Special handling of each script element
handleScript = function( elem ) {
// Check if we consider it executable
if ( !elem.type || rscriptType.test( elem.type ) ) {
// Detach the script and store it in the scripts array (if provided) or the fragment
// Return truthy to indicate that it has been handled
return scripts ?
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
fragment.appendChild( elem );
}
};
for ( i = 0; (elem = ret[i]) != null; i++ ) {
// Check if we're done after handling an executable script
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
// Append to fragment and handle embedded scripts
fragment.appendChild( elem );
if ( typeof elem.getElementsByTagName !== "undefined" ) {
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
// Splice the scripts into ret after their former ancestor and advance our index beyond them
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
i += jsTags.length;
}
}
}
}
return ret;
};
}
var eventAdd = jQuery.event.add,
eventRemove = jQuery.event.remove,
eventTrigger = jQuery.event.trigger,
oldToggle = jQuery.fn.toggle,
oldLive = jQuery.fn.live,
oldDie = jQuery.fn.die,
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
hoverHack = function( events ) {
if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
return events;
}
if ( rhoverHack.test( events ) ) {
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
}
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
};
// Event props removed in 1.9, put them back if needed; no practical way to warn them
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
}
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
if ( jQuery.event.dispatch ) {
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
}
// Support for 'hover' pseudo-event and ajax event warnings
jQuery.event.add = function( elem, types, handler, data, selector ){
if ( elem !== document && rajaxEvent.test( types ) ) {
migrateWarn( "AJAX events should be attached to document: " + types );
}
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
};
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
};
jQuery.fn.error = function() {
var args = Array.prototype.slice.call( arguments, 0);
migrateWarn("jQuery.fn.error() is deprecated");
args.splice( 0, 0, "error" );
if ( arguments.length ) {
return this.bind.apply( this, args );
}
// error event should not bubble to window, although it does pre-1.7
this.triggerHandler.apply( this, args );
return this;
};
jQuery.fn.toggle = function( fn, fn2 ) {
// Don't mess with animation or css toggles
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
return oldToggle.apply( this, arguments );
}
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
};
jQuery.fn.live = function( types, data, fn ) {
migrateWarn("jQuery.fn.live() is deprecated");
if ( oldLive ) {
return oldLive.apply( this, arguments );
}
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
};
jQuery.fn.die = function( types, fn ) {
migrateWarn("jQuery.fn.die() is deprecated");
if ( oldDie ) {
return oldDie.apply( this, arguments );
}
jQuery( this.context ).off( types, this.selector || "**", fn );
return this;
};
// Turn global events into document-triggered events
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
if ( !elem && !rajaxEvent.test( event ) ) {
migrateWarn( "Global events are undocumented and deprecated" );
}
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
};
jQuery.each( ajaxEvents.split("|"),
function( _, name ) {
jQuery.event.special[ name ] = {
setup: function() {
var elem = this;
// The document needs no shimming; must be !== for oldIE
if ( elem !== document ) {
jQuery.event.add( document, name + "." + jQuery.guid, function() {
jQuery.event.trigger( name, null, elem, true );
});
jQuery._data( this, name, jQuery.guid++ );
}
return false;
},
teardown: function() {
if ( this !== document ) {
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
}
return false;
}
};
}
);
})( jQuery, window );
@@ -0,0 +1,113 @@
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2006, 2014 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD (Register as an anonymous module)
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (arguments.length > 1 && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {},
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
cookies = document.cookie ? document.cookie.split('; ') : [],
i = 0,
l = cookies.length;
for (; i < l; i++) {
var parts = cookies[i].split('='),
name = decode(parts.shift()),
cookie = parts.join('=');
if (key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));
@@ -0,0 +1,205 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});
/*
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
@@ -0,0 +1,46 @@
/*parsed HTML*/
$(function () {
$("[data-equal-group]").each(function () {
$(this).contents().wrapAll("<div class='box_inner'></div>");
})
})
/*add event*/
$(window).bind("resize", height_handler).bind("load", height_handler)
function height_handler() {
var groups = [];
$("[data-equal-group]").each(function () {
var g = $(this).data('equal-group');
if (!groups[g]) {
groups[g] = [];
}
groups[g].push(this);
});
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
if(width > 767){
$.each(groups, function () {
$(this).equalHeights();
})
}else{
$.each(groups, function () {
$(this).css('height', 'auto');
})
}
}
/*glob function*/
(function ($) {
$.fn.equalHeights = function (minHeight, maxHeight) {
tallest = (minHeight) ? minHeight : 0;
this.each(function () {
if ($(">.box_inner", this).outerHeight() > tallest) {
tallest = $(">.box_inner", this).outerHeight()
}
});
if ((maxHeight) && tallest > maxHeight) tallest = maxHeight;
return this.each(function () {
$(this).height(tallest)
})
}
})(jQuery)
@@ -0,0 +1,122 @@
/*!
* Buttons helper for fancyBox
* version: 1.0.5 (Mon, 15 Oct 2012)
* @requires fancyBox v2.0 or later
*
* Usage:
* $(".fancybox").fancybox({
* helpers : {
* buttons: {
* position : 'top'
* }
* }
* });
*
*/
(function ($) {
//Shortcut for fancyBox object
var F = $.fancybox;
//Add helper object
F.helpers.buttons = {
defaults : {
skipSingle : false, // disables if gallery contains single image
position : 'top', // 'top' or 'bottom'
tpl : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
},
list : null,
buttons: null,
beforeLoad: function (opts, obj) {
//Remove self if gallery do not have at least two items
if (opts.skipSingle && obj.group.length < 2) {
obj.helpers.buttons = false;
obj.closeBtn = true;
return;
}
//Increase top margin to give space for buttons
obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
},
onPlayStart: function () {
if (this.buttons) {
this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
}
},
onPlayEnd: function () {
if (this.buttons) {
this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
}
},
afterShow: function (opts, obj) {
var buttons = this.buttons;
if (!buttons) {
this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
buttons = {
prev : this.list.find('.btnPrev').click( F.prev ),
next : this.list.find('.btnNext').click( F.next ),
play : this.list.find('.btnPlay').click( F.play ),
toggle : this.list.find('.btnToggle').click( F.toggle ),
close : this.list.find('.btnClose').click( F.close )
}
}
//Prev
if (obj.index > 0 || obj.loop) {
buttons.prev.removeClass('btnDisabled');
} else {
buttons.prev.addClass('btnDisabled');
}
//Next / Play
if (obj.loop || obj.index < obj.group.length - 1) {
buttons.next.removeClass('btnDisabled');
buttons.play.removeClass('btnDisabled');
} else {
buttons.next.addClass('btnDisabled');
buttons.play.addClass('btnDisabled');
}
this.buttons = buttons;
this.onUpdate(opts, obj);
},
onUpdate: function (opts, obj) {
var toggle;
if (!this.buttons) {
return;
}
toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
//Size toggle button
if (obj.canShrink) {
toggle.addClass('btnToggleOn');
} else if (!obj.canExpand) {
toggle.addClass('btnDisabled');
}
},
beforeClose: function () {
if (this.list) {
this.list.remove();
}
this.list = null;
this.buttons = null;
}
};
}(jQuery));
@@ -0,0 +1,199 @@
/*!
* Media helper for fancyBox
* version: 1.0.6 (Fri, 14 Jun 2013)
* @requires fancyBox v2.0 or later
*
* Usage:
* $(".fancybox").fancybox({
* helpers : {
* media: true
* }
* });
*
* Set custom URL parameters:
* $(".fancybox").fancybox({
* helpers : {
* media: {
* youtube : {
* params : {
* autoplay : 0
* }
* }
* }
* }
* });
*
* Or:
* $(".fancybox").fancybox({,
* helpers : {
* media: true
* },
* youtube : {
* autoplay: 0
* }
* });
*
* Supports:
*
* Youtube
* http://www.youtube.com/watch?v=opj24KnzrWo
* http://www.youtube.com/embed/opj24KnzrWo
* http://youtu.be/opj24KnzrWo
* http://www.youtube-nocookie.com/embed/opj24KnzrWo
* Vimeo
* http://vimeo.com/40648169
* http://vimeo.com/channels/staffpicks/38843628
* http://vimeo.com/groups/surrealism/videos/36516384
* http://player.vimeo.com/video/45074303
* Metacafe
* http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
* http://www.metacafe.com/watch/7635964/
* Dailymotion
* http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
* Twitvid
* http://twitvid.com/QY7MD
* Twitpic
* http://twitpic.com/7p93st
* Instagram
* http://instagr.am/p/IejkuUGxQn/
* http://instagram.com/p/IejkuUGxQn/
* Google maps
* http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
* http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
* http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
*/
(function ($) {
"use strict";
//Shortcut for fancyBox object
var F = $.fancybox,
format = function( url, rez, params ) {
params = params || '';
if ( $.type( params ) === "object" ) {
params = $.param(params, true);
}
$.each(rez, function(key, value) {
url = url.replace( '$' + key, value || '' );
});
if (params.length) {
url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params;
}
return url;
};
//Add helper object
F.helpers.media = {
defaults : {
youtube : {
matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,
params : {
autoplay : 1,
autohide : 1,
fs : 1,
rel : 0,
hd : 1,
wmode : 'opaque',
enablejsapi : 1
},
type : 'iframe',
url : '//www.youtube.com/embed/$3'
},
vimeo : {
matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,
params : {
autoplay : 1,
hd : 1,
show_title : 1,
show_byline : 1,
show_portrait : 0,
fullscreen : 1
},
type : 'iframe',
url : '//player.vimeo.com/video/$1'
},
metacafe : {
matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,
params : {
autoPlay : 'yes'
},
type : 'swf',
url : function( rez, params, obj ) {
obj.swf.flashVars = 'playerVars=' + $.param( params, true );
return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf';
}
},
dailymotion : {
matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
params : {
additionalInfos : 0,
autoStart : 1
},
type : 'swf',
url : '//www.dailymotion.com/swf/video/$1'
},
twitvid : {
matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,
params : {
autoplay : 0
},
type : 'iframe',
url : '//www.twitvid.com/embed.php?guid=$1'
},
twitpic : {
matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,
type : 'image',
url : '//twitpic.com/show/full/$1/'
},
instagram : {
matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
type : 'image',
url : '//$1/p/$2/media/?size=l'
},
google_maps : {
matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
type : 'iframe',
url : function( rez ) {
return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
}
}
},
beforeLoad : function(opts, obj) {
var url = obj.href || '',
type = false,
what,
item,
rez,
params;
for (what in opts) {
if (opts.hasOwnProperty(what)) {
item = opts[ what ];
rez = url.match( item.matcher );
if (rez) {
type = item.type;
params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null));
url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params );
break;
}
}
}
if (type) {
obj.href = url;
obj.type = type;
obj.autoHeight = false;
}
}
};
}(jQuery));
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.6
*
* Requires: 1.2.2+
*/
(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)
@@ -0,0 +1,138 @@
/*
* RD-Google Map - v0.1
* Easy as hell Google Map Api Jquery plugin.
*
* Made by Evgeniy Gusarov (Stmechanus || Diversant)
*
* Under MIT License
*/
;
(function ($) {
'use strict'
var def_settings = {
cntClass: 'map',
mapClass: 'map_model',
locationsClass: 'map_locations',
marker: {
basic: 'images/gmap_marker.png',
active: 'images/gmap_marker_active.png'
},
styles: []
},
defaults = {
map: {
x: -73.9924068,
y: 40.646197,
zoom: 14
},
locations: []
};
var getLocations = function ($map, settings) {
var $locations = $map.parent().find('.' + settings.locationsClass).find('li');
var locations = [];
if ($locations.length > 0) {
$locations.each(function (i) {
var $loc = $(this);
if ($loc.data('x') && $loc.data('y')) {
locations[i] = {
x: $loc.data('x'),
y: $loc.data('y'),
basic: $loc.data('basic') ? $loc.data('basic') : settings.marker.basic,
active: $loc.data('active') ? $loc.data('active') : settings.marker.active
}
if (!$.trim($loc.html())) {
locations[i].content = false;
} else {
locations[i].content = '<div class="iw-content">' + $loc.html() + '</div>';
}
}
});
}
return locations;
}
$.fn.googleMap = function (settings) {
settings = $.extend(true, {}, def_settings, settings);
$(this).each(function () {
var $this = $(this);
var options = $.extend(
true, {}, defaults,
{
map: {
x: $this.data('x'),
y: $this.data('y'),
zoom: $this.data('zoom')
},
locations: getLocations($this, settings)
}
);
var map = new google.maps.Map(this, {
center: new google.maps.LatLng(
parseFloat(options.map.y),
parseFloat(options.map.x)
),
scrollwheel: false,
styles: settings.styles,
zoom: options.map.zoom
}),
infowindow = new google.maps.InfoWindow(),
markers = [];
for (var i in options.locations) {
markers[i] = new google.maps.Marker(
{
position: new google.maps.LatLng(
parseFloat(options.locations[i].y),
parseFloat(options.locations[i].x)),
map: map,
icon: options.locations[i].basic,
index: i
}
);
if (options.locations[i].content) {
google.maps.event.addListener(markers[i], 'click', function () {
for (var j in markers) {
markers[j].setIcon(options.locations[j].basic);
}
infowindow.setContent(options.locations[this.index].content);
infowindow.open(map, this);
$('.gm-style-iw').parent().parent().addClass("gm-wrapper");
this.setIcon(options.locations[this.index].active);
});
google.maps.event.addListener(infowindow, 'closeclick', function () {
for (var j in markers) {
markers[j].setIcon(options.locations[j].basic);
}
});
}
}
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(new google.maps.LatLng(
parseFloat(options.map.y),
parseFloat(options.map.x)
));
});
});
};
})(jQuery);
@@ -0,0 +1,262 @@
/*
* Author: Evgeniy Gusarov StMechanus (Diversant)
* Under the MIT License
*
* Version: 1.0.1
*
*/
;
(function ($) {
var settings = {
cntClass: 'rd-mobilemenu',
menuClass: 'rd-mobilemenu_ul',
submenuClass: 'rd-mobilemenu_submenu',
panelClass: 'rd-mobilepanel',
toggleClass: 'rd-mobilepanel_toggle',
titleClass: 'rd-mobilepanel_title'
},
lastY, dir;
var RDMobileMenu = function (element, options) {
this.options = options;
this.$source = $(element);
};
RDMobileMenu.prototype = {
init: function () {
var nav = this;
nav.createDOM();
nav.createListeners();
},
createDOM: function () {
var nav = this;
$('body')
.append($('<div/>', {
'class': settings.cntClass
}).append(nav.createNavDOM()))
.append($('<div/>', {
'class': settings.panelClass
})
.append($('<button/>', {
'class': settings.toggleClass
}).append($('<span/>')))
.append($('<h2/>', {
'class': settings.titleClass,
'text': document.title
})));
},
createNavDOM: function () {
var nav = this;
var menu = $('<ul>', {'class': settings.menuClass});
var li = nav.$source.children();
for (var i = 0; i < li.length; i++) {
var o = li[i].children,
item = null;
for (var j = 0; j < o.length; j++) {
if (o[j].tagName) {
if (!item) {
item = document.createElement('li');
if (li[i].className.indexOf('active') > -1) {
item.className = 'active';
}
}
switch (o[j].tagName.toLowerCase()) {
case 'a':
var link = o[j].cloneNode(true);
item.appendChild(link);
break;
case 'ul':
var submenu = o[j].cloneNode(true);
submenu.className = settings.submenuClass;
$(submenu).css({"display": "none"});
item.appendChild(submenu);
$(item).find('> a')
.each(function () {
$this = $(this);
$this.addClass('rd-with-ul')
.append($('<span/>', {class: 'rd-submenu-toggle'}))
.find('.rd-submenu-toggle')
.on('click', function (e) {
e.preventDefault();
$this = $(this).parent();
if ($this.hasClass('rd-with-ul') && !$this.hasClass('active')) {
$('.rd-with-ul').removeClass('active');
var submenu = $this.addClass('active').parent().find('.' + settings.submenuClass);
submenu.stop().slideDown();
$('.' + settings.submenuClass).not(submenu).stop().slideUp();
} else {
var submenu = $this.removeClass('active').parent().find('.' + settings.submenuClass);
submenu.stop().slideUp();
}
});
});
break;
default:
break;
}
}
}
if (item) {
menu.append(item);
}
}
return menu;
},
createListeners: function () {
var nav = this;
nav.createToggleListener();
nav.createResizeListener();
},
createToggleListener: function () {
var nav = this,
type;
if (nav.isMobile()){
type = 'touchstart';
}else{
type = 'click';
}
$('body').delegate('.' + settings.toggleClass, type, function () {
var o = $('.' + settings.cntClass);
$(this).toggleClass('active');
if (o.hasClass('active')) {
$(this).removeClass('active');
o.removeClass('active');
$('body').undelegate('*', 'mousewheel', nav.scroll);
$('body').undelegate('*', 'touchmove', nav.scroll);
$('body').undelegate('*', 'touchend', nav.touchend);
$('body').undelegate('*', 'touchstart', nav.close);
$('body').undelegate('*:not(.' + settings.toggleClass + ' span)', 'click', nav.close);
} else {
$(this).addClass('active');
o.addClass('active');
$('body').delegate('*', 'mousewheel', nav.scroll);
$('body').delegate('*', 'touchmove', nav.scroll);
$('body').delegate('*', 'touchend', nav.touchend);
$('body').delegate('*', 'touchstart', {type: type}, nav.close);
$('body').delegate('*:not(.' + settings.toggleClass + ' span)', 'click', {type: type}, nav.close);
}
});
},
createResizeListener: function () {
var nav = this;
$(window).on('resize', function () {
var o = $('.' + settings.cntClass);
if (o.css('display') == 'none') {
o.removeClass('active');
$('.' + settings.toggleClass).removeClass('active');
$('body').undelegate('*', 'mousewheel', nav.scroll);
$('body').undelegate('*', 'touchmove', nav.scroll);
$('body').undelegate('*', 'touchend', nav.touchend);
$('body').undelegate('*', 'touchstart', nav.close);
$('body').undelegate('*:not(.' + settings.toggleClass + ' span)', 'click', nav.close);
}
});
},
scroll: function (e) {
e.preventDefault();
var menu = $('.' + settings.menuClass);
var x = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0].pageX : e.pageX,
y = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0].pageY : e.pageY;
if (
y > menu.offset().top &&
y < (menu.offset().top + menu.outerHeight()) &&
x > menu.offset().left &&
x < (menu.offset().left + menu.outerWidth())
) {
var delta = 0;
if (e.originalEvent.targetTouches) {
if (!lastY) lastY = y;
delta = (lastY - y);
lastY = y;
dir = delta > 0;
} else {
delta = (e.originalEvent.wheelDelta || -e.originalEvent.detail) * (-50)
}
menu.stop().scrollTop(menu.scrollTop() + delta);
}
return false;
},
touchend: function (e) {
var menu = $('.' + settings.menuClass);
menu.stop().animate({
scrollTop: menu.scrollTop() + (dir ? 100 : -100)
}, 3000, 'easeOutQuint');
lastY = undefined;
},
close: function (e) {
if (!e.originalEvent) {
return;
}
var menu = $('.' + settings.menuClass);
var x = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0].pageX : e.pageX,
y = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0].pageY : e.pageY;
if (!(
y > menu.offset().top &&
y < (menu.offset().top + menu.outerHeight()) &&
x > menu.offset().left &&
x < (menu.offset().left + menu.outerWidth())
)
) {
$('.' + settings.toggleClass).trigger(e.data.type);
}
},
isMobile: function () {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
};
$.fn.rdparallax = function (option) {
var o = this;
if (o.length) {
new RDMobileMenu(o[0]).init();
}
return o;
};
window.RDMobilemenu_autoinit = function (selector) {
var o = $(selector);
if (o.length) {
new RDMobileMenu(o[0]).init();
}
};
})(jQuery);
$(document).ready(function () {
RDMobilemenu_autoinit('[data-type="navbar"]');
});
@@ -0,0 +1,299 @@
/*
* Author: Evgeniy Gusarov StMechanus (Diversant)
* Under the MIT License
*
* Version: 2.0.1
*
*/
;
(function ($) {
var RDParallax = function (element, options) {
this.options = options;
this.settings = {
'imageClass': 'parallax_image',
'patternClass': 'parallax_pattern',
'contentClass': 'parallax_cnt',
'wrapClass': 'parallax'
}
this.$wrap = $(element);
this.$image = $.noop();
};
RDParallax.prototype = {
init: function () {
var parallax = this;
parallax.isInit = true;
parallax.createDOM();
parallax.blur();
parallax.createListeners();
},
createDOM: function () {
var parallax = this;
parallax
.$wrap
.addClass(parallax.settings.wrapClass)
.wrapInner($('<div/>', {
'class': parallax.settings.contentClass
}))
.prepend($('<div/>', {
'class': (parallax.options.pattern ? parallax.settings.patternClass : parallax.settings.imageClass)
}).css({
'background-image': 'url(' + parallax.options.url + ')',
'background-color': parallax.options.color
}));
parallax.$image = parallax.options.pattern ? parallax.$wrap.find('.' + parallax.settings.patternClass) : parallax.$wrap.find('.' + parallax.settings.imageClass);
},
createListeners: function () {
this.createResizeListener();
this.createScrollListener();
},
createScrollListener: function () {
var parallax = this;
if (parallax.isMobile()) {
if (!parallax.options.mobile) {
return;
}
}
$(window).bind('touchstart', function () {
parallax.isTouched = true;
});
$(window).bind('touchend', function () {
if(parallax.timer){
clearTimeout(parallax.timer);
}
parallax.timer = setTimeout(function () {
parallax.isTouched = false;
}, 1200);
});
$(window).bind('scroll', function () {
parallax.move();
});
parallax.move();
},
createResizeListener: function () {
var parallax = this;
if (parallax.isMobile()) {
if (!parallax.options.mobile) {
return;
}
}
if (!parallax.isMobile()) {
$(window).bind('resize', function () {
parallax.resize();
});
}
$(window).bind('orientationchange', function () {
setTimeout(function () {
parallax.resize();
}, 300);
});
parallax.resize();
},
move: function () {
var parallax = this;
if (!parallax.isVisible()) {
return;
}
if (parallax.isMobile()) {
if (!parallax.options.mobile) {
return;
}
}
var st = $(window).scrollTop(),
off = parallax.$wrap.offset().top,
wh = $(window).height(),
h = parallax.$wrap.outerHeight(),
ph = parallax.$image.height();
var speed = parallax.options.speed;
if (speed < 0) {
speed = 0;
}
if (speed > 1) {
speed = 1;
}
var step = (st - (off - wh)) / ((off + h) - (off - wh)) * speed;
if (parallax.options.direction == 'normal') {
var pos = step * (h - ph);
} else {
var pos = (1 - step) * (h - ph);
}
if (parallax.isIE() && parallax.ieVersion() <= 10) {
parallax.$image.css('top', '' + pos + 'px');
}
else if (parallax.isMobile() && parallax.options.mobile) {
if (parallax.isTouched || parallax.isInit) {
parallax.$image.stop().animate({pos: pos}, {
step: function (pos) {
$(this).css('transform', 'translate3d(0, ' + pos + 'px, 0)');
},
duration: parallax.options.duration
}, parallax.options.easing);
parallax.isInit = false;
}
} else {
parallax.$image.css('transform', 'translate3d(0, ' + pos + 'px, 0)');
}
if (parallax.isFirefox() && window.devicePixelRatio < 1){
parallax.$image.css('background-color', '#010101');
setTimeout(function () {
parallax.$image.css('background-color', parallax.options.color);
}, 10);
}
},
resize: function () {
var parallax = this,
h = Math.max($(window).height(), 500);
if(h < parallax.$wrap.outerHeight()){
h = parallax.$wrap.outerHeight() + $(window).height() * parallax.options.speed;
}
parallax.$image.height(h);
setTimeout(function () {
parallax.move();
parallax.blur();
}, 300);
},
blur: function () {
var parallax = this;
if (parallax.options.blur && !parallax.isIE() && !parallax.options.pattern) {
$('<img/>', {src: parallax.options.url}).load(function () {
var dh = parallax.$image.height() / this.height,
dw = parallax.$image.width() / this.width,
blur = Math.floor(Math.max(dh, dw));
if (blur > 2) {
parallax.$image.css({
'filter': 'blur(' + blur + 'px)',
'-webkit-filter': 'blur(' + blur + 'px)'
});
} else {
parallax.$image.css({
'filter': 'blur(' + 0 + 'px)',
'-webkit-filter': 'blur(' + 0 + 'px)'
});
}
});
}
},
isVisible: function () {
var parallax = this,
windowScroll = $(window).scrollTop(),
windowHeight = $(window).height(),
parallaxOffset = parallax.$wrap.offset().top,
parallaxHeight = parallax.$wrap.outerHeight();
return (parallaxOffset + parallaxHeight >= windowScroll) && (parallaxOffset <= windowScroll + windowHeight)
},
isIE: function () {
if (navigator.appVersion.indexOf("MSIE") != -1) {
return true;
}
return false;
},
isMobile: function () {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
},
ieVersion: function () {
return parseFloat(navigator.appVersion.split("MSIE")[1]);
},
isFirefox: function () {
return typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
}
};
$.fn.rdparallax = function (option) {
var element = this.each(function () {
var options = $.extend({}, $.fn.rdparallax.defaults, option);
if (options.url) {
new RDParallax(this, options).init();
} else {
console.error('RD Parallax: data-url is not defined');
}
});
return element;
};
$.fn.rdparallax.defaults = {
speed: 0.4,
direction: 'normal',
blur: false,
mobile: false,
url: false,
pattern: false,
duration: 200,
easing: 'linear',
color: 'inherit'
};
window.RDParallax_autoinit = function (selector) {
$(selector).each(function () {
var options = $.extend({}, $.fn.rdparallax.defaults, {
url: $(this).data('url'),
speed: $(this).data('speed'),
direction: $(this).data('direction'),
blur: $(this).data('blur'),
mobile: $(this).data('mobile'),
pattern: $(this).data('pattern'),
color: $(this).data('color')
});
if (options.url) {
new RDParallax(this, options).init();
} else {
console.error('RD Parallax: data-url is not defined');
}
});
};
})(jQuery);
$(document).ready(function () {
RDParallax_autoinit('.parallax');
});
@@ -0,0 +1,54 @@
/* jquery.simplr.smoothscroll version 1.0 copyright (c) 2012 https://github.com/simov/simplr-smoothscroll licensed under MIT */ ;
(function (e) {
"use strict";
e.srSmoothscroll = function (t) {
var platform = window.navigator.platform;
if ((platform === 'MacIntel' || platform === 'MacPPC')) {
return false
};
var n = e.extend({
step: 170,
speed: 1000,
ease: "swing"
}, t || {});
var r = e(window),
i = e(document),
s = 0,
o = n.step,
u = n.speed,
a = r.height(),
f = navigator.userAgent.indexOf("AppleWebKit") !== -1 ? e("body") : e("html"),
l = false,
rdy = 0;
e("body").mousewheel(function (e, t) {
//Sidenav FIX
var nav;
if ((nav = $('.rd-mobilemenu')).length > 0) {
if (nav.hasClass('active')) {
return true;
}
}
//===========
l = true;
if (rdy == 0) {
rdy = 1;
if (t < 0) s = r.scrollTop() + o;
else s = r.scrollTop() - o;
} else {
if (t < 0) s = s + a >= i.height() ? s : s += o;
else s = s <= 0 ? 0 : s -= o;
}
f.stop().animate({
scrollTop: s
}, u, n.ease, function () {
l = false
});
return false
});
r.on("resize", function (e) {
a = r.height()
}).on("scroll", function (e) {
if (!l) s = r.scrollTop()
})
}
})(jQuery);
+41
View File
@@ -0,0 +1,41 @@
(function($){
$.fn.UItoTop = function(options) {
var defaults = {
text: '',
min: 500,
scrollSpeed: 800,
containerID: 'toTop',
containerClass: 'toTop fa fa-angle-up',
easingType: 'linear'
};
var settings = $.extend(defaults, options);
var containerIDhash = '#' + settings.containerID;
var containerHoverIDHash = '#'+settings.containerHoverID;
$('body').append('<a href="#" id="'+settings.containerID+'" class="'+settings.containerClass+'" >'+settings.text+'</a>');
$(containerIDhash).hide().click(function(){
$('html, body').stop().animate({scrollTop:0}, settings.scrollSpeed, settings.easingType);
$('#'+settings.containerHoverID, this).stop().animate({'opacity': 0 }, settings.inDelay, settings.easingType);
return false;
})
$(window).scroll(function() {
var sd = $(window).scrollTop();
if(typeof document.body.style.maxHeight === "undefined") {
$(containerIDhash).css({
'position': 'absolute',
'top': $(window).scrollTop() + $(window).height() - 50
});
}
if ( sd > settings.min )
$(containerIDhash).stop(true,true).fadeIn(600);
else
$(containerIDhash).fadeOut(800);
});
};
})(jQuery);
+271
View File
@@ -0,0 +1,271 @@
/* ========================================================================
* Bootstrap: modal.js v3.1.1
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// MODAL CLASS DEFINITION
// ======================
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$backdrop =
this.isShown = null
this.scrollbarWidth = 0
if (this.options.remote) {
this.$element
.find('.modal-content')
.load(this.options.remote, $.proxy(function () {
this.$element.trigger('loaded.bs.modal')
}, this))
}
}
Modal.DEFAULTS = {
backdrop: true,
keyboard: true,
show: true
}
Modal.prototype.toggle = function (_relatedTarget) {
return this.isShown ? this.hide() : this.show(_relatedTarget)
}
Modal.prototype.show = function (_relatedTarget) {
var that = this
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
this.isShown = true
this.checkScrollbar()
this.$body.addClass('modal-open')
this.setScrollbar()
this.escape()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus()
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$element.find('.modal-dialog') // wait for modal to slide in
.one($.support.transition.end, function () {
that.$element.trigger('focus').trigger(e)
})
.emulateTransitionEnd(300) :
that.$element.trigger('focus').trigger(e)
})
}
Modal.prototype.hide = function (e) {
if (e) e.preventDefault()
e = $.Event('hide.bs.modal')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false
this.$body.removeClass('modal-open')
this.resetScrollbar()
this.escape()
$(document).off('focusin.bs.modal')
this.$element
.removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal')
$.support.transition && this.$element.hasClass('fade') ?
this.$element
.one($.support.transition.end, $.proxy(this.hideModal, this))
.emulateTransitionEnd(300) :
this.hideModal()
}
Modal.prototype.enforceFocus = function () {
$(document)
.off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
this.$element.trigger('focus')
}
}, this))
}
Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) {
this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
e.which == 27 && this.hide()
}, this))
} else if (!this.isShown) {
this.$element.off('keyup.dismiss.bs.modal')
}
}
Modal.prototype.hideModal = function () {
var that = this
this.$element.hide()
this.backdrop(function () {
that.removeBackdrop()
that.$element.trigger('hidden.bs.modal')
})
}
Modal.prototype.removeBackdrop = function () {
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
Modal.prototype.backdrop = function (callback) {
var animate = this.$element.hasClass('fade') ? 'fade' : ''
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
.appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
if (e.target !== e.currentTarget) return
this.options.backdrop == 'static'
? this.$element[0].focus.call(this.$element[0])
: this.hide.call(this)
}, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
if (!callback) return
doAnimate ?
this.$backdrop
.one($.support.transition.end, callback)
.emulateTransitionEnd(150) :
callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade') ?
this.$backdrop
.one($.support.transition.end, callback)
.emulateTransitionEnd(150) :
callback()
} else if (callback) {
callback()
}
}
Modal.prototype.checkScrollbar = function () {
if (document.body.clientWidth >= window.innerWidth) return
this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
}
Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt(this.$body.css('padding-right') || 0)
if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
}
Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', '')
}
Modal.prototype.measureScrollbar = function () { // thx walsh
var scrollDiv = document.createElement('div')
scrollDiv.className = 'modal-scrollbar-measure'
this.$body.append(scrollDiv)
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
this.$body[0].removeChild(scrollDiv)
return scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
var old = $.fn.modal
$.fn.modal = function (option, _relatedTarget) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.modal')
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](_relatedTarget)
else if (options.show) data.show(_relatedTarget)
})
}
$.fn.modal.Constructor = Modal
// MODAL NO CONFLICT
// =================
$.fn.modal.noConflict = function () {
$.fn.modal = old
return this
}
// MODAL DATA-API
// ==============
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
$target
.modal(option, this)
.one('hide', function () {
$this.is(':visible') && $this.trigger('focus')
})
})
}(jQuery);
@@ -0,0 +1,72 @@
/*
* Pointer Events Polyfill: Adds support for the style attribute "pointer-events: none" to browsers without this feature (namely, IE).
* (c) 2013, Kent Mewhort, licensed under BSD. See LICENSE.txt for details.
*/
// constructor
function PointerEventsPolyfill(options){
// set defaults
this.options = {
selector: '*',
mouseEvents: ['click','dblclick','mousedown','mouseup'],
usePolyfillIf: function(){
if(navigator.appName == 'Microsoft Internet Explorer')
{
var agent = navigator.userAgent;
if (agent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/) != null){
var version = parseFloat( RegExp.$1 );
if(version < 11)
return true;
}
}
return false;
}
};
if(options){
var obj = this;
$.each(options, function(k,v){
obj.options[k] = v;
});
}
if(this.options.usePolyfillIf())
this.register_mouse_events();
}
// singleton initializer
PointerEventsPolyfill.initialize = function(options){
if(PointerEventsPolyfill.singleton == null)
PointerEventsPolyfill.singleton = new PointerEventsPolyfill(options);
return PointerEventsPolyfill.singleton;
};
// handle mouse events w/ support for pointer-events: none
PointerEventsPolyfill.prototype.register_mouse_events = function(){
// register on all elements (and all future elements) matching the selector
$(document).on(this.options.mouseEvents.join(" "), this.options.selector, function(e){
if($(this).css('pointer-events') == 'none'){
// peak at the element below
var origDisplayAttribute = $(this).css('display');
$(this).css('display','none');
var underneathElem = document.elementFromPoint(e.clientX, e.clientY);
if(origDisplayAttribute)
$(this)
.css('display', origDisplayAttribute);
else
$(this).css('display','');
// fire the mouse event on the element below
e.target = underneathElem;
$(underneathElem).trigger(e);
return false;
}
return true;
});
};
jQuery(document).ready(function(){
PointerEventsPolyfill.initialize({});
});
+362
View File
@@ -0,0 +1,362 @@
// Smooth scroll blocking
document.addEventListener( 'DOMContentLoaded', function() {
if ( 'onwheel' in document ) {
window.onwheel = function( event ) {
if( typeof( this.RDSmoothScroll ) !== undefined ) {
try { window.removeEventListener( 'DOMMouseScroll', this.RDSmoothScroll.prototype.onWheel ); } catch( error ) {}
event.stopPropagation();
}
};
} else if ( 'onmousewheel' in document ) {
window.onmousewheel= function( event ) {
if( typeof( this.RDSmoothScroll ) !== undefined ) {
try { window.removeEventListener( 'onmousewheel', this.RDSmoothScroll.prototype.onWheel ); } catch( error ) {}
event.stopPropagation();
}
};
}
try { $('body').unmousewheel(); } catch( error ) {}
});
function include(scriptUrl) {
document.write('<script src="' + scriptUrl + '"></script>');
}
function isIE() {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
};
/* cookie.JS
========================================================*/
include('js/jquery.cookie.js');
/* Easing library
========================================================*/
include('js/jquery.easing.1.3.js');
/* PointerEvents
========================================================*/
;
(function ($) {
if(isIE() && isIE() < 11){
include('js/pointer-events.js');
$('html').addClass('lt-ie11');
$(document).ready(function(){
PointerEventsPolyfill.initialize({});
});
}
})(jQuery);
/* Stick up menus
========================================================*/
;
(function ($) {
var o = $('html');
if (o.hasClass('desktop')) {
include('js/tmstickup.js');
$(document).ready(function () {
$('#stuck_container').TMStickUp({})
});
}
})(jQuery);
/* ToTop
========================================================*/
;
(function ($) {
var o = $('html');
if (o.hasClass('desktop')) {
include('js/jquery.ui.totop.js');
$(document).ready(function () {
$().UItoTop({
easingType: 'easeOutQuart',
containerClass: 'toTop fa fa-angle-up'
});
});
}
})(jQuery);
/* EqualHeights
========================================================*/
;
(function ($) {
var o = $('[data-equal-group]');
if (o.length > 0) {
include('js/jquery.equalheights.js');
}
})(jQuery);
/* SMOOTH SCROLLIG
========================================================*/
;
(function ($) {
var o = $('html');
if (o.hasClass('desktop')) {
include('js/jquery.mousewheel.min.js');
include('js/jquery.simplr.smoothscroll.min.js');
$(document).ready(function () {
$.srSmoothscroll({
step: 150,
speed: 800
});
});
}
})(jQuery);
/* Copyright Year
========================================================*/
;
(function ($) {
var currentYear = (new Date).getFullYear();
$(document).ready(function () {
$("#copyright-year").text((new Date).getFullYear());
});
})(jQuery);
/* Superfish menus
========================================================*/
;
(function ($) {
include('js/superfish.js');
})(jQuery);
/* Navbar
========================================================*/
;
(function ($) {
include('js/jquery.rd-navbar.js');
})(jQuery);
/* Parallax
=============================================*/
;(function ($) {
include('js/jquery.rd-parallax.js');
})(jQuery);
/* FancyBox
========================================================*/
;(function ($) {
var o = $('.thumb');
if (o.length > 0) {
include('js/jquery.fancybox.js');
include('js/jquery.fancybox-media.js');
include('js/jquery.fancybox-buttons.js');
$(document).ready(function () {
o.fancybox();
});
}
})(jQuery);
/* Google Map
========================================================*/
;
(function ($) {
var o = document.getElementById("google-map");
if (o) {
include('//maps.google.com/maps/api/js?sensor=false');
include('js/jquery.rd-google-map.js');
$(document).ready(function () {
var o = $('#google-map');
if (o.length > 0) {
var styleArray = [
{
"featureType": "administrative",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#444444"
}
]
},
{
"featureType": "administrative.country",
"elementType": "geometry.fill",
"stylers": [
{
"visibility": "off"
},
{
"color": "#fc6e6e"
}
]
},
{
"featureType": "administrative.province",
"elementType": "geometry.fill",
"stylers": [
{
"visibility": "off"
},
{
"hue": "#008aff"
}
]
},
{
"featureType": "landscape",
"elementType": "all",
"stylers": [
{
"color": "#f2f2f2"
}
]
},
{
"featureType": "poi",
"elementType": "all",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "road",
"elementType": "all",
"stylers": [
{
"saturation": -100
},
{
"lightness": 45
}
]
},
{
"featureType": "road.highway",
"elementType": "all",
"stylers": [
{
"visibility": "simplified"
}
]
},
{
"featureType": "road.arterial",
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "transit",
"elementType": "all",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "water",
"elementType": "all",
"stylers": [
{
"color": "#bee0ee"
},
{
"visibility": "on"
}
]
}
]
o.googleMap({
styles: styleArray,
});
}
});
}
})
(jQuery);
/* WOW
========================================================*/
;
(function ($) {
var o = $('html');
if ((navigator.userAgent.toLowerCase().indexOf('msie') == -1 ) || (isIE() && isIE() > 9)) {
if (o.hasClass('desktop')) {
include('js/wow.js');
$(document).ready(function () {
new WOW().init();
});
}
}
})(jQuery);
/* Contact Form
========================================================*/
;
(function ($) {
var o = $('#contact-form');
if (o.length > 0) {
include('js/modal.js');
include('js/TMForm.js');
if($('#contact-form .recaptcha').length > 0){
include('//www.google.com/recaptcha/api/js/recaptcha_ajax.js');
}
}
})(jQuery);
/* Orientation tablet fix
========================================================*/
$(function () {
// IPad/IPhone
var viewportmeta = document.querySelector && document.querySelector('meta[name="viewport"]'),
ua = navigator.userAgent,
gestureStart = function () {
viewportmeta.content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6, initial-scale=1.0";
},
scaleFix = function () {
if (viewportmeta && /iPhone|iPad/.test(ua) && !/Opera Mini/.test(ua)) {
viewportmeta.content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
document.addEventListener("gesturestart", gestureStart, false);
}
};
scaleFix();
// Menu Android
if (window.orientation != undefined) {
var regM = /ipod|ipad|iphone/gi,
result = ua.match(regM);
if (!result) {
$('.sf-menus li').each(function () {
if ($(">ul", this)[0]) {
$(">a", this).toggle(
function () {
return false;
},
function () {
window.location.href = $(this).attr("href");
}
);
}
})
}
}
});
var ua = navigator.userAgent.toLocaleLowerCase(),
regV = /ipod|ipad|iphone/gi,
result = ua.match(regV),
userScale = "";
if (!result) {
userScale = ",user-scalable=0"
}
document.write('<meta name="viewport" content="width=device-width,initial-scale=1.0' + userScale + '">');
@@ -0,0 +1,314 @@
/*
* jQuery Superfish Menu Plugin - v1.7.4
* Copyright (c) 2013 Joel Birch
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function ($, window) {
"use strict";
var methods = (function () {
// private properties and methods go here
var c = {
bcClass: 'sf-breadcrumb',
menuClass: 'sf-js-enabled',
anchorClass: 'sf-with-ul',
menuArrowClass: 'sf-arrows'
},
ios = (function () {
var ios = /iPhone|iPad|iPod/i.test(navigator.userAgent);
if (ios) {
// iOS clicks only bubble as far as body children
$(window).load(function () {
$('body').children().on('click', $.noop);
});
}
return ios;
})(),
wp7 = (function () {
var style = document.documentElement.style;
return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));
})(),
toggleMenuClasses = function ($menu, o) {
var classes = c.menuClass;
if (o.cssArrows) {
classes += ' ' + c.menuArrowClass;
}
$menu.toggleClass(classes);
},
setPathToCurrent = function ($menu, o) {
return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
.addClass(o.hoverClass + ' ' + c.bcClass)
.filter(function () {
return ($(this).children(o.popUpSelector).hide().show().length);
}).removeClass(o.pathClass);
},
toggleAnchorClass = function ($li) {
$li.children('a').toggleClass(c.anchorClass);
},
toggleTouchAction = function ($menu) {
var touchAction = $menu.css('ms-touch-action');
touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
$menu.css('ms-touch-action', touchAction);
},
applyHandlers = function ($menu, o) {
var targets = 'li:has(' + o.popUpSelector + ')';
if ($.fn.hoverIntent && !o.disableHI) {
$menu.hoverIntent(over, out, targets);
}
else {
$menu
.on('mouseenter.superfish', targets, over)
.on('mouseleave.superfish', targets, out);
}
var touchevent = 'MSPointerDown.superfish';
if (!ios) {
touchevent += ' touchend.superfish';
}
if (wp7) {
touchevent += ' mousedown.superfish';
}
$menu
.on('focusin.superfish', 'li', over)
.on('focusout.superfish', 'li', out)
.on(touchevent, 'a', o, touchHandler);
},
touchHandler = function (e) {
var $this = $(this),
$ul = $this.siblings(e.data.popUpSelector);
if ($ul.length > 0 && $ul.is(':hidden')) {
$this.one('click.superfish', false);
if (e.type === 'MSPointerDown') {
$this.trigger('focus');
} else {
$.proxy(over, $this.parent('li'))();
}
}
},
over = function () {
var $this = $(this),
o = getOptions($this);
clearTimeout(o.sfTimer);
$this.siblings().superfish('hide').end().superfish('show');
},
out = function () {
var $this = $(this),
o = getOptions($this);
if (ios) {
$.proxy(close, $this, o)();
}
else {
clearTimeout(o.sfTimer);
o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);
}
},
close = function (o) {
o.retainPath = ($.inArray(this[0], o.$path) > -1);
this.superfish('hide');
if (!this.parents('.' + o.hoverClass).length) {
o.onIdle.call(getMenu(this));
if (o.$path.length) {
$.proxy(over, o.$path)();
}
}
},
getMenu = function ($el) {
return $el.closest('.' + c.menuClass);
},
getOptions = function ($el) {
return getMenu($el).data('sf-options');
},
resizeBg = function () {
if ($(window).width() > 767 && $.fn.superfish.defaults.fakeBg ) {
var page = $($.fn.superfish.defaults.fakeBgLimiter);
var obj = $('.sub-menu');
var offset = $(page).offset();
var x = offset.left;
var x1 = $(obj).offset().left;
var width = $(page).width();
$('.fake-bg').css(
{
left: (x - x1),
width: width
}
);
}
};
return {
// public methods
hide: function (instant) {
if (this.length) {
var $this = this,
o = getOptions($this);
if (!o) {
return this;
}
var not = (o.retainPath === true) ? o.$path : '',
$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
speed = o.speedOut;
if (instant) {
$ul.show();
speed = 0;
}
o.retainPath = false;
o.onBeforeHide.call($ul);
$ul.children('li').css({opacity: 0});
$ul.stop(true, true).animate(o.animationOut, {
duration: speed,
complete: function () {
var $this = $(this);
o.onHide.call($this);
}
});
}
return this;
},
show: function () {
var o = getOptions(this);
if (!o) {
return this;
}
var $this = this.addClass(o.hoverClass),
$ul = $this.children(o.popUpSelector);
o.onBeforeShow.call($ul);
$ul.stop(true, true).animate(o.animation, {
duration: o.speed,
step: function () {
if ($(this).css('display') != 'none') {
resizeBg();
}
},
complete: function () {
o.onShow.call($ul);
$ul.children('li').animate({opacity: 1}, 'normal');
}
});
return this;
},
destroy: function () {
return this.each(function () {
var $this = $(this),
o = $this.data('sf-options'),
$hasPopUp;
if (!o) {
return false;
}
$hasPopUp = $this.find(o.popUpSelector).parent('li');
clearTimeout(o.sfTimer);
toggleMenuClasses($this, o);
toggleAnchorClass($hasPopUp);
toggleTouchAction($this);
// remove event handlers
$this.off('.superfish').off('.hoverIntent');
// clear animation's inline display style
$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {
return style.replace(/display[^;]+;?/g, '');
});
// reset 'current' path classes
o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
o.onDestroy.call($this);
$this.removeData('sf-options');
});
},
init: function (op) {
if ($.fn.superfish.defaults.fakeBg) {
$(window).on('resize', resizeBg);
$(window).on('orientationchange', resizeBg);
$('.sub-menu').prepend('<div class="fake-bg"></div>');
resizeBg();
}
return this.each(function () {
var $this = $(this);
if ($this.data('sf-options')) {
return false;
}
var o = $.extend({}, $.fn.superfish.defaults, op),
$hasPopUp = $this.find(o.popUpSelector).parent('li');
o.$path = setPathToCurrent($this, o);
$this.data('sf-options', o);
toggleMenuClasses($this, o);
toggleAnchorClass($hasPopUp);
toggleTouchAction($this);
applyHandlers($this, o);
$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
o.onInit.call(this);
});
}
};
})();
$.fn.superfish = function (method, args) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
}
else {
return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish');
}
};
$.fn.superfish.defaults = {
popUpSelector: 'ul,.sf-mega', // within menus context
hoverClass: 'sfHover',
pathClass: 'overrideThisToUse',
fakeBg: false,
fakeBgLimiter: '.page',
pathLevels: 1,
delay: 800,
animation: {height: 'show'},
animationOut: {height: 'hide'},
speed: 'normal',
speedOut: 'fast',
cssArrows: true,
disableHI: false,
onInit: $.noop,
onBeforeShow: $.noop,
onShow: $.noop,
onBeforeHide: $.noop,
onHide: $.noop,
onIdle: $.noop,
onDestroy: $.noop
};
// soon to be deprecated
$.fn.extend({
hideSuperfishUl: methods.hide,
showSuperfishUl: methods.show
});
})(jQuery, window);
$(window).load(function () {
$('.sf-menu').superfish();
});
@@ -0,0 +1,94 @@
(function($,undefined){
var
def={
stuckClass:'isStuck'
}
,doc=$(document),anim = false;
$.fn.TMStickUp=function(opt){
opt=$.extend(true,{},def,opt)
$(this).each(function(){
var $this=$(this)
,posY//=$this.offset().top+$this.outerHeight()
,isStuck=false
,clone=$this.clone().appendTo($this.parent()).addClass(opt.stuckClass)
,height//=$this.outerHeight()
,stuckedHeight=clone.outerHeight()
,opened//=$.cookie&&$.cookie('panel1')==='opened'
,tmr
$(window).resize(function(){
clearTimeout(tmr)
clone.css({top:isStuck?0:-stuckedHeight,visibility:isStuck?'visible':'hidden'})
tmr=setTimeout(function(){
posY=$this.offset().top//+$this.outerHeight()
height=$this.outerHeight()
stuckedHeight=clone.outerHeight()
opened=$.cookie&&$.cookie('panel1')==='opened'
clone.css({top:isStuck?0:-stuckedHeight})
},40)
}).resize()
clone.css({
position:'fixed'
,width:'100%'
})
$this
.on('rePosition',function(e,d){
if(isStuck)
clone.animate({marginTop:d},{easing:'linear'})
if(d===0)
opened=false
else
opened=true
})
doc
.on('scroll',function(){
var scrollTop=doc.scrollTop()
if(scrollTop>=posY&&!isStuck){
clone
.stop()
.css({visibility:'visible'})
.animate({
top:0
,marginTop:opened?50:0
},{
})
isStuck=true
}
if(scrollTop<posY+height&&isStuck){
$('.sf-menu ul').css('display', 'none');
var sf = $('.search-form');
if(sf.length > 0){
sf.find('input').blur();
}
clone
.stop()
.animate({
top:-stuckedHeight
,marginTop:0
},{
duration:200
,complete:function(){
clone.css({visibility:'hidden'})
}
});
isStuck=false;
}
})
.trigger('scroll')
})
}
})(jQuery)
+388
View File
@@ -0,0 +1,388 @@
(function() {
var MutationObserver, Util, WeakMap,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Util = (function() {
function Util() {}
Util.prototype.extend = function(custom, defaults) {
var key, value;
for (key in custom) {
value = custom[key];
if (value != null) {
defaults[key] = value;
}
}
return defaults;
};
Util.prototype.isMobile = function(agent) {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
};
return Util;
})();
WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {
function WeakMap() {
this.keys = [];
this.values = [];
}
WeakMap.prototype.get = function(key) {
var i, item, _i, _len, _ref;
_ref = this.keys;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
item = _ref[i];
if (item === key) {
return this.values[i];
}
}
};
WeakMap.prototype.set = function(key, value) {
var i, item, _i, _len, _ref;
_ref = this.keys;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
item = _ref[i];
if (item === key) {
this.values[i] = value;
return;
}
}
this.keys.push(key);
return this.values.push(value);
};
return WeakMap;
})());
MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {
function MutationObserver() {
console.warn('MutationObserver is not supported by your browser.');
console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
}
MutationObserver.notSupported = true;
MutationObserver.prototype.observe = function() {};
return MutationObserver;
})());
this.WOW = (function() {
WOW.prototype.defaults = {
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true,
live: true
};
function WOW(options) {
if (options == null) {
options = {};
}
this.scrollCallback = __bind(this.scrollCallback, this);
this.scrollHandler = __bind(this.scrollHandler, this);
this.start = __bind(this.start, this);
this.scrolled = true;
this.config = this.util().extend(options, this.defaults);
this.animationNameCache = new WeakMap();
}
WOW.prototype.init = function() {
var _ref;
this.element = window.document.documentElement;
if ((_ref = document.readyState) === "interactive" || _ref === "complete") {
this.start();
} else {
document.addEventListener('DOMContentLoaded', this.start);
}
return this.finished = [];
};
WOW.prototype.start = function() {
var box, _i, _len, _ref;
this.stopped = false;
this.boxes = this.element.getElementsByClassName(this.config.boxClass);
this.all = (function() {
var _i, _len, _ref, _results;
_ref = this.boxes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
_results.push(box);
}
return _results;
}).call(this);
if (this.boxes.length) {
if (this.disabled()) {
this.resetStyle();
} else {
_ref = this.boxes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
this.applyStyle(box, true);
}
window.addEventListener('scroll', this.scrollHandler, false);
window.addEventListener('resize', this.scrollHandler, false);
this.interval = setInterval(this.scrollCallback, 50);
}
}
if (this.config.live) {
return new MutationObserver((function(_this) {
return function(records) {
var node, record, _j, _len1, _results;
_results = [];
for (_j = 0, _len1 = records.length; _j < _len1; _j++) {
record = records[_j];
_results.push((function() {
var _k, _len2, _ref1, _results1;
_ref1 = record.addedNodes || [];
_results1 = [];
for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {
node = _ref1[_k];
_results1.push(this.doSync(node));
}
return _results1;
}).call(_this));
}
return _results;
};
})(this)).observe(document.body, {
childList: true,
subtree: true
});
}
};
WOW.prototype.stop = function() {
this.stopped = true;
window.removeEventListener('scroll', this.scrollHandler, false);
window.removeEventListener('resize', this.scrollHandler, false);
if (this.interval != null) {
return clearInterval(this.interval);
}
};
WOW.prototype.sync = function(element) {
if (MutationObserver.notSupported) {
return this.doSync(this.element);
}
};
WOW.prototype.doSync = function(element) {
var box, _i, _len, _ref, _results;
if (!this.stopped) {
element || (element = this.element);
element = element.parentNode || element;
_ref = element.getElementsByClassName(this.config.boxClass);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
if (__indexOf.call(this.all, box) < 0) {
this.applyStyle(box, true);
this.boxes.push(box);
this.all.push(box);
_results.push(this.scrolled = true);
} else {
_results.push(void 0);
}
}
return _results;
}
};
WOW.prototype.show = function(box) {
this.applyStyle(box);
return box.className = "" + box.className + " " + this.config.animateClass;
};
WOW.prototype.applyStyle = function(box, hidden) {
var delay, duration, iteration;
duration = box.getAttribute('data-wow-duration');
delay = box.getAttribute('data-wow-delay');
iteration = box.getAttribute('data-wow-iteration');
return this.animate((function(_this) {
return function() {
return _this.customStyle(box, hidden, duration, delay, iteration);
};
})(this));
};
WOW.prototype.animate = (function() {
if ('requestAnimationFrame' in window) {
return function(callback) {
return window.requestAnimationFrame(callback);
};
} else {
return function(callback) {
return callback();
};
}
})();
WOW.prototype.resetStyle = function() {
var box, _i, _len, _ref, _results;
_ref = this.boxes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
_results.push(box.setAttribute('style', 'visibility: visible;'));
}
return _results;
};
WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {
if (hidden) {
this.cacheAnimationName(box);
}
box.style.visibility = hidden ? 'hidden' : 'visible';
if (duration) {
this.vendorSet(box.style, {
animationDuration: duration
});
}
if (delay) {
this.vendorSet(box.style, {
animationDelay: delay
});
}
if (iteration) {
this.vendorSet(box.style, {
animationIterationCount: iteration
});
}
this.vendorSet(box.style, {
animationName: hidden ? 'none' : this.cachedAnimationName(box)
});
return box;
};
WOW.prototype.vendors = ["moz", "webkit"];
WOW.prototype.vendorSet = function(elem, properties) {
var name, value, vendor, _results;
_results = [];
for (name in properties) {
value = properties[name];
elem["" + name] = value;
_results.push((function() {
var _i, _len, _ref, _results1;
_ref = this.vendors;
_results1 = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
vendor = _ref[_i];
_results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);
}
return _results1;
}).call(this));
}
return _results;
};
WOW.prototype.vendorCSS = function(elem, property) {
var result, style, vendor, _i, _len, _ref;
style = window.getComputedStyle(elem);
result = style.getPropertyCSSValue(property);
_ref = this.vendors;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
vendor = _ref[_i];
result = result || style.getPropertyCSSValue("-" + vendor + "-" + property);
}
return result;
};
WOW.prototype.animationName = function(box) {
var animationName;
try {
animationName = this.vendorCSS(box, 'animation-name').cssText;
} catch (_error) {
animationName = window.getComputedStyle(box).getPropertyValue('animation-name');
}
if (animationName === 'none') {
return '';
} else {
return animationName;
}
};
WOW.prototype.cacheAnimationName = function(box) {
return this.animationNameCache.set(box, this.animationName(box));
};
WOW.prototype.cachedAnimationName = function(box) {
return this.animationNameCache.get(box);
};
WOW.prototype.scrollHandler = function() {
return this.scrolled = true;
};
WOW.prototype.scrollCallback = function() {
var box;
if (this.scrolled) {
this.scrolled = false;
this.boxes = (function() {
var _i, _len, _ref, _results;
_ref = this.boxes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
if (!(box)) {
continue;
}
if (this.isVisible(box)) {
this.show(box);
continue;
}
_results.push(box);
}
return _results;
}).call(this);
if (!(this.boxes.length || this.config.live)) {
return this.stop();
}
}
};
WOW.prototype.offsetTop = function(element) {
var top;
while (element.offsetTop === void 0) {
element = element.parentNode;
}
top = element.offsetTop;
while (element = element.offsetParent) {
top += element.offsetTop;
}
return top;
};
WOW.prototype.isVisible = function(box) {
var bottom, offset, top, viewBottom, viewTop;
offset = box.getAttribute('data-wow-offset') || this.config.offset;
viewTop = window.pageYOffset;
viewBottom = viewTop + this.element.clientHeight - offset;
top = this.offsetTop(box);
bottom = top + box.clientHeight;
return top <= viewBottom && bottom >= viewTop;
};
WOW.prototype.util = function() {
return this._util || (this._util = new Util());
};
WOW.prototype.disabled = function() {
return !this.config.mobile && this.util().isMobile(navigator.userAgent);
};
return WOW;
})();
}).call(this);
@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>UTM analytics · Portal · T.R.B. Painting</title>
<link rel="stylesheet" href="assets/css/ux-hub.css">
</head>
<body class="portal theme-paint">
<div class="proposal-banner">
<div><span class="tag">Proposal mockup</span> &nbsp; T.R.B. Painting — UX examples (not production)</div>
<div><a href="ux-gallery.html">All screens</a> · <a href="pricing.html">Pricing</a></div>
</div>
<div class="portal-shell">
<aside class="portal-sidebar">
<a class="portal-brand" href="portal-dashboard.html">T.R.B. Painting<span>Client portal</span></a>
<nav class="portal-nav">
<div class="nav-section">Overview</div>
<a class="" href="portal-dashboard.html">Dashboard</a>
<a class="" href="portal-leads.html">Leads</a>
<a class="active" href="portal-analytics.html">UTM analytics</a>
<div class="nav-section">Email &amp; SMS</div>
<a class="" href="portal-contacts.html">Mailing list</a>
<a class="" href="portal-campaign.html">Campaigns</a>
<a class="" href="portal-campaign-report.html">Engagement</a>
<div class="nav-section">Direct mail</div>
<a class="" href="portal-postcard-designer.html">Postcard design</a>
<a class="" href="portal-direct-mail.html">Mail campaigns</a>
<div class="nav-section">Blog</div>
<a class="" href="portal-blog.html">Posts</a>
<div class="nav-section">Payments</div>
<a class="" href="portal-invoices.html">Invoices</a>
<div class="nav-section">Social</div>
<a class="" href="portal-social.html">Compose</a>
<a class="" href="portal-social-calendar.html">Calendar</a>
<a class="" href="portal-social-accounts.html">Accounts</a>
<a class="" href="portal-social-ai.html">AI generator</a>
</nav>
</aside>
<div class="portal-main">
<div class="portal-topbar">
<h1>UTM analytics</h1>
<div class="portal-user">Signed in as <strong>Bill</strong> · <a href="portal-login.html">Sign out</a></div>
</div>
<div class="portal-content">
<div class="proposal-note"><strong>UX note:</strong> Included with every client portal — leads by source/campaign over time.</div>
<div class="stat-row">
<div class="stat-card"><div class="label">Leads (30d)</div><div class="value">42</div><div class="delta">+12% vs prior</div></div>
<div class="stat-card"><div class="label">Top source</div><div class="value" style="font-size:18px;margin-top:10px">Google</div><div class="delta">18 leads</div></div>
<div class="stat-card"><div class="label">Top campaign</div><div class="value" style="font-size:18px;margin-top:10px">spring-promo</div><div class="delta">11 leads</div></div>
</div>
<div class="panel">
<div class="panel-h"><h2>Leads by week</h2></div>
<div class="panel-b"><div class="chart-ph"><div class="bar" style="height:40%"></div><div class="bar" style="height:65%"></div><div class="bar" style="height:35%"></div><div class="bar" style="height:80%"></div><div class="bar" style="height:55%"></div><div class="bar" style="height:70%"></div><div class="bar" style="height:90%"></div></div></div>
</div>
<div class="panel">
<div class="panel-h"><h2>By source / campaign</h2></div>
<div class="panel-b" style="padding:0">
<table class="table">
<thead><tr><th>Source</th><th>Campaign</th><th>Leads</th><th>Won</th></tr></thead>
<tbody>
<tr><td>google</td><td>emergency</td><td>12</td><td>3</td></tr>
<tr><td>facebook</td><td>spring-promo</td><td>11</td><td>2</td></tr>
<tr><td>direct</td><td>(none)</td><td>9</td><td>4</td></tr>
<tr><td>postcard</td><td>march-mailer</td><td>6</td><td>1</td></tr>
<tr><td>yelp</td><td>profile</td><td>4</td><td>1</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Blog editor · Portal · T.R.B. Painting</title>
<link rel="stylesheet" href="assets/css/ux-hub.css">
</head>
<body class="portal theme-paint">
<div class="proposal-banner">
<div><span class="tag">Proposal mockup</span> &nbsp; T.R.B. Painting — UX examples (not production)</div>
<div><a href="ux-gallery.html">All screens</a> · <a href="pricing.html">Pricing</a></div>
</div>
<div class="portal-shell">
<aside class="portal-sidebar">
<a class="portal-brand" href="portal-dashboard.html">T.R.B. Painting<span>Client portal</span></a>
<nav class="portal-nav">
<div class="nav-section">Overview</div>
<a class="" href="portal-dashboard.html">Dashboard</a>
<a class="" href="portal-leads.html">Leads</a>
<a class="" href="portal-analytics.html">UTM analytics</a>
<div class="nav-section">Email &amp; SMS</div>
<a class="" href="portal-contacts.html">Mailing list</a>
<a class="" href="portal-campaign.html">Campaigns</a>
<a class="" href="portal-campaign-report.html">Engagement</a>
<div class="nav-section">Direct mail</div>
<a class="" href="portal-postcard-designer.html">Postcard design</a>
<a class="" href="portal-direct-mail.html">Mail campaigns</a>
<div class="nav-section">Blog</div>
<a class="active" href="portal-blog.html">Posts</a>
<div class="nav-section">Payments</div>
<a class="" href="portal-invoices.html">Invoices</a>
<div class="nav-section">Social</div>
<a class="" href="portal-social.html">Compose</a>
<a class="" href="portal-social-calendar.html">Calendar</a>
<a class="" href="portal-social-accounts.html">Accounts</a>
<a class="" href="portal-social-ai.html">AI generator</a>
</nav>
</aside>
<div class="portal-main">
<div class="portal-topbar">
<h1>Blog editor</h1>
<div class="portal-user">Signed in as <strong>Bill</strong> · <a href="portal-login.html">Sign out</a></div>
</div>
<div class="portal-content">
<div class="proposal-note"><strong>UX note:</strong> Create and edit posts; publish or keep as draft.</div>
<div class="panel">
<div class="panel-h"><h2>Edit post</h2>
<div><button class="btn btn-sm btn-ghost" type="button">Save draft</button>
<button class="btn btn-sm btn-primary" type="button">Publish</button></div>
</div>
<div class="panel-b form-grid">
<div class="field"><label>Title</label><input value="Trim painting tips that last"></div>
<div class="field"><label>Slug</label><input value="trim-painting-tips-that-last"></div>
<div class="field"><label>Excerpt</label><textarea style="min-height:60px">Prep and cut-in habits that keep baseboards crisp.</textarea></div>
<div class="field"><label>Body</label><textarea style="min-height:180px">Customers often wait too long. Here's what to watch for…
(Mock editor — production uses a rich text field.)</textarea></div>
</div>
</div>
</div>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Blog list · Portal · T.R.B. Painting</title>
<link rel="stylesheet" href="assets/css/ux-hub.css">
</head>
<body class="portal theme-paint">
<div class="proposal-banner">
<div><span class="tag">Proposal mockup</span> &nbsp; T.R.B. Painting — UX examples (not production)</div>
<div><a href="ux-gallery.html">All screens</a> · <a href="pricing.html">Pricing</a></div>
</div>
<div class="portal-shell">
<aside class="portal-sidebar">
<a class="portal-brand" href="portal-dashboard.html">T.R.B. Painting<span>Client portal</span></a>
<nav class="portal-nav">
<div class="nav-section">Overview</div>
<a class="" href="portal-dashboard.html">Dashboard</a>
<a class="" href="portal-leads.html">Leads</a>
<a class="" href="portal-analytics.html">UTM analytics</a>
<div class="nav-section">Email &amp; SMS</div>
<a class="" href="portal-contacts.html">Mailing list</a>
<a class="" href="portal-campaign.html">Campaigns</a>
<a class="" href="portal-campaign-report.html">Engagement</a>
<div class="nav-section">Direct mail</div>
<a class="" href="portal-postcard-designer.html">Postcard design</a>
<a class="" href="portal-direct-mail.html">Mail campaigns</a>
<div class="nav-section">Blog</div>
<a class="active" href="portal-blog.html">Posts</a>
<div class="nav-section">Payments</div>
<a class="" href="portal-invoices.html">Invoices</a>
<div class="nav-section">Social</div>
<a class="" href="portal-social.html">Compose</a>
<a class="" href="portal-social-calendar.html">Calendar</a>
<a class="" href="portal-social-accounts.html">Accounts</a>
<a class="" href="portal-social-ai.html">AI generator</a>
</nav>
</aside>
<div class="portal-main">
<div class="portal-topbar">
<h1>Blog list</h1>
<div class="portal-user">Signed in as <strong>Bill</strong> · <a href="portal-login.html">Sign out</a></div>
</div>
<div class="portal-content">
<div class="proposal-note"><strong>UX note:</strong> Client manages drafts and published posts.</div>
<div class="panel">
<div class="panel-h"><h2>Blog posts</h2><a class="btn btn-sm btn-primary" href="portal-blog-edit.html">New post</a></div>
<div class="panel-b" style="padding:0">
<table class="table"><thead><tr><th>Title</th><th>Date</th><th>Status</th></tr></thead><tbody><tr><td><a href="portal-blog-edit.html">Trim painting tips that last</a></td><td>Mar 10, 2026</td><td><span class="badge badge-won">Published</span></td></tr><tr><td><a href="portal-blog-edit.html">Cabinet paint vs refinish</a></td><td>Feb 20, 2026</td><td><span class="badge badge-draft">Draft</span></td></tr><tr><td><a href="portal-blog-edit.html">Choosing white without regret</a></td><td>Jan 8, 2026</td><td><span class="badge badge-draft">Draft</span></td></tr></tbody></table>
</div>
</div>
</div>
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
</div>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More