Robert 19 hours ago
commit 6e3979f284
  1. 4
      .gitignore
  2. 22
      LICENSE
  3. 4
      README.md
  4. 74
      protected/sql/initGoals.sql
  5. 72
      protected/src/Classes/BaseController.php
  6. 36
      protected/src/Classes/Logic/AccessLevelEnum.php
  7. 43
      protected/src/Classes/Logic/HomeSearch.php
  8. 32
      protected/src/Classes/Logic/IndexAuthContainer.php
  9. 284
      protected/src/Classes/Logic/RegPostLogic.php
  10. 82
      protected/src/Classes/Models/HomeFetchModel.php
  11. 91
      protected/src/Classes/Models/RegPostSaveModel.php
  12. 13
      protected/src/CliScript/test.php
  13. 26
      protected/src/Configs/on_ADotEnvService.php
  14. 17
      protected/src/Configs/on_BDotEnvConfig.php
  15. 11
      protected/src/Configs/on_RemoveRequestVars.php
  16. 23
      protected/src/Configs/on_Sessions.php
  17. 11
      protected/src/Configs/on_SetTimeZone.php
  18. 18
      protected/src/Configs/on_UTF8.php
  19. 13
      protected/src/Configs/on_ViewMode.php
  20. 91
      protected/src/Controllers/App/HomeController.php
  21. 49
      protected/src/Controllers/Data/RegPostController.php
  22. 27
      protected/src/Providers/RouteServiceProvider.php
  23. 20
      protected/src/Services/on_App.php
  24. 22
      protected/src/Services/on_CORs.php
  25. 43
      protected/src/Services/on_Db.php
  26. 14
      protected/src/Services/on_Debugger.php
  27. 39
      protected/src/Services/on_Logger.php
  28. 23
      protected/src/Services/on_Repository.php
  29. 32
      protected/src/Services/on_Session_Encryption.php
  30. 22
      protected/src/Services/on_Sessions.php
  31. 38
      protected/src/Services/on_zDB.php
  32. 138
      protected/src/Views/Common/App/Home/Index.php
  33. 102
      protected/src/Views/Common/App/Home/TOS.php
  34. 126
      protected/src/Views/Common/App/Reg/Form.php
  35. 52
      protected/src/Views/OnError/404Page.php
  36. 17
      protected/src/composer.json
  37. 495
      protected/src/composer.lock
  38. 39
      public/assets/uikit/css/components/accordion.almost-flat.css
  39. 2
      public/assets/uikit/css/components/accordion.almost-flat.min.css
  40. 37
      public/assets/uikit/css/components/accordion.css
  41. 39
      public/assets/uikit/css/components/accordion.gradient.css
  42. 2
      public/assets/uikit/css/components/accordion.gradient.min.css
  43. 2
      public/assets/uikit/css/components/accordion.min.css
  44. 52
      public/assets/uikit/css/components/autocomplete.almost-flat.css
  45. 2
      public/assets/uikit/css/components/autocomplete.almost-flat.min.css
  46. 50
      public/assets/uikit/css/components/autocomplete.css
  47. 52
      public/assets/uikit/css/components/autocomplete.gradient.css
  48. 2
      public/assets/uikit/css/components/autocomplete.gradient.min.css
  49. 2
      public/assets/uikit/css/components/autocomplete.min.css
  50. 129
      public/assets/uikit/css/components/datepicker.almost-flat.css
  51. 2
      public/assets/uikit/css/components/datepicker.almost-flat.min.css
  52. 123
      public/assets/uikit/css/components/datepicker.css
  53. 139
      public/assets/uikit/css/components/datepicker.gradient.css
  54. 2
      public/assets/uikit/css/components/datepicker.gradient.min.css
  55. 2
      public/assets/uikit/css/components/datepicker.min.css
  56. 128
      public/assets/uikit/css/components/dotnav.almost-flat.css
  57. 2
      public/assets/uikit/css/components/dotnav.almost-flat.min.css
  58. 124
      public/assets/uikit/css/components/dotnav.css
  59. 128
      public/assets/uikit/css/components/dotnav.gradient.css
  60. 2
      public/assets/uikit/css/components/dotnav.gradient.min.css
  61. 2
      public/assets/uikit/css/components/dotnav.min.css
  62. 78
      public/assets/uikit/css/components/form-advanced.almost-flat.css
  63. 2
      public/assets/uikit/css/components/form-advanced.almost-flat.min.css
  64. 78
      public/assets/uikit/css/components/form-advanced.css
  65. 78
      public/assets/uikit/css/components/form-advanced.gradient.css
  66. 2
      public/assets/uikit/css/components/form-advanced.gradient.min.css
  67. 2
      public/assets/uikit/css/components/form-advanced.min.css
  68. 34
      public/assets/uikit/css/components/form-file.almost-flat.css
  69. 2
      public/assets/uikit/css/components/form-file.almost-flat.min.css
  70. 34
      public/assets/uikit/css/components/form-file.css
  71. 34
      public/assets/uikit/css/components/form-file.gradient.css
  72. 2
      public/assets/uikit/css/components/form-file.gradient.min.css
  73. 2
      public/assets/uikit/css/components/form-file.min.css
  74. 34
      public/assets/uikit/css/components/form-password.almost-flat.css
  75. 2
      public/assets/uikit/css/components/form-password.almost-flat.min.css
  76. 34
      public/assets/uikit/css/components/form-password.css
  77. 34
      public/assets/uikit/css/components/form-password.gradient.css
  78. 2
      public/assets/uikit/css/components/form-password.gradient.min.css
  79. 2
      public/assets/uikit/css/components/form-password.min.css
  80. 35
      public/assets/uikit/css/components/form-select.almost-flat.css
  81. 2
      public/assets/uikit/css/components/form-select.almost-flat.min.css
  82. 35
      public/assets/uikit/css/components/form-select.css
  83. 35
      public/assets/uikit/css/components/form-select.gradient.css
  84. 2
      public/assets/uikit/css/components/form-select.gradient.min.css
  85. 2
      public/assets/uikit/css/components/form-select.min.css
  86. 222
      public/assets/uikit/css/components/htmleditor.almost-flat.css
  87. 2
      public/assets/uikit/css/components/htmleditor.almost-flat.min.css
  88. 164
      public/assets/uikit/css/components/htmleditor.css
  89. 229
      public/assets/uikit/css/components/htmleditor.gradient.css
  90. 2
      public/assets/uikit/css/components/htmleditor.gradient.min.css
  91. 2
      public/assets/uikit/css/components/htmleditor.min.css
  92. 135
      public/assets/uikit/css/components/nestable.almost-flat.css
  93. 2
      public/assets/uikit/css/components/nestable.almost-flat.min.css
  94. 132
      public/assets/uikit/css/components/nestable.css
  95. 139
      public/assets/uikit/css/components/nestable.gradient.css
  96. 2
      public/assets/uikit/css/components/nestable.gradient.min.css
  97. 2
      public/assets/uikit/css/components/nestable.min.css
  98. 98
      public/assets/uikit/css/components/notify.almost-flat.css
  99. 2
      public/assets/uikit/css/components/notify.almost-flat.min.css
  100. 92
      public/assets/uikit/css/components/notify.css
  101. Some files were not shown because too many files have changed in this diff Show More

4
.gitignore vendored

@ -0,0 +1,4 @@
protected/src/IOcornerstone
protected/src/vendor
protected/logs/*.txt
protected/src/.env

@ -0,0 +1,22 @@
The MIT License
Copyright (c) 2010-2026 Robert Strutts
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

@ -0,0 +1,4 @@
# Project IOcornerstone PHP 8.5
Author Robert Strutts
Copyright (c) 2010-2026 Robert Strutts
License MIT

@ -0,0 +1,74 @@
/*
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
/**
* Author: Robert Strutts
* Created: May 27, 2026
*/
CREATE TABLE emails (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email CHAR(254) NOT NULL UNIQUE,
uuid CHAR(26) NOT NULL UNIQUE,
first_name VARCHAR(33) NOT NULL,
last_initial CHAR(1) NOT NULL,
last_name VARCHAR(63) NULL,
is_adult TINYINT UNSIGNED DEFAULT 0,
tos TINYINT UNSIGNED DEFAULT 0,
be_anon TINYINT UNSIGNED DEFAULT 0,
is_active TINYINT UNSIGNED DEFAULT 0,
ip VARBINARY(16) NULL,
is_banned TINYINT UNSIGNED DEFAULT 0,
is_subscribed TINYINT UNSIGNED DEFAULT 0,
send_newsletter TINYINT UNSIGNED DEFAULT 0,
sent_email TINYINT UNSIGNED DEFAULT 0
);
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email_id INT UNSIGNED NOT NULL,
pwd TEXT NOT NULL,
access_level TINYINT UNSIGNED DEFAULT 1
);
CREATE TABLE goals (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
uuid CHAR(26) NOT NULL UNIQUE,
email_id INT UNSIGNED NOT NULL,
title VARCHAR(255) NOT NULL,
description TEXT,
approved TINYINT UNSIGNED DEFAULT 0,
youtube TINYINT UNSIGNED DEFAULT 0
);
CREATE TABLE tags (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
CREATE TABLE goal_tags (
goal_id BIGINT UNSIGNED,
tag_id INT UNSIGNED,
PRIMARY KEY(goal_id, tag_id)
);
CREATE TABLE advice (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
goal_id BIGINT UNSIGNED NOT NULL,
email_id INT UNSIGNED NOT NULL,
content TEXT NOT NULL,
votes INT UNSIGNED DEFAULT 0,
approved TINYINT UNSIGNED DEFAULT 0,
youtube TINYINT UNSIGNED DEFAULT 0
);
CREATE TABLE advice_comments (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
advice_id BIGINT UNSIGNED,
email_id INT UNSIGNED NOT NULL,
content TEXT,
approved TINYINT UNSIGNED DEFAULT 0,
youtube TINYINT UNSIGNED DEFAULT 0
);

@ -0,0 +1,72 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes;
use IOcornerstone\Framework\Http\HttpFactory;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use IOcornerstone\Framework\{
HtmlDocument,
View
};
class BaseController
{
public string $pageOutput = ''; // To keep views working...without Dynamic Variable Error!
public static $params; // To keep Routes working...
private $http;
public $view;
public $html;
protected string $footer = "";
protected string $authors = "";
public function __construct(
public ServerRequestInterface $request
) {
$this->http = new HttpFactory();
$this->view = new View();
$this->html = new HtmlDocument();
// If the child controller has an init() method, call it automatically
if (method_exists($this, 'init')) {
$this->init();
}
}
public function returnResponse(string|array $body, int $status = 200, array $headers = []): ResponseInterface
{
if (is_array($body)) {
if (! in_array("Content-Type", $headers)) {
$headers = ['Content-Type'=>'application/json'];
}
return $this->http->createResponse($status, $headers, json_encode($body));
}
return $this->http->createResponse($status, $headers, $body);
}
public function setFooterAndAuthors()
{
if (defined('\Project\MyPage::MyFooter')) {
$this->footer = \Project\MyPage::MyFooter;
} else {
$this->footer = "";
}
if (defined('\Project\MyPage::MyAuthors')) {
$this->authors = \Project\MyPage::MyAuthors;
} else {
$this->authors = "";
}
$this->html->setFooter($this->footer);
$this->html->setAuthor($this->authors);
}
}

@ -0,0 +1,36 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Logic;
enum AccessLevelEnum: int {
case User = 1;
case Moderator = 2;
case Admin = 3;
public function label(): string {
return match($this) {
self::User => 'User',
self::Moderator => 'Moderator',
self::Admin => 'Admin',
};
}
public function canUseSystem(): bool {
return $this->value >= self::User->value;
}
public function canModerate(): bool {
return $this->value == self::Moderator->value;
}
public function canAdmin(): bool {
return $this->value == self::Admin->value;
}
}

@ -0,0 +1,43 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Logic;
/**
* Description of HomeSearch
*
* @author Robert Strutts
*/
class HomeSearch
{
public static function Tags(): array
{
$a['search'] = $_GET['search'] ?? false;
$a['tag'] = $_GET['tag'] ?? false;
if (empty($a['search'])) {
$a['search'] = false;
}
if (empty($a['tag'])) {
$a['tag'] = false;
}
return $a;
}
public static function MyUUID(): array
{
$a['MyUUID'] = $_GET['g'] ?? false;
return $a;
}
}

@ -0,0 +1,32 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Logic;
/**
* Description of IndexAuthContainer
*
* @author Robert Strutts
*/
class IndexAuthContainer
{
public static function Logins(): string
{
$auth = '<div class="auth-container">';
$loggedin = $_SESSION['email'] ?? false;
if ($loggedin === false) {
$auth .= '<a href="Login.html" class="btn login-btn">Login</a>';
$auth .= '<a href="Register.html" class="btn register-btn">Register</a>';
} else {
$auth .= '<a href="Logout.html" class="btn login-btn">Logout</a>';
}
$auth .= '</div>';
return $auth;
}
}

@ -0,0 +1,284 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Logic;
use \Project\Classes\Models\RegPostSaveModel;
use \IOcornerstone\Framework\Uuids\UuidV7;
use \IOcornerstone\Framework\Configure;
/**
* Description of RegPostLogic
* Verify Email, etc...
* @author Robert Strutts
*/
class RegPostLogic
{
public static function DoSave(): array
{
$errors = [];
$success = false;
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
return $errors;
}
$email = trim($_POST['email'] ?? '');
$first_name = trim($_POST['first_name'] ?? '');
$last_initial = strtoupper(trim($_POST['last_initial'] ?? ''));
$last_name = trim($_POST['last_name'] ?? '');
$is_adult = isset($_POST['is_adult']) ? 1 : 0;
$tos = isset($_POST['tos']) ? 1 : 0;
$be_anon = isset($_POST['be_anon']) ? 1 : 0;
$send_newsletter = isset($_POST['send_newsletter']) ? 1 : 0;
// validation
if (! self::isEmailValid($email)) {
$errors[] = "Invalid email";
}
if (self::isTempEmail($email)) {
$errors[] = "Please do not use Temp email addresses";
}
if (strlen($first_name) < 1 || strlen($first_name) > 33) {
$errors[] = "First name required (1–33 chars)";
}
if (!preg_match('/^[A-Z]$/', $last_initial)) {
$errors[] = "Last initial must be a single letter";
}
if ($tos !== 1) {
$errors[] = "You must accept Terms of Service";
}
$a['email'] = trim($_POST['email'] ?? '');
$a['first_name'] = trim($_POST['first_name'] ?? '');
$a['last_initial'] = strtoupper(trim($_POST['last_initial'] ?? ''));
$a['last_name'] = trim($_POST['last_name'] ?? '');
$a['is_adult'] = isset($_POST['is_adult']) ? 1 : 0;
$a['tos'] = isset($_POST['tos']) ? 1 : 0;
$a['be_anon'] = isset($_POST['be_anon']) ? 1 : 0;
$a['send_newsletter'] = isset($_POST['send_newsletter']) ? 1 : 0;
if (empty($errors)) {
$a['token'] = UuidV7::base32EncodedUuidV7();
$a['ip'] = self::getIPBinary();
$pdo = Configure::get('db');
$model = new RegPostSaveModel($pdo);
$err = $model->SaveData($a);
if ($err['success'] === true) {
return ['success' => true];
}
}
return $errors;
}
private static function isTempEmail(string $email): bool
{
$domain = substr(strrchr($email, "@"), 1);
$tempEmailDomains = [
'mailinator.com',
'guerrillamail.com',
'guerrillamail.net',
'guerrillamail.org',
'guerrillamail.biz',
'10minutemail.com',
'10minutemail.net',
'10minutemail.org',
'throwawaymail.com',
'sharklasers.com',
'grr.la',
'pokemail.net',
'spam4.me',
'bccto.me',
'chacuo.net',
'mailnator.com',
'yopmail.com',
'yopmail.fr',
'yopmail.net',
'cool.fr.nf',
'jetable.com',
'jetable.net',
'jetable.org',
'temp-mail.org',
'temp-mail.net',
'temp-mail.com',
'tempmail.com',
'tempmail.net',
'tempmail.org',
'tempmailizer.com',
'fakeinbox.com',
'fake-mail.net',
'dispostable.com',
'spambox.us',
'spamgourmet.com',
'spamgourmet.net',
'spamgourmet.org',
'trashmail.com',
'trashmail.net',
'trashmail.org',
'wegwerfmail.de',
'wegwerfmail.net',
'wegwerfmail.org',
'mailcatch.com',
'mailmetrash.com',
'mintemail.com',
'mytrashmail.com',
'nospam.thanks',
'one-time.email',
'receivemail.com',
'safetymail.info',
'selfdestructingmail.com',
'sendspamhere.com',
'spamfree24.com',
'spamfree24.net',
'spamfree24.org',
'spamoff.de',
'spamobox.com',
'spamslicer.com',
'tempinbox.com',
'tempmail2.com',
'tempmaildemo.com',
'tempinbox.co.uk',
'tmpemails.com',
'tmpmail.net',
'tmpmail.org',
'tradermail.info',
'trash2009.com',
'trashymail.com',
'tyldd.com',
'uggsrock.com',
'wegwerfmail.com',
'wegwerfmail.info',
'wh4f.org',
'whyspam.me',
'willselfdestruct.com',
'winemaven.info',
'wronghead.com',
'wuzup.net',
'xagloo.com',
'xemaps.com',
'xents.com',
'xmaily.com',
'xoxy.net',
'yep.it',
'yogamaven.com',
'yopmail.com',
'yopmail.fr',
'yopmail.net',
'ypmail.webarnak.fr.eu.org',
'yuurok.com',
'zehnminutenmail.de',
'zippymail.info',
'zoaxe.com',
'zoemail.org',
'tempemail.net',
'mail-temp.com',
'tempalias.com',
'tempemail.co.za',
'tempinbox.co',
'tempmail.eu',
'tempmail.it',
'tempmail.pro',
'temp-mail.de',
'temp-mail.info',
'tempmailaddress.com',
'tempinbox.org',
'temp-mail.io',
'temp-mail.org',
'temp-mail.ru',
'tempmailer.com',
'tempomail.fr',
'temporarily.de',
'temporarioemail.com.br',
'temporary-email.com',
'temporaryemail.net',
'temporaryemail.us',
'temporaryforwarding.com',
'temporaryinbox.com',
'temporarymail.com',
'temporarymail.net',
'temporarymail.org',
'thankyou2010.com',
'thankyou2011.com',
'thisisnotmyrealemail.com',
'throwaway.email',
'throwawayemail.com',
'throwawayemailaddress.com',
'throwawaymail.com',
'throwawaymail.net',
'throwawaymail.org',
'tilien.com',
'tmail.com',
'tmailinator.com',
'tmailservices.com',
'tmmbt.net',
'tmpbox.net',
'tmpemails.com',
'tmpemails.net',
'tmpinbox.com',
'tmpinbox.net',
'tmpmail.com',
'tmpmail.net',
'tmpmail.org'
];
return in_array(strtolower($domain), $tempEmailDomains);
}
private static function isEmailValid(string $email): bool
{
$parts = explode('@', $email);
$ok1 = (count($parts) === 2 &&
strlen($parts[0]) <= 64 &&
strlen($parts[1]) <= 200);
if ($ok1 === false) {
return false;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
$domainPart = $parts[1];
// Validate domain has at least one dot
if (strpos($domainPart, '.') === false || str_contains($domainPart, 'localhost')) {
return false;
}
return true;
}
// helper: get IP (IPv4/IPv6 binary)
private static function getIPBinary()
{
if (empty($_SERVER['REMOTE_ADDR'])) {
return null;
}
$ip = inet_pton($_SERVER['REMOTE_ADDR']);
// inet_pton returns false on invalid input
if ($ip === false) {
return null;
}
$len = strlen($ip);
// Only allow valid sizes (IPv4 = 4, IPv6 = 16)
if ($len !== 4 && $len !== 16) {
return null;
}
return $ip;
}
}

@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Models;
/**
* Description of HomeFetchModel
*
* @author Robert Strutts
*/
class HomeFetchModel
{
public function __construct(private \PDO $pdo)
{
}
public function GetGoals(array $a)
{
// SEARCH + TAG FILTER
$where = [];
$params = [];
if ($a['search'] !== false) {
$where[] = "(g.title LIKE ? OR g.description LIKE ?)";
$params[] = '%' . $a['search'] . '%';
$params[] = '%' . $a['search'] . '%';
}
if ($a['tag'] !== false) {
$where[] = "t.name = ?";
$params[] = $a['tag'];
}
$sql = "SELECT DISTINCT g.id,g.title,g.uuid,g.created_at FROM goals g
LEFT JOIN goal_tags gt ON g.id=gt.goal_id
LEFT JOIN tags t ON gt.tag_id=t.id";
if ($where) {
$sql .= " WHERE " . implode(' AND ', $where) . " AND approved=1";
}
$sql .= " ORDER BY g.created_at DESC";
$stmt = $this->pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
public function GetTags(array $g)
{
$pdo = \IOcornerstone\Framework\Configure::get('db');
$tags=$pdo->prepare("SELECT name FROM tags t JOIN goal_tags gt ON t.id=gt.tag_id WHERE gt.goal_id=?");
return $tags->execute([$g['id']]);
}
public function GetGoal(array $a)
{
$stmt= $this->pdo->prepare("SELECT id,title,description FROM goals WHERE uuid=? AND approved=1");
$stmt->execute([$a['MyUUID']]);
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
public function GetVotes(array $a)
{
$stmt= $this->pdo->prepare("SELECT id,content,votes FROM advice WHERE goal_id=? AND approved=1 ORDER BY votes DESC");
return $stmt->execute([$a['id']]);
}
public function GetComments(array $a)
{
$comments=$this->pdo->prepare("SELECT content FROM advice_comments WHERE advice_id=? AND approved=1");
return $comments->execute([$a['id']]);
}
}

@ -0,0 +1,91 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Classes\Models;
/**
* Description of RegPostSaveModel
*
* @author Robert Strutts
*/
class RegPostSaveModel
{
public function __construct(private \PDO $pdo)
{
}
public function SaveData(array $a): array
{
return ['success'=>true];
$errors = [];
try {
$stmt = $this->pdo->prepare("
INSERT INTO emails (
email,
email_approved_token,
first_name,
last_initial,
last_name,
is_adult,
tos,
be_anon,
ip,
send_newsletter
) VALUES (
:email,
:token,
:first_name,
:last_initial,
:last_name,
:is_adult,
:tos,
:be_anon,
:ip,
:send_newsletter
)
");
$success = $stmt->execute([
':email' => $a['email'],
':token' => $a['token'],
':first_name' => $a['first_name'],
':last_initial' => $a['last_initial'],
':last_name' => $a['last_name'] ?: null,
':is_adult' => $a['is_adult'],
':tos' => $a['tos'],
':be_anon' => $a['be_anon'],
':ip' => $a['ip'],
':send_newsletter' => $a['send_newsletter']
]);
if ($success) {
$hash = password_hash($pwd, PASSWORD_ARGON2ID);
// Add user to user table
}
// TODO: send email with approval token link
// example: https://yoursite.com/verify.php?token=$token
} catch (\PDOException $e) {
$success = false;
if ($e->getCode() == 23000) {
$errors['code'] = "Email already registered";
} else {
$errors['code'] = "Database error";
}
}
$errors['success'] = $success;
return $errors;
}
}

@ -0,0 +1,13 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
define("BaseDir", dirname(__DIR__, 3)); // Project DIR
const IO_CORNERSTONE_PROJECT = BaseDir . DIRECTORY_SEPARATOR . "protected". DIRECTORY_SEPARATOR. "src" . DIRECTORY_SEPARATOR;
const CountFiles = true; // Should files be added to an array for count?
const IO_CORNERSTONE_FRAMEWORK = BaseDir . DIRECTORY_SEPARATOR . "protected" . DIRECTORY_SEPARATOR . "src" . DIRECTORY_SEPARATOR . "IOcornerstone" . DIRECTORY_SEPARATOR;
require_once IO_CORNERSTONE_FRAMEWORK . "Bootstrap.php";

@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
use IOcornerstone\Framework\Registry as Reg;
Reg::get('di')->register('dotenv', function() {
if (! Reg::get('loader')->isLoaded('Dotenv')) {
if (! is_dir(IO_CORNERSTONE_PROJECT . "/vendor/vlucas/phpdotenv/src")) {
die("Please Composer install DotEnv!!");
}
Reg::get('loader')->addNamespace("Dotenv", IO_CORNERSTONE_PROJECT . "/vendor/vlucas/phpdotenv/src");
Reg::get('loader')->addNamespace("PhpOption", IO_CORNERSTONE_PROJECT . "/vendor/phpoption/phpoption/src/PhpOption");
Reg::get('loader')->addNamespace("GrahamCampbell\\ResultType", IO_CORNERSTONE_PROJECT ."/vendor/graham-campbell/result-type/src");
}
});

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
use IOcornerstone\Framework\Registry as Reg;
Reg::get('di')->get('dotenv');
$dotenv = \Dotenv\Dotenv::createImmutable(IO_CORNERSTONE_PROJECT);
$dotenv->load();
$dotenv->required(['DB_HOST', 'DB_USER', 'DB_PASSWORD'])->notEmpty();

@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
unset($_REQUEST); // Request is dangerious as order of Vars is not Known

@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
use IOcornerstone\Framework\Configure as Config;
use IOcornerstone\Framework\Common;
Config::set('sessions', [
'type' => 'cookies', // Session Type: php, files, redis, or cookies
'cookie_name' => 'prj', // If cookies are used name them...
'session_variable' => 'ses_app_', // set session variable name for project
'session_name' => 'main_SESS', // More secure then PHPSESSID
'session_table' => false, // DB PHP Session Table name, false = USE FILES
'session_key' => $_ENV['SESSION_KEY'],
]);
Common::wipe($_ENV['SESSION_KEY']);

@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
date_default_timezone_set('America/Detroit');

@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
// Setup php for working with Unicode data, if possible
if (extension_loaded('mbstring')) {
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
setlocale(LC_ALL, "en_US.UTF-8");
}

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
\IOcornerstone\Framework\Configure::set('viewMode', [
'defaultPaths' => ['Common', 'Default']
]);

@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Controllers\App;
use Psr\Http\Message\ResponseInterface;
use Project\Classes\{
BaseController,
Logic\HomeSearch,
Logic\IndexAuthContainer,
Models\HomeFetchModel
};
use IOcornerstone\Framework\{
BbCodeParser,
Configure,
Security
};
class HomeController extends BaseController
{
public function init()
{
// INIT DB CONFIGS and SERVICES!!!
\IOcornerstone\InitMainDB::doInit();
}
public function Index(): ResponseInterface
{
Security::initSessions();
$pdo = Configure::get('db');
$model = new HomeFetchModel($pdo);
$this->view->setView("App/Home/Index");
$this->view->set("Model", $model);
$inputs = HomeSearch::Tags();
$goals = $model->GetGoals($inputs);
$this->view->set("Goals", $goals);
$auth = IndexAuthContainer::Logins();
$this->view->set("Auth", $auth);
$uid = HomeSearch::MyUUID();
$this->view->set("Uid", $uid);
$bb = new BbCodeParser();
$this->view->set("Bb", $bb);
$myView = $this->view->fetch($this);
return $this->returnResponse($myView);
}
public function Register(): ResponseInterface
{
$this->view->setView("App/Reg/Form");
$this->view->setView("App/Home/TOS");
$myView = $this->view->fetch($this);
$myView .= "</body>" . PHP_EOL . "</html>";
return $this->returnResponse($myView);
}
public function Login(): ResponseInterface
{
Security::initSessions();
return $this->returnResponse("");
}
public function Logout(): ResponseInterface
{
Security::initSessions();
$_SESSION = [];
unset($_SESSION);
session_destroy();
$html = '<html><head><title>Logged Out</title></head><body><h1>Logged Out!</h1></body></html>';
return $this->returnResponse($html);
}
}

@ -0,0 +1,49 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace Project\Controllers\Data;
use Psr\Http\Message\ResponseInterface;
use Project\Classes\BaseController;
use Project\Classes\Logic;
/**
* Description of RegPostController
* Takes and handles User Registration Post Data
*
* @author Robert Strutts
*/
class RegPostController extends BaseController
{
public function init()
{
// INIT DB CONFIGS and SERVICES!!!
\IOcornerstone\InitMainDB::doInit();
}
public function Save(): ResponseInterface
{
// Read raw JSON body
$json = file_get_contents("php://input");
// Convert JSON into PHP array
$arrayOfPost = json_decode($json, true);
$_POST = array_merge($arrayOfPost, $_POST);
$err = Logic\RegPostLogic::DoSave();
$success = $err['success'] ?? false;
if ($success === true) {
return $this->returnResponse(["success"=>true]);
}
if (count($err)) {
return $this->returnResponse(['errors'=>$err], 501);
}
return $this->returnResponse(["success" => false, "message"=>"Bad data"], 502);
}
}

@ -0,0 +1,27 @@
<?php
declare(strict_types = 1);
/**
* @author Robert Strutts
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
namespace Project\Providers;
use IOcornerstone\Framework\Http\Contract\RouterInterface;
/*
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use IOcornerstone\Framework\Http\HttpFactory;
use Project\Controllers as CTRL;
*/
final class RouteServiceProvider
{
public function register(RouterInterface $router): void
{
}
}

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use IOcornerstone\Framework\Registry as Reg;
use IOcornerstone\Framework\Http\App\App;
use Psr\Http\Message\ResponseInterface;
Reg::get('container')->set(App::class, function($c): App
{
return new App();
});

@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use \IOcornerstone\Framework\CORSHandler;
$corsConfig = [
'exact' => [
'http://localhost:8080',
'http://localhost',
],
];
$cors = new CORSHandler($corsConfig);
$cors->handle();
$cors->doPreflight();

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use IOcornerstone\Framework\Configure;
use IOcornerstone\Framework\Common;
class Database
{
public function __construct(
private string $host,
private string $name,
private string $user,
#[\SensitiveParameter] private string $password)
{
}
public function getConnection(): void
{
try {
$dsn = "mysql:host={$this->host};dbname={$this->name}";
$pdo = new \PDO($dsn, $this->user, $this->password, [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]);
} catch (\PDOException $e) {
die('DB Connection failed');
}
Configure::set('db', $pdo);
Common::wipe($_ENV['DB_PASSWORD']);
Common::wipe($this->password);
unset($pdo);
}
}

@ -0,0 +1,14 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use \IOcornerstone\Framework\Configure;
Configure::setKey('security', 'show_dumps', true);

@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use IOcornerstone\Framework\Registry as Reg;
use IOcornerstone\Framework\Middleware\RequestLoggerMiddleware;
use IOcornerstone\Framework\Middleware\ErrorMiddleware;
use IOcornerstone\Framework\Logger;
use Psr\Log\LoggerInterface;
/* Logger binding */
Reg::get('container')->set(LoggerInterface::class, function () {
return new Logger(
filename: getenv('LOG_CHANNEL') ?: 'system',
maxCount: (int)(getenv('LOG_MAX_LINES') ?: 1000),
minLevel: getenv('LOG_LEVEL') ?: null
);
});
/* Middleware binding */
Reg::get('container')->set(RequestLoggerMiddleware::class, function ($c) {
return new RequestLoggerMiddleware(
$c->get(LoggerInterface::class)
);
});
/* Error middleware config */
Reg::get('container')->set(ErrorMiddleware::class, fn ($c) =>
new ErrorMiddleware(
$c->get(LoggerInterface::class),
getenv('APP_ENV') !== 'production'
)
);

@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
class Repository
{
public function __construct(private Database $database)
{
}
public function initDB(): void
{
$this->database->getConnection();
}
}

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
// A more secure class is: \CodeHydrater\services\sodium_storage
use IOcornerstone\Framework\Registry as Reg;
Reg::get('di')->register('session_encryption', function($args) {
try {
if (!\IOcornerstone\Framework\Configure::has('sessions', 'session_key')) {
$testing = new \IOcornerstone\Framework\Services\Encryption();
echo "Here is a Key to use: " . $testing->generate_valid_key();
die("Please assign the config for sessions, session_key!");
}
$enc = new \IOcornerstone\Framework\Services\Encryption(
\IOcornerstone\Framework\Configure::get('sessions', 'session_key')
);
$enc->changeSecurityLevel("lighting"); // Quickest but not secure...
return $enc;
} catch (\Exception $e) {
}
});

@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
use IOcornerstone\Framework\Registry as Reg;
use IOcornerstone\Framework\Configure as Config;
Reg::get('di')->register('sessions', function() {
$running = Reg::get('sessions_started') ?? false;
if ($running === false) {
$options = Config::get('sessions') ?? [];
\IOcornerstone\Framework\SessionManagement::start($options);
Reg::set('sessions_started', true);
}
});

@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
namespace IOcornerstone;
use IOcornerstone\Framework\Registry as Reg;
use IOcornerstone\Database as DB;
use IOcornerstone\Repository as Repo;
class InitMainDB
{
public static function doInit(): void
{
$container = Reg::get('di');
$container->set(DB::class, function () {
return new DB(host: $_ENV['DB_HOST'],
name: $_ENV['DB_NAME'],
user: $_ENV['DB_USER'],
password: $_ENV['DB_PASSWORD'],
);
});
$container->set(REP::class, function () {
$conn = Reg::get('di')->get(DB::class);
return new Repo($conn);
});
$container->get(Repo::class)->initDB();
}
}

@ -0,0 +1,138 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
function end_of_the_line(): void
{
echo "</div>" . PHP_EOL . "</body>" . PHP_EOL . "</html>";
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>StickingToGoals.com</title>
<style>
body {font-family:Arial;background:#f4f6f9;margin:0}
.container {max-width:900px;margin:30px auto;background:#fff;padding:20px;border-radius:10px;box-shadow:0 4px 12px rgba(0,0,0,.1)}
input,textarea{width:100%;padding:10px;margin:8px 0;border-radius:6px;border:1px solid #ccc}
button{background:#4CAF50;color:#fff;border:none;padding:10px;border-radius:6px;cursor:pointer}
button:hover{background:#45a049}
.goal-item{padding:10px;border-bottom:1px solid #eee}
.advice-box{border:1px solid #ddd;border-radius:8px;padding:15px;margin-top:15px;background:#fafafa}
.vote{background:#eee;padding:5px 10px;border-radius:6px;display:inline-block}
.comment{margin-left:20px;border-left:2px solid #ccc;padding-left:8px;margin-top:5px}
.tag{display:inline-block;background:#3498db;color:#fff;padding:3px 8px;border-radius:5px;margin:2px;font-size:12px;cursor:pointer}
.auth-container {
display: flex;
gap: 20px;
}
.btn {
padding: 12px 24px;
font-size: 16px;
border: none;
border-radius: 6px;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
color: white;
}
.login-btn {
background: #3498db;
}
.login-btn:hover {
background: #2980b9;
transform: translateY(-2px);
}
.register-btn {
background: #2ecc71;
}
.register-btn:hover {
background: #27ae60;
transform: translateY(-2px);
}
</style>
</head>
<body>
<script>
function filterTag(tag){
window.location='?tag='+encodeURIComponent(tag);
}
</script>
<?= $Auth ?>
<div class="container">
<h1>🎯 StickingToGoals.com</h1>
<form method="GET">
<input name="search" placeholder="Search">
<button>Search</button>
</form>
<h2>All Goals</h2>
<?php foreach($Goals as $g): ?>
<div class="goal-item">
<a href="?g=<?= $g['uuid'] ?>"><b><?= htmlspecialchars($g['title']) ?></b></a>
<?php
$Tags = $Model->GetTags($g);
if ($Tags !== true && $Tags !== false) {
foreach($Tags as $t): ?>
<span class="tag" onclick="filterTag('<?= $t['name'] ?>')"><?= $t['name'] ?></span>
<?php endforeach;
}
?>
</div>
<?php endforeach; ?>
<?php
if ($Uid['MyUUID'] === false) { end_of_the_line(); }
$goal = $Model->GetGoal($Uid);
if ($goal === false) { end_of_the_line(); }
//<h3>GOAL ID = $myuuid
?>
<hr>
<h2><?= htmlspecialchars($goal['title']) ?></h2>
<p><?= $Bb->parse(nl2br(htmlspecialchars($goal['description']))) ?></p>
<?php
$stmt = $Model->GetVotes($goal);
foreach($stmt as $a): ?>
<div class="advice-box">
<p><?= $Bb->parse(htmlspecialchars($a['content'])) ?></p>
<div class="vote">👍 <span><?= $a['votes'] ?></span></div>
<h4>Comments</h4>
<div id="comments-<?= $a['id'] ?>">
<?php
$comments = $Model->GetComments($a);
foreach($comments as $c): ?>
<div class="comment"><?= $Bb->parse(htmlspecialchars($c['content'])) ?></div>
<?php endforeach; ?>
</div>
</div>
<?php endforeach; ?>
</div>

@ -0,0 +1,102 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
?>
<header>
<h1>StickingToGoals.com</h1>
<h2>Terms of Service</h2>
<p><strong>Last Updated:</strong> April 16, 2026</p>
</header>
<blockquote>
<main>
<!-- 1. Acceptance of Terms -->
<section>
<h3>1. Acceptance of Terms</h3>
<p>By accessing or using StickingToGoals.com (the “Site”), you agree to be bound by these Terms of Service. If you do not agree, do not use the Site.</p>
</section>
<!-- 2. Eligibility – Applicable Child Protection Laws (updated from COPA) -->
<section>
<h3>2. Eligibility – Compliance with Applicable Child Protection Laws</h3>
<p>To comply with applicable child protection laws (including but not limited to the Children's Online Privacy Protection Act (COPPA) and analogous regulations), you must be <strong>at least 18 years old</strong> (an adult) to use this Site. By using StickingToGoals.com, you represent and warrant that you are an adult.</p>
</section>
<!-- 3. Ephemeral Nature & No Uptime Guarantee -->
<section>
<h3>3. Ephemeral Nature & No Uptime Guarantee</h3>
<ul>
<li><strong>All information on this Site is ephemeral</strong> – it may disappear, be deleted, or become inaccessible at any time without notice.</li>
<li>There is <strong>no guarantee of service uptime, availability, or data persistence</strong>. The Site may be offline, modified, interrupted, or discontinued at any time, without liability.</li>
</ul>
</section>
<!-- 4. Content Moderation & Editing -->
<section>
<h3>4. Content Moderation & Editing</h3>
<p>Information will be added or modified as deemed appropriate for usage on the Site. Without limitation, StickingToGoals.com reserves the right to change:</p>
<ul>
<li>Spelling</li>
<li>Sentence structure</li>
<li>Word choice</li>
<li>Entire paragraphs</li>
<li>Language (including censorship of words, phrases, or entire sections)</li>
</ul>
<p>…to accommodate clarity of thought toward goals. No promise is made that original user meaning, tone, or expression will be preserved.</p>
</section>
<!-- 5. Cookies, Ads, and Tracking -->
<section>
<h3>5. Cookies, Ads, and Tracking</h3>
<p>StickingToGoals.com reserves the right to use <strong>cookies</strong>, <strong>advertising technologies</strong> (including third-party ads), web beacons, local storage, and other tracking methods that may collect data about your visit, device, IP address, browsing behavior, and interactions. By using the Site, you expressly consent to such tracking and the placement of cookies on your device.</p>
</section>
<!-- 6. Public Domain – Waiver of Rights -->
<section>
<h3>6. Public Domain – Waiver of Rights</h3>
<p><strong>All legal rights (including copyright, database rights, and any other intellectual property rights) to any content submitted, displayed, or generated on StickingToGoals.com are waived</strong> and placed irrevocably into the <strong>public domain</strong>. You agree that no content on the Site is owned by you, the Site operator, or any third party. Anyone may use, reproduce, distribute, modify, or perform the content without permission, attribution, or notice.</p>
</section>
<!-- 7. Anonymous Posting -->
<section>
<h3>7. Anonymous Posting</h3>
<p>Content posted on StickingToGoals.com will be attributed <strong>anonymously</strong> using:</p>
<ul>
<li>User’s first name</li>
<li>First initial of user’s last name</li>
</ul>
<p>No full names, email addresses, usernames (unless identical to the first-name + initial pattern), or other personally identifiable information will be displayed in association with user contributions. The Site may retain additional data for operational purposes, but public attribution is limited as described.</p>
</section>
<!-- 8. Limitation of Liability -->
<section>
<h3>8. Limitation of Liability</h3>
<p>To the fullest extent permitted by applicable law, StickingToGoals.com and its operators, owners, affiliates, and contributors are not liable for any loss of data, uptime failures, content changes, ephemeral nature, tracking activities, moderation decisions, public domain waiver consequences, or any other damages arising from use of the Site. The Site is provided “as is” and “as available,” with all faults.</p>
</section>
<!-- 9. Changes to These Terms -->
<section>
<h3>9. Changes to These Terms</h3>
<p>We may update these Terms of Service at any time without prior notice. The “Last Updated” date at the top of this page will reflect the latest revision. Your continued use of the Site after any changes constitutes acceptance of the revised Terms.</p>
</section>
<!-- 10. Contact / No Contact (optional omission per earlier example, but kept generic) -->
<section>
<h3>10. Contact Information</h3>
<p>For questions regarding these Terms, you may reach out via the Site’s internal messaging (if available). However, due to the ephemeral nature, response is not guaranteed. No formal contact method is required for operation.</p>
</section>
<!-- final acknowledgment note -->
<hr>
<footer>
<p>By using StickingToGoals.com, you acknowledge that you have read, understood, and agreed to all of the above terms, including the ephemeral nature, public domain waiver, adult eligibility requirement, and tracking practices.</p>
<p><em>StickingToGoals.com — clarity of thought toward goals.</em></p>
</footer>
</main>
</blockquote>

@ -0,0 +1,126 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright (c) 2026, Robert Strutts
* @license MIT
*/
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Register</title>
<style>
body {
font-family: Arial;
background:#f5f5f5;
}
.container {
width: 230px;
margin: 50px auto;
padding: 20px;
background: white;
border-radius: 8px;
}
input, button {
margin: 8px 0;
padding: 10px;
}
.hidden {
display:none;
}
.error {
color: red;
}
.mysuccess {
color: green;
}
</style>
</head>
<body>
<div class="container">
<h2>Register</h2>
<div id="success" class="hidden mysuccess">
<p>Registration successful! Check your email to verify.</p>
<p>This is not automated, so it may take a while. If it'd been a few business days, email share&#64;StickingToGoals.com to let us know you did not get a registration email.</p>
</div>
<p class="error" id="errors"></p>
<form id="myForm">
<input type="email" id="email" name="email" placeholder="Email" required size="25" maxlength="250"><br>
<input type="text" id="first_name" name="first_name" placeholder="First Name" required maxlength="32"><br>
<input type="text" id="last_initial" name="last_initial" placeholder="Last Initial" maxlength="1" required><br>
<input type="text" id="last_name" name="last_name" placeholder="Last Name (optional)" maxlength="60"><br>
<table>
<tr>
<td><input type="checkbox" id="adult" name="is_adult" required></td>
<th align="left"><label for="adult">I am 18+ years old</label></th>
</tr><tr>
<td><input type="checkbox" id="anon" name="be_anon"></td>
<th align="left"><label for="anon">Stay anonymous</label></th>
</tr><tr>
<td><input type="checkbox" id="sub" name="send_newsletter"></td>
<th align="left"><label for="sub">Subscribe to newsletter</label></th>
</tr><tr>
<td><input type="checkbox" id="tos" name="tos" required></td>
<th align="left"><label for="tos">Accept Terms of Service</label></th>
</tr>
</table>
<button type="submit" id="reg">Register</button>
</form>
</div>
<script>
document.getElementById("myForm").addEventListener('submit', async function (e) {
e.preventDefault();
const formData = new FormData(e.target);
/* Log all form data
for (let [key, value] of formData.entries()) {
console.log(key + ': ' + value);
}
*/
const formObject = Object.fromEntries(formData.entries());
// console.log('Form object:', formObject);
try {
const response = await fetch('/Data/RegPost/Save.html', {
method: 'POST',
headers: {"Content-Type": "application/json"},
body: JSON.stringify(formObject)
});
const result = await response.json();
// Multiple ways to check success
if (response.status === 200 && result.success === true) {
console.log('Success:', result);
document.getElementById("success").classList.remove("hidden");
document.getElementById("errors").textContent = "";
document.getElementById("reg").disabled = true;
//} else if (result.success) {
// console.log('Success:', result);
// } else if (result.error === false) {
// console.log('Success:', result);
} else {
document.getElementById("errors").textContent = result.errors;
console.error('Failed:', result);
}
} catch (error) {
document.getElementById("errors").textContent = error;
console.error('Error:', error);
}
});
</script>

@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts
* @copyright Copyright (c) 2022, Robert Strutts.
* @license MIT
*/
$protocol = "HTTP/1.0";
if ( "HTTP/1.1" == $_SERVER["SERVER_PROTOCOL"] ) {
$protocol = "HTTP/1.1";
}
header( "{$protocol} 404 Not Found", true, 404 );
header('Content-type: text/html; charset=utf-8');
?>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="language" content="english">
<meta name="robots" content="no-follow">
<link rel="shortcut icon" href="/assets/favicon/favicon.ico">
<title>404 Page not found!</title>
<style>
@media only screen and (max-width: 600px) {
#nopage {
height: 150px;
width: 300px;
}
}
@media only screen and (min-width: 600px) {
#nopage {
height: 500px;
width: 1500px;
}
}
</style>
</head>
<body>
<div id="wrap">
<img src="/assets/images/404page.jpg" alt="Page not found." id="nopage"/>
<header><h1>404 Page not found!<h1></header>
<h3>Our apologies for the temporary inconvenience.</h3>
</div>
</body>
</html>
<?php
exit;

@ -0,0 +1,17 @@
{
"description": "StickingToGoals.com",
"license": "MIT",
"authors": [
{
"name": "Robert Strutts"
}
],
"config": {
"platform": {
"php": "8.5"
}
},
"require": {
"vlucas/phpdotenv": "^5.6"
}
}

@ -0,0 +1,495 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1f06c8427699f747776f24f4389f751e",
"packages": [
{
"name": "graham-campbell/result-type",
"version": "v1.1.4",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b",
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.5"
},
"require-dev": {
"phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7"
},
"type": "library",
"autoload": {
"psr-4": {
"GrahamCampbell\\ResultType\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
}
],
"description": "An Implementation Of The Result Type",
"keywords": [
"Graham Campbell",
"GrahamCampbell",
"Result Type",
"Result-Type",
"result"
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
"type": "tidelift"
}
],
"time": "2025-12-27T19:43:20+00:00"
},
{
"name": "phpoption/phpoption",
"version": "1.9.5",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be",
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34"
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
"PhpOption\\": "src/PhpOption/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Johannes M. Schmitt",
"email": "schmittjoh@gmail.com",
"homepage": "https://github.com/schmittjoh"
},
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
}
],
"description": "Option Type for PHP",
"keywords": [
"language",
"option",
"php",
"type"
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
"source": "https://github.com/schmittjoh/php-option/tree/1.9.5"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
"type": "tidelift"
}
],
"time": "2025-12-27T19:41:33+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "141046a8f9477948ff284fa65be2095baafb94f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2",
"reference": "141046a8f9477948ff284fa65be2095baafb94f2",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-10T16:19:22+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.38.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92",
"reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-05-26T12:51:13+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
"reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-10T16:19:22+00:00"
},
{
"name": "vlucas/phpdotenv",
"version": "v5.6.3",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "955e7815d677a3eaa7075231212f2110983adecc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
"reference": "955e7815d677a3eaa7075231212f2110983adecc",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"graham-campbell/result-type": "^1.1.4",
"php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.5",
"symfony/polyfill-ctype": "^1.26",
"symfony/polyfill-mbstring": "^1.26",
"symfony/polyfill-php80": "^1.26"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"ext-filter": "*",
"phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "5.6-dev"
}
},
"autoload": {
"psr-4": {
"Dotenv\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Vance Lucas",
"email": "vance@vancelucas.com",
"homepage": "https://github.com/vlucas"
}
],
"description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
"keywords": [
"dotenv",
"env",
"environment"
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
"type": "tidelift"
}
],
"time": "2025-12-27T19:49:13+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {},
"platform-dev": {},
"platform-overrides": {
"php": "8.5"
},
"plugin-api-version": "2.9.0"
}

@ -0,0 +1,39 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Accordion
========================================================================== */
/* Sub-object: `uk-accordion-title`
========================================================================== */
.uk-accordion-title {
margin-top: 0;
margin-bottom: 15px;
padding: 5px 15px;
background: #f5f5f5;
font-size: 18px;
line-height: 24px;
cursor: pointer;
border: 1px solid #dddddd;
border-radius: 4px;
}
/* Sub-object: `uk-accordion-content`
========================================================================== */
.uk-accordion-content {
padding: 0 15px 15px 15px;
}
/*
* Micro clearfix to make panels more robust
*/
.uk-accordion-content:before,
.uk-accordion-content:after {
content: "";
display: table;
}
.uk-accordion-content:after {
clear: both;
}
/*
* Remove margin from the last-child
*/
.uk-accordion-content > :last-child {
margin-bottom: 0;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#f5f5f5;font-size:18px;line-height:24px;cursor:pointer;border:1px solid #ddd;border-radius:4px}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0}

@ -0,0 +1,37 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Accordion
========================================================================== */
/* Sub-object: `uk-accordion-title`
========================================================================== */
.uk-accordion-title {
margin-top: 0;
margin-bottom: 15px;
padding: 5px 15px;
background: #eeeeee;
font-size: 18px;
line-height: 24px;
cursor: pointer;
}
/* Sub-object: `uk-accordion-content`
========================================================================== */
.uk-accordion-content {
padding: 0 15px 15px 15px;
}
/*
* Micro clearfix to make panels more robust
*/
.uk-accordion-content:before,
.uk-accordion-content:after {
content: "";
display: table;
}
.uk-accordion-content:after {
clear: both;
}
/*
* Remove margin from the last-child
*/
.uk-accordion-content > :last-child {
margin-bottom: 0;
}

@ -0,0 +1,39 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Accordion
========================================================================== */
/* Sub-object: `uk-accordion-title`
========================================================================== */
.uk-accordion-title {
margin-top: 0;
margin-bottom: 15px;
padding: 5px 15px;
background: #f7f7f7;
font-size: 18px;
line-height: 24px;
cursor: pointer;
border: 1px solid #dddddd;
border-radius: 4px;
}
/* Sub-object: `uk-accordion-content`
========================================================================== */
.uk-accordion-content {
padding: 0 15px 15px 15px;
}
/*
* Micro clearfix to make panels more robust
*/
.uk-accordion-content:before,
.uk-accordion-content:after {
content: "";
display: table;
}
.uk-accordion-content:after {
clear: both;
}
/*
* Remove margin from the last-child
*/
.uk-accordion-content > :last-child {
margin-bottom: 0;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#f7f7f7;font-size:18px;line-height:24px;cursor:pointer;border:1px solid #ddd;border-radius:4px}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#eee;font-size:18px;line-height:24px;cursor:pointer}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0}

@ -0,0 +1,52 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Autocomplete
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
* 4. Remove the gap between the container and its child element
*/
.uk-autocomplete {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
vertical-align: middle;
}
/* Nav modifier `uk-nav-autocomplete`
========================================================================== */
/*
* Items
*/
.uk-nav-autocomplete > li > a {
color: #444444;
}
/*
* Active
* 1. Remove default focus style
*/
.uk-nav-autocomplete > li.uk-active > a {
background: #00a8e6;
color: #ffffff;
/* 1 */
outline: none;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-autocomplete .uk-nav-header {
color: #999999;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-autocomplete .uk-nav-divider {
border-top: 1px solid #dddddd;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#00a8e6;color:#fff;outline:0;box-shadow:inset 0 0 5px rgba(0,0,0,.05);text-shadow:0 -1px 0 rgba(0,0,0,.1)}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd}

@ -0,0 +1,50 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Autocomplete
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
* 4. Remove the gap between the container and its child element
*/
.uk-autocomplete {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
vertical-align: middle;
}
/* Nav modifier `uk-nav-autocomplete`
========================================================================== */
/*
* Items
*/
.uk-nav-autocomplete > li > a {
color: #444444;
}
/*
* Active
* 1. Remove default focus style
*/
.uk-nav-autocomplete > li.uk-active > a {
background: #00a8e6;
color: #ffffff;
/* 1 */
outline: none;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-autocomplete .uk-nav-header {
color: #999999;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-autocomplete .uk-nav-divider {
border-top: 1px solid #dddddd;
}

@ -0,0 +1,52 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Autocomplete
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
* 4. Remove the gap between the container and its child element
*/
.uk-autocomplete {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
vertical-align: middle;
}
/* Nav modifier `uk-nav-autocomplete`
========================================================================== */
/*
* Items
*/
.uk-nav-autocomplete > li > a {
color: #444444;
}
/*
* Active
* 1. Remove default focus style
*/
.uk-nav-autocomplete > li.uk-active > a {
background: #009dd8;
color: #ffffff;
/* 1 */
outline: none;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-autocomplete .uk-nav-header {
color: #999999;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-autocomplete .uk-nav-divider {
border-top: 1px solid #dddddd;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#009dd8;color:#fff;outline:0;box-shadow:inset 0 2px 4px rgba(0,0,0,.2);text-shadow:0 -1px 0 rgba(0,0,0,.2)}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#00a8e6;color:#fff;outline:0}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd}

@ -0,0 +1,129 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Datepicker
========================================================================== */
/*
* 1. Highest z-index
* 2. Reset dropdown width
* 3. Set animation
* 4. Needed for scale animation
*/
.uk-datepicker {
/* 1 */
z-index: 1050;
/* 2 */
width: auto;
/* 3 */
-webkit-animation: uk-fade 0.2s ease-in-out;
animation: uk-fade 0.2s ease-in-out;
/* 4 */
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
/* Sub-object: `uk-datepicker-nav`
========================================================================== */
.uk-datepicker-nav {
margin-bottom: 15px;
text-align: center;
line-height: 20px;
}
/*
* Micro clearfix
*/
.uk-datepicker-nav:before,
.uk-datepicker-nav:after {
content: "";
display: table;
}
.uk-datepicker-nav:after {
clear: both;
}
/*
* Previous and next navigation
*/
.uk-datepicker-nav a {
color: #444444;
text-decoration: none;
}
.uk-datepicker-nav a:hover {
color: #444444;
}
.uk-datepicker-previous {
float: left;
}
.uk-datepicker-next {
float: right;
}
.uk-datepicker-previous:after,
.uk-datepicker-next:after {
width: 20px;
font-family: FontAwesome;
}
.uk-datepicker-previous:after {
content: "\f053";
}
.uk-datepicker-next:after {
content: "\f054";
}
/* Sub-object: `uk-datepicker-heading`
========================================================================== */
/* Sub-object: `uk-datepicker-table`
========================================================================== */
/* Block element behavior */
.uk-datepicker-table {
width: 100%;
}
.uk-datepicker-table th,
.uk-datepicker-table td {
padding: 2px;
}
.uk-datepicker-table th {
font-size: 12px;
}
/*
* Item
*/
.uk-datepicker-table a {
display: block;
width: 26px;
line-height: 24px;
text-align: center;
color: #444444;
text-decoration: none;
border: 1px solid transparent;
border-radius: 4px;
}
/*
* Sub-object: `uk-datepicker-table-muted`
*/
a.uk-datepicker-table-muted {
color: #999999;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-datepicker-table a:hover,
.uk-datepicker-table a:focus {
background-color: #fafafa;
color: #444444;
/* 2 */
outline: none;
border-color: rgba(0, 0, 0, 0.16);
text-shadow: 0 1px 0 #ffffff;
}
/* OnClick */
.uk-datepicker-table a:active {
background-color: #eeeeee;
color: #444444;
}
/*
* Active
*/
.uk-datepicker-table a.uk-active {
background: #00a8e6;
color: #ffffff;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none;border:1px solid transparent;border-radius:4px}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#fafafa;color:#444;outline:0;border-color:rgba(0,0,0,.16);text-shadow:0 1px 0 #fff}.uk-datepicker-table a:active{background-color:#eee;color:#444}.uk-datepicker-table a.uk-active{background:#00a8e6;color:#fff;box-shadow:inset 0 0 5px rgba(0,0,0,.05);text-shadow:0 -1px 0 rgba(0,0,0,.1)}

@ -0,0 +1,123 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Datepicker
========================================================================== */
/*
* 1. Highest z-index
* 2. Reset dropdown width
* 3. Set animation
* 4. Needed for scale animation
*/
.uk-datepicker {
/* 1 */
z-index: 1050;
/* 2 */
width: auto;
/* 3 */
-webkit-animation: uk-fade 0.2s ease-in-out;
animation: uk-fade 0.2s ease-in-out;
/* 4 */
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
/* Sub-object: `uk-datepicker-nav`
========================================================================== */
.uk-datepicker-nav {
margin-bottom: 15px;
text-align: center;
line-height: 20px;
}
/*
* Micro clearfix
*/
.uk-datepicker-nav:before,
.uk-datepicker-nav:after {
content: "";
display: table;
}
.uk-datepicker-nav:after {
clear: both;
}
/*
* Previous and next navigation
*/
.uk-datepicker-nav a {
color: #444444;
text-decoration: none;
}
.uk-datepicker-nav a:hover {
color: #444444;
}
.uk-datepicker-previous {
float: left;
}
.uk-datepicker-next {
float: right;
}
.uk-datepicker-previous:after,
.uk-datepicker-next:after {
width: 20px;
font-family: FontAwesome;
}
.uk-datepicker-previous:after {
content: "\f053";
}
.uk-datepicker-next:after {
content: "\f054";
}
/* Sub-object: `uk-datepicker-heading`
========================================================================== */
/* Sub-object: `uk-datepicker-table`
========================================================================== */
/* Block element behavior */
.uk-datepicker-table {
width: 100%;
}
.uk-datepicker-table th,
.uk-datepicker-table td {
padding: 2px;
}
.uk-datepicker-table th {
font-size: 12px;
}
/*
* Item
*/
.uk-datepicker-table a {
display: block;
width: 26px;
line-height: 24px;
text-align: center;
color: #444444;
text-decoration: none;
}
/*
* Sub-object: `uk-datepicker-table-muted`
*/
a.uk-datepicker-table-muted {
color: #999999;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-datepicker-table a:hover,
.uk-datepicker-table a:focus {
background-color: #dddddd;
color: #444444;
/* 2 */
outline: none;
}
/* OnClick */
.uk-datepicker-table a:active {
background-color: #cccccc;
color: #444444;
}
/*
* Active
*/
.uk-datepicker-table a.uk-active {
background: #00a8e6;
color: #ffffff;
}

@ -0,0 +1,139 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Datepicker
========================================================================== */
/*
* 1. Highest z-index
* 2. Reset dropdown width
* 3. Set animation
* 4. Needed for scale animation
*/
.uk-datepicker {
/* 1 */
z-index: 1050;
/* 2 */
width: auto;
/* 3 */
-webkit-animation: uk-fade 0.2s ease-in-out;
animation: uk-fade 0.2s ease-in-out;
/* 4 */
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
/* Sub-object: `uk-datepicker-nav`
========================================================================== */
.uk-datepicker-nav {
margin-bottom: 15px;
text-align: center;
line-height: 20px;
}
/*
* Micro clearfix
*/
.uk-datepicker-nav:before,
.uk-datepicker-nav:after {
content: "";
display: table;
}
.uk-datepicker-nav:after {
clear: both;
}
/*
* Previous and next navigation
*/
.uk-datepicker-nav a {
color: #444444;
text-decoration: none;
}
.uk-datepicker-nav a:hover {
color: #444444;
}
.uk-datepicker-previous {
float: left;
}
.uk-datepicker-next {
float: right;
}
.uk-datepicker-previous:after,
.uk-datepicker-next:after {
width: 20px;
font-family: FontAwesome;
}
.uk-datepicker-previous:after {
content: "\f053";
}
.uk-datepicker-next:after {
content: "\f054";
}
/* Sub-object: `uk-datepicker-heading`
========================================================================== */
/* Sub-object: `uk-datepicker-table`
========================================================================== */
/* Block element behavior */
.uk-datepicker-table {
width: 100%;
}
.uk-datepicker-table th,
.uk-datepicker-table td {
padding: 2px;
}
.uk-datepicker-table th {
font-size: 12px;
}
/*
* Item
*/
.uk-datepicker-table a {
display: block;
width: 26px;
line-height: 24px;
text-align: center;
color: #444444;
text-decoration: none;
border: 1px solid transparent;
border-radius: 4px;
background-origin: border-box;
}
/*
* Sub-object: `uk-datepicker-table-muted`
*/
a.uk-datepicker-table-muted {
color: #999999;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-datepicker-table a:hover,
.uk-datepicker-table a:focus {
background-color: #fafafa;
color: #444444;
/* 2 */
outline: none;
border-color: rgba(0, 0, 0, 0.2);
border-bottom-color: rgba(0, 0, 0, 0.3);
text-shadow: 0 1px 0 #ffffff;
}
/* OnClick */
.uk-datepicker-table a:active {
background-color: #f5f5f5;
color: #444444;
border-color: rgba(0, 0, 0, 0.2);
border-top-color: rgba(0, 0, 0, 0.3);
background-image: none;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
/*
* Active
*/
.uk-datepicker-table a.uk-active {
background: #009dd8;
color: #ffffff;
border: 1px solid rgba(0, 0, 0, 0.2);
border-bottom-color: rgba(0, 0, 0, 0.4);
background-origin: border-box;
background-image: -webkit-linear-gradient(top, #00b4f5, #008dc5);
background-image: linear-gradient(to bottom, #00b4f5, #008dc5);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none;border:1px solid transparent;border-radius:4px;background-origin:border-box}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#fafafa;color:#444;outline:0;border-color:rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.3);text-shadow:0 1px 0 #fff}.uk-datepicker-table a:active{background-color:#f5f5f5;color:#444;border-color:rgba(0,0,0,.2);border-top-color:rgba(0,0,0,.3);background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-datepicker-table a.uk-active{background:#009dd8;color:#fff;border:1px solid rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.4);background-origin:border-box;background-image:-webkit-linear-gradient(top,#00b4f5,#008dc5);background-image:linear-gradient(to bottom,#00b4f5,#008dc5);text-shadow:0 -1px 0 rgba(0,0,0,.2)}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#ddd;color:#444;outline:0}.uk-datepicker-table a:active{background-color:#ccc;color:#444}.uk-datepicker-table a.uk-active{background:#00a8e6;color:#fff}

@ -0,0 +1,128 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Dotnav
========================================================================== */
/*
* 1. Gutter
* 2. Remove default list style
*/
.uk-dotnav {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-wrap: wrap;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
/* 1 */
margin-left: -15px;
margin-top: -15px;
/* 2 */
padding: 0;
list-style: none;
}
/*
* 1. Space is allocated solely based on content dimensions
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied
*/
.uk-dotnav > * {
/* 1 */
-ms-flex: none;
-webkit-flex: none;
flex: none;
/* 2 */
padding-left: 15px;
margin-top: 15px;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav:before,
.uk-dotnav:after {
content: "";
display: block;
overflow: hidden;
}
.uk-dotnav:after {
clear: both;
}
.uk-dotnav > * {
float: left;
}
/* Items
========================================================================== */
/*
* Items
* 1. Hide text if present
*/
.uk-dotnav > * > * {
display: block;
box-sizing: content-box;
width: 20px;
height: 20px;
border-radius: 50%;
background: rgba(50, 50, 50, 0.1);
/* 1 */
text-indent: 100%;
overflow: hidden;
white-space: nowrap;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-dotnav > * > :hover,
.uk-dotnav > * > :focus {
background: rgba(50, 50, 50, 0.4);
/* 2 */
outline: none;
}
/* OnClick */
.uk-dotnav > * > :active {
background: rgba(50, 50, 50, 0.6);
}
/* Active */
.uk-dotnav > .uk-active > * {
background: rgba(50, 50, 50, 0.4);
-webkit-transform: scale(1.3);
transform: scale(1.3);
}
/* Modifier: `uk-dotnav-contrast`
========================================================================== */
.uk-dotnav-contrast > * > * {
background: rgba(255, 255, 255, 0.4);
}
/*
* Hover
* 1. Apply hover style also to focus state
*/
.uk-dotnav-contrast > * > :hover,
.uk-dotnav-contrast > * > :focus {
background: rgba(255, 255, 255, 0.7);
}
/* OnClick */
.uk-dotnav-contrast > * > :active {
background: rgba(255, 255, 255, 0.9);
}
/* Active */
.uk-dotnav-contrast > .uk-active > * {
background: rgba(255, 255, 255, 0.9);
}
/* Modifier: 'uk-dotnav-vertical'
========================================================================== */
/*
* DEPRECATED
*/
.uk-dotnav-vertical {
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav-vertical > * {
float: none;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none}

@ -0,0 +1,124 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Dotnav
========================================================================== */
/*
* 1. Gutter
* 2. Remove default list style
*/
.uk-dotnav {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-wrap: wrap;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
/* 1 */
margin-left: -15px;
margin-top: -15px;
/* 2 */
padding: 0;
list-style: none;
}
/*
* 1. Space is allocated solely based on content dimensions
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied
*/
.uk-dotnav > * {
/* 1 */
-ms-flex: none;
-webkit-flex: none;
flex: none;
/* 2 */
padding-left: 15px;
margin-top: 15px;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav:before,
.uk-dotnav:after {
content: "";
display: block;
overflow: hidden;
}
.uk-dotnav:after {
clear: both;
}
.uk-dotnav > * {
float: left;
}
/* Items
========================================================================== */
/*
* Items
* 1. Hide text if present
*/
.uk-dotnav > * > * {
display: block;
box-sizing: content-box;
width: 20px;
height: 20px;
border-radius: 50%;
background: rgba(50, 50, 50, 0.1);
/* 1 */
text-indent: 100%;
overflow: hidden;
white-space: nowrap;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-dotnav > * > :hover,
.uk-dotnav > * > :focus {
background: rgba(50, 50, 50, 0.4);
/* 2 */
outline: none;
}
/* OnClick */
.uk-dotnav > * > :active {
background: rgba(50, 50, 50, 0.6);
}
/* Active */
.uk-dotnav > .uk-active > * {
background: rgba(50, 50, 50, 0.4);
}
/* Modifier: `uk-dotnav-contrast`
========================================================================== */
.uk-dotnav-contrast > * > * {
background: rgba(255, 255, 255, 0.4);
}
/*
* Hover
* 1. Apply hover style also to focus state
*/
.uk-dotnav-contrast > * > :hover,
.uk-dotnav-contrast > * > :focus {
background: rgba(255, 255, 255, 0.7);
}
/* OnClick */
.uk-dotnav-contrast > * > :active {
background: rgba(255, 255, 255, 0.9);
}
/* Active */
.uk-dotnav-contrast > .uk-active > * {
background: rgba(255, 255, 255, 0.9);
}
/* Modifier: 'uk-dotnav-vertical'
========================================================================== */
/*
* DEPRECATED
*/
.uk-dotnav-vertical {
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav-vertical > * {
float: none;
}

@ -0,0 +1,128 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Dotnav
========================================================================== */
/*
* 1. Gutter
* 2. Remove default list style
*/
.uk-dotnav {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-wrap: wrap;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
/* 1 */
margin-left: -15px;
margin-top: -15px;
/* 2 */
padding: 0;
list-style: none;
}
/*
* 1. Space is allocated solely based on content dimensions
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied
*/
.uk-dotnav > * {
/* 1 */
-ms-flex: none;
-webkit-flex: none;
flex: none;
/* 2 */
padding-left: 15px;
margin-top: 15px;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav:before,
.uk-dotnav:after {
content: "";
display: block;
overflow: hidden;
}
.uk-dotnav:after {
clear: both;
}
.uk-dotnav > * {
float: left;
}
/* Items
========================================================================== */
/*
* Items
* 1. Hide text if present
*/
.uk-dotnav > * > * {
display: block;
box-sizing: content-box;
width: 20px;
height: 20px;
border-radius: 50%;
background: rgba(50, 50, 50, 0.1);
/* 1 */
text-indent: 100%;
overflow: hidden;
white-space: nowrap;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-dotnav > * > :hover,
.uk-dotnav > * > :focus {
background: rgba(50, 50, 50, 0.4);
/* 2 */
outline: none;
}
/* OnClick */
.uk-dotnav > * > :active {
background: rgba(50, 50, 50, 0.6);
}
/* Active */
.uk-dotnav > .uk-active > * {
background: rgba(50, 50, 50, 0.4);
-webkit-transform: scale(1.3);
transform: scale(1.3);
}
/* Modifier: `uk-dotnav-contrast`
========================================================================== */
.uk-dotnav-contrast > * > * {
background: rgba(255, 255, 255, 0.4);
}
/*
* Hover
* 1. Apply hover style also to focus state
*/
.uk-dotnav-contrast > * > :hover,
.uk-dotnav-contrast > * > :focus {
background: rgba(255, 255, 255, 0.7);
}
/* OnClick */
.uk-dotnav-contrast > * > :active {
background: rgba(255, 255, 255, 0.9);
}
/* Active */
.uk-dotnav-contrast > .uk-active > * {
background: rgba(255, 255, 255, 0.9);
}
/* Modifier: 'uk-dotnav-vertical'
========================================================================== */
/*
* DEPRECATED
*/
.uk-dotnav-vertical {
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
}
/*
* DEPRECATED IE9 Support
*/
.uk-dotnav-vertical > * {
float: none;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none}

@ -0,0 +1,78 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form advanced
Note: Only works in Webkit at the moment
========================================================================== */
/*
* 1. Style
* 2. Makes box more robust so it clips the child element
* 3. Vertical alignment
* 4. Remove default style
* 5. Fix black background on iOS
*/
.uk-form input[type="radio"],
.uk-form input[type="checkbox"] {
/* 1 */
display: inline-block;
height: 14px;
width: 14px;
border: 1px solid #aaaaaa;
/* 2 */
overflow: hidden;
/* 3 */
margin-top: -4px;
vertical-align: middle;
/* 4 */
-webkit-appearance: none;
outline: 0;
/* 5 */
background: transparent;
}
/* Radio */
.uk-form input[type="radio"] {
border-radius: 50%;
}
/*
* Checked
*/
.uk-form input[type=radio]:before,
.uk-form input[type=checkbox]:before {
display: block;
}
/* Radio */
.uk-form input[type=radio]:checked:before {
content: '';
width: 8px;
height: 8px;
margin: 2px auto 0;
border-radius: 50%;
background: #00a8e6;
}
/* Checkbox */
.uk-form input[type=checkbox]:checked:before,
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f00c";
font-family: FontAwesome;
font-size: 12px;
-webkit-font-smoothing: antialiased;
text-align: center;
line-height: 12px;
color: #00a8e6;
}
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f068";
}
/*
* Disabled
*/
.uk-form input[type=radio]:disabled,
.uk-form input[type=checkbox]:disabled {
border-color: #dddddd;
}
.uk-form input[type=radio]:disabled:checked:before {
background-color: #aaaaaa;
}
.uk-form input[type=checkbox]:disabled:checked:before,
.uk-form input[type=checkbox]:disabled:indeterminate:before {
color: #aaaaaa;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa}

@ -0,0 +1,78 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form advanced
Note: Only works in Webkit at the moment
========================================================================== */
/*
* 1. Style
* 2. Makes box more robust so it clips the child element
* 3. Vertical alignment
* 4. Remove default style
* 5. Fix black background on iOS
*/
.uk-form input[type="radio"],
.uk-form input[type="checkbox"] {
/* 1 */
display: inline-block;
height: 14px;
width: 14px;
border: 1px solid #aaaaaa;
/* 2 */
overflow: hidden;
/* 3 */
margin-top: -4px;
vertical-align: middle;
/* 4 */
-webkit-appearance: none;
outline: 0;
/* 5 */
background: transparent;
}
/* Radio */
.uk-form input[type="radio"] {
border-radius: 50%;
}
/*
* Checked
*/
.uk-form input[type=radio]:before,
.uk-form input[type=checkbox]:before {
display: block;
}
/* Radio */
.uk-form input[type=radio]:checked:before {
content: '';
width: 8px;
height: 8px;
margin: 2px auto 0;
border-radius: 50%;
background: #00a8e6;
}
/* Checkbox */
.uk-form input[type=checkbox]:checked:before,
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f00c";
font-family: FontAwesome;
font-size: 12px;
-webkit-font-smoothing: antialiased;
text-align: center;
line-height: 12px;
color: #00a8e6;
}
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f068";
}
/*
* Disabled
*/
.uk-form input[type=radio]:disabled,
.uk-form input[type=checkbox]:disabled {
border-color: #dddddd;
}
.uk-form input[type=radio]:disabled:checked:before {
background-color: #aaaaaa;
}
.uk-form input[type=checkbox]:disabled:checked:before,
.uk-form input[type=checkbox]:disabled:indeterminate:before {
color: #aaaaaa;
}

@ -0,0 +1,78 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form advanced
Note: Only works in Webkit at the moment
========================================================================== */
/*
* 1. Style
* 2. Makes box more robust so it clips the child element
* 3. Vertical alignment
* 4. Remove default style
* 5. Fix black background on iOS
*/
.uk-form input[type="radio"],
.uk-form input[type="checkbox"] {
/* 1 */
display: inline-block;
height: 14px;
width: 14px;
border: 1px solid #aaaaaa;
/* 2 */
overflow: hidden;
/* 3 */
margin-top: -4px;
vertical-align: middle;
/* 4 */
-webkit-appearance: none;
outline: 0;
/* 5 */
background: transparent;
}
/* Radio */
.uk-form input[type="radio"] {
border-radius: 50%;
}
/*
* Checked
*/
.uk-form input[type=radio]:before,
.uk-form input[type=checkbox]:before {
display: block;
}
/* Radio */
.uk-form input[type=radio]:checked:before {
content: '';
width: 8px;
height: 8px;
margin: 2px auto 0;
border-radius: 50%;
background: #00a8e6;
}
/* Checkbox */
.uk-form input[type=checkbox]:checked:before,
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f00c";
font-family: FontAwesome;
font-size: 12px;
-webkit-font-smoothing: antialiased;
text-align: center;
line-height: 12px;
color: #00a8e6;
}
.uk-form input[type=checkbox]:indeterminate:before {
content: "\f068";
}
/*
* Disabled
*/
.uk-form input[type=radio]:disabled,
.uk-form input[type=checkbox]:disabled {
border-color: #dddddd;
}
.uk-form input[type=radio]:disabled:checked:before {
background-color: #aaaaaa;
}
.uk-form input[type=checkbox]:disabled:checked:before,
.uk-form input[type=checkbox]:disabled:indeterminate:before {
color: #aaaaaa;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form file
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-file {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 2. Expand height and required for the cursor
*/
.uk-form-file input[type="file"] {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
font-size: 500px;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form file
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-file {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 2. Expand height and required for the cursor
*/
.uk-form-file input[type="file"] {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
font-size: 500px;
}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form file
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-file {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 2. Expand height and required for the cursor
*/
.uk-form-file input[type="file"] {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
font-size: 500px;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form password
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
*/
.uk-form-password {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
}
.uk-form-password-toggle {
display: block;
position: absolute;
top: 50%;
right: 10px;
margin-top: -6px;
font-size: 13px;
line-height: 13px;
color: #999999;
}
.uk-form-password-toggle:hover {
color: #999999;
text-decoration: none;
}
.uk-form-password > input {
padding-right: 50px !important;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form password
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
*/
.uk-form-password {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
}
.uk-form-password-toggle {
display: block;
position: absolute;
top: 50%;
right: 10px;
margin-top: -6px;
font-size: 13px;
line-height: 13px;
color: #999999;
}
.uk-form-password-toggle:hover {
color: #999999;
text-decoration: none;
}
.uk-form-password > input {
padding-right: 50px !important;
}

@ -0,0 +1,34 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form password
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
*/
.uk-form-password {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
}
.uk-form-password-toggle {
display: block;
position: absolute;
top: 50%;
right: 10px;
margin-top: -6px;
font-size: 13px;
line-height: 13px;
color: #999999;
}
.uk-form-password-toggle:hover {
color: #999999;
text-decoration: none;
}
.uk-form-password > input {
padding-right: 50px !important;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important}

@ -0,0 +1,35 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form select
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-select {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 1. Required for Webkit to make `height` work
*/
.uk-form-select select {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
-webkit-appearance: none;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none}

@ -0,0 +1,35 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form select
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-select {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 1. Required for Webkit to make `height` work
*/
.uk-form-select select {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
-webkit-appearance: none;
}

@ -0,0 +1,35 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Form select
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-select {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 1. Required for Webkit to make `height` work
*/
.uk-form-select select {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
-webkit-appearance: none;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none}

@ -0,0 +1,222 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: HTML editor
========================================================================== */
/* Sub-object `uk-htmleditor-navbar`
========================================================================== */
.uk-htmleditor-navbar {
background: #f5f5f5;
border: 1px solid rgba(0, 0, 0, 0.06);
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
/*
* Micro clearfix
*/
.uk-htmleditor-navbar:before,
.uk-htmleditor-navbar:after {
content: "";
display: table;
}
.uk-htmleditor-navbar:after {
clear: both;
}
/* Sub-object `uk-htmleditor-navbar-nav`
========================================================================== */
.uk-htmleditor-navbar-nav {
margin: 0;
padding: 0;
list-style: none;
float: left;
}
.uk-htmleditor-navbar-nav > li {
float: left;
}
/*
* 1. Dimensions
* 2. Style
*/
.uk-htmleditor-navbar-nav > li > a {
display: block;
box-sizing: border-box;
text-decoration: none;
/* 1 */
height: 41px;
padding: 0 15px;
line-height: 40px;
/* 2 */
color: #444444;
font-size: 11px;
cursor: pointer;
margin-top: -1px;
margin-left: -1px;
border: 1px solid transparent;
border-bottom-width: 0;
text-shadow: 0 1px 0 #ffffff;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-htmleditor-navbar-nav > li:hover > a,
.uk-htmleditor-navbar-nav > li > a:focus {
background-color: #fafafa;
color: #444444;
outline: none;
/* 2 */
position: relative;
z-index: 1;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.1);
}
/* OnClick */
.uk-htmleditor-navbar-nav > li > a:active {
background-color: #eeeeee;
color: #444444;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.2);
}
/* Active */
.uk-htmleditor-navbar-nav > li.uk-active > a {
background-color: #fafafa;
color: #444444;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.1);
}
/* Sub-object: `uk-htmleditor-navbar-flip`
========================================================================== */
.uk-htmleditor-navbar-flip {
float: right;
}
/* Sub-object for special buttons
========================================================================== */
[data-mode='split'] .uk-htmleditor-button-code,
[data-mode='split'] .uk-htmleditor-button-preview {
display: none;
}
/* Sub-object `uk-htmleditor-content`
========================================================================== */
.uk-htmleditor-content {
border-left: 1px solid #dddddd;
border-right: 1px solid #dddddd;
border-bottom: 1px solid #dddddd;
background: #ffffff;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
/*
* Micro clearfix
*/
.uk-htmleditor-content:before,
.uk-htmleditor-content:after {
content: "";
display: table;
}
.uk-htmleditor-content:after {
clear: both;
}
/* Modifier `uk-htmleditor-fullscreen`
========================================================================== */
.uk-htmleditor-fullscreen {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 990;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
position: absolute;
top: 41px;
left: 0;
right: 0;
bottom: 0;
}
.uk-htmleditor-fullscreen .uk-icon-expand:before {
content: "\f066";
}
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview`
========================================================================== */
.uk-htmleditor-code,
.uk-htmleditor-preview {
box-sizing: border-box;
}
.uk-htmleditor-preview {
padding: 20px;
overflow-y: scroll;
position: relative;
}
/*
* Tab view
*/
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview,
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code {
display: none;
}
/*
* Split view
*/
[data-mode='split'] .uk-htmleditor-code,
[data-mode='split'] .uk-htmleditor-preview {
float: left;
width: 50%;
}
[data-mode='split'] .uk-htmleditor-code {
border-right: 1px solid #eeeeee;
}
/* Sub-object `uk-htmleditor-iframe`
========================================================================== */
.uk-htmleditor-iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* CodeMirror modifications
========================================================================== */
.uk-htmleditor .CodeMirror {
padding: 10px;
box-sizing: border-box;
}
/*
* Apply same `border-radius` as `uk-htmleditor-navbar`
*/
.uk-htmleditor-navbar-nav:first-child > li:first-child > a {
border-top-left-radius: 4px;
}
/*
* Sub-modifier `uk-htmleditor-navbar-flip`
*/
/* Collapse border */
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav > li > a {
margin-left: 0;
margin-right: -1px;
}
/* Apply same `border-radius` as `uk-htmleditor-navbar` */
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child > li:first-child > a {
border-top-left-radius: 0;
}
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child > li:last-child > a {
border-top-right-radius: 4px;
}
/*
* Sub-modifier `uk-htmleditor-fullscreen`
*/
.uk-htmleditor-fullscreen .uk-htmleditor-navbar {
border-top: none;
border-left: none;
border-right: none;
border-radius: 0;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
border: none;
border-radius: 0;
}
.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav > li > a {
border-radius: 0 !important;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-htmleditor-navbar{background:#f5f5f5;border:1px solid rgba(0,0,0,.06);border-top-left-radius:4px;border-top-right-radius:4px}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:41px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer;margin-top:-1px;margin-left:-1px;border:1px solid transparent;border-bottom-width:0;text-shadow:0 1px 0 #fff}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:#fafafa;color:#444;outline:0;position:relative;z-index:1;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li>a:active{background-color:#eee;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2)}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#fafafa;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1)}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:41px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box}.uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:4px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav>li>a{margin-left:0;margin-right:-1px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:0}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child>li:last-child>a{border-top-right-radius:4px}.uk-htmleditor-fullscreen .uk-htmleditor-navbar{border-top:none;border-left:none;border-right:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-content{border:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav>li>a{border-radius:0!important}

@ -0,0 +1,164 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: HTML editor
========================================================================== */
/* Sub-object `uk-htmleditor-navbar`
========================================================================== */
.uk-htmleditor-navbar {
background: #eeeeee;
}
/*
* Micro clearfix
*/
.uk-htmleditor-navbar:before,
.uk-htmleditor-navbar:after {
content: "";
display: table;
}
.uk-htmleditor-navbar:after {
clear: both;
}
/* Sub-object `uk-htmleditor-navbar-nav`
========================================================================== */
.uk-htmleditor-navbar-nav {
margin: 0;
padding: 0;
list-style: none;
float: left;
}
.uk-htmleditor-navbar-nav > li {
float: left;
}
/*
* 1. Dimensions
* 2. Style
*/
.uk-htmleditor-navbar-nav > li > a {
display: block;
box-sizing: border-box;
text-decoration: none;
/* 1 */
height: 40px;
padding: 0 15px;
line-height: 40px;
/* 2 */
color: #444444;
font-size: 11px;
cursor: pointer;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-htmleditor-navbar-nav > li:hover > a,
.uk-htmleditor-navbar-nav > li > a:focus {
background-color: #f5f5f5;
color: #444444;
outline: none;
/* 2 */
}
/* OnClick */
.uk-htmleditor-navbar-nav > li > a:active {
background-color: #dddddd;
color: #444444;
}
/* Active */
.uk-htmleditor-navbar-nav > li.uk-active > a {
background-color: #f5f5f5;
color: #444444;
}
/* Sub-object: `uk-htmleditor-navbar-flip`
========================================================================== */
.uk-htmleditor-navbar-flip {
float: right;
}
/* Sub-object for special buttons
========================================================================== */
[data-mode='split'] .uk-htmleditor-button-code,
[data-mode='split'] .uk-htmleditor-button-preview {
display: none;
}
/* Sub-object `uk-htmleditor-content`
========================================================================== */
.uk-htmleditor-content {
border-left: 1px solid #dddddd;
border-right: 1px solid #dddddd;
border-bottom: 1px solid #dddddd;
background: #ffffff;
}
/*
* Micro clearfix
*/
.uk-htmleditor-content:before,
.uk-htmleditor-content:after {
content: "";
display: table;
}
.uk-htmleditor-content:after {
clear: both;
}
/* Modifier `uk-htmleditor-fullscreen`
========================================================================== */
.uk-htmleditor-fullscreen {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 990;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
position: absolute;
top: 40px;
left: 0;
right: 0;
bottom: 0;
}
.uk-htmleditor-fullscreen .uk-icon-expand:before {
content: "\f066";
}
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview`
========================================================================== */
.uk-htmleditor-code,
.uk-htmleditor-preview {
box-sizing: border-box;
}
.uk-htmleditor-preview {
padding: 20px;
overflow-y: scroll;
position: relative;
}
/*
* Tab view
*/
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview,
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code {
display: none;
}
/*
* Split view
*/
[data-mode='split'] .uk-htmleditor-code,
[data-mode='split'] .uk-htmleditor-preview {
float: left;
width: 50%;
}
[data-mode='split'] .uk-htmleditor-code {
border-right: 1px solid #eeeeee;
}
/* Sub-object `uk-htmleditor-iframe`
========================================================================== */
.uk-htmleditor-iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* CodeMirror modifications
========================================================================== */
.uk-htmleditor .CodeMirror {
padding: 10px;
box-sizing: border-box;
}

@ -0,0 +1,229 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: HTML editor
========================================================================== */
/* Sub-object `uk-htmleditor-navbar`
========================================================================== */
.uk-htmleditor-navbar {
background: #f7f7f7;
border: 1px solid rgba(0, 0, 0, 0.1);
border-bottom-color: rgba(0, 0, 0, 0.2);
border-top-left-radius: 4px;
border-top-right-radius: 4px;
background-origin: border-box;
background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
background-image: linear-gradient(to bottom, #ffffff, #eeeeee);
}
/*
* Micro clearfix
*/
.uk-htmleditor-navbar:before,
.uk-htmleditor-navbar:after {
content: "";
display: table;
}
.uk-htmleditor-navbar:after {
clear: both;
}
/* Sub-object `uk-htmleditor-navbar-nav`
========================================================================== */
.uk-htmleditor-navbar-nav {
margin: 0;
padding: 0;
list-style: none;
float: left;
}
.uk-htmleditor-navbar-nav > li {
float: left;
}
/*
* 1. Dimensions
* 2. Style
*/
.uk-htmleditor-navbar-nav > li > a {
display: block;
box-sizing: border-box;
text-decoration: none;
/* 1 */
height: 41px;
padding: 0 15px;
line-height: 40px;
/* 2 */
color: #444444;
font-size: 11px;
cursor: pointer;
margin-top: -1px;
margin-left: -1px;
border: 1px solid transparent;
border-bottom-width: 0;
text-shadow: 0 1px 0 #ffffff;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-htmleditor-navbar-nav > li:hover > a,
.uk-htmleditor-navbar-nav > li > a:focus {
background-color: transparent;
color: #444444;
outline: none;
/* 2 */
position: relative;
z-index: 1;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.1);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* OnClick */
.uk-htmleditor-navbar-nav > li > a:active {
background-color: #f5f5f5;
color: #444444;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Active */
.uk-htmleditor-navbar-nav > li.uk-active > a {
background-color: #fafafa;
color: #444444;
border-left-color: rgba(0, 0, 0, 0.1);
border-right-color: rgba(0, 0, 0, 0.1);
border-top-color: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Sub-object: `uk-htmleditor-navbar-flip`
========================================================================== */
.uk-htmleditor-navbar-flip {
float: right;
}
/* Sub-object for special buttons
========================================================================== */
[data-mode='split'] .uk-htmleditor-button-code,
[data-mode='split'] .uk-htmleditor-button-preview {
display: none;
}
/* Sub-object `uk-htmleditor-content`
========================================================================== */
.uk-htmleditor-content {
border-left: 1px solid #dddddd;
border-right: 1px solid #dddddd;
border-bottom: 1px solid #dddddd;
background: #ffffff;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
/*
* Micro clearfix
*/
.uk-htmleditor-content:before,
.uk-htmleditor-content:after {
content: "";
display: table;
}
.uk-htmleditor-content:after {
clear: both;
}
/* Modifier `uk-htmleditor-fullscreen`
========================================================================== */
.uk-htmleditor-fullscreen {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 990;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
position: absolute;
top: 41px;
left: 0;
right: 0;
bottom: 0;
}
.uk-htmleditor-fullscreen .uk-icon-expand:before {
content: "\f066";
}
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview`
========================================================================== */
.uk-htmleditor-code,
.uk-htmleditor-preview {
box-sizing: border-box;
}
.uk-htmleditor-preview {
padding: 20px;
overflow-y: scroll;
position: relative;
}
/*
* Tab view
*/
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview,
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code {
display: none;
}
/*
* Split view
*/
[data-mode='split'] .uk-htmleditor-code,
[data-mode='split'] .uk-htmleditor-preview {
float: left;
width: 50%;
}
[data-mode='split'] .uk-htmleditor-code {
border-right: 1px solid #eeeeee;
}
/* Sub-object `uk-htmleditor-iframe`
========================================================================== */
.uk-htmleditor-iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* CodeMirror modifications
========================================================================== */
.uk-htmleditor .CodeMirror {
padding: 10px;
box-sizing: border-box;
}
/*
* Apply same `border-radius` as `uk-htmleditor-navbar`
*/
.uk-htmleditor-navbar-nav:first-child > li:first-child > a {
border-top-left-radius: 4px;
}
/*
* Sub-modifier `uk-htmleditor-navbar-flip`
*/
/* Collapse border */
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav > li > a {
margin-left: 0;
margin-right: -1px;
}
/* Apply same `border-radius` as `uk-htmleditor-navbar` */
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child > li:first-child > a {
border-top-left-radius: 0;
}
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child > li:last-child > a {
border-top-right-radius: 4px;
}
/*
* Sub-modifier `uk-htmleditor-fullscreen`
*/
.uk-htmleditor-fullscreen .uk-htmleditor-navbar {
border-top: none;
border-left: none;
border-right: none;
border-radius: 0;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
border: none;
border-radius: 0;
}
.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav > li > a {
border-radius: 0 !important;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-htmleditor-navbar{background:#f7f7f7;border:1px solid rgba(0,0,0,.1);border-bottom-color:rgba(0,0,0,.2);border-top-left-radius:4px;border-top-right-radius:4px;background-origin:border-box;background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee)}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:41px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer;margin-top:-1px;margin-left:-1px;border:1px solid transparent;border-bottom-width:0;text-shadow:0 1px 0 #fff}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:transparent;color:#444;outline:0;position:relative;z-index:1;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li>a:active{background-color:#f5f5f5;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#fafafa;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:41px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box}.uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:4px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav>li>a{margin-left:0;margin-right:-1px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:0}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child>li:last-child>a{border-top-right-radius:4px}.uk-htmleditor-fullscreen .uk-htmleditor-navbar{border-top:none;border-left:none;border-right:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-content{border:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav>li>a{border-radius:0!important}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-htmleditor-navbar{background:#eee}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:40px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:#f5f5f5;color:#444;outline:0}.uk-htmleditor-navbar-nav>li>a:active{background-color:#ddd;color:#444}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#f5f5f5;color:#444}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:40px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box}

@ -0,0 +1,135 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Nestable
========================================================================== */
.uk-nestable {
padding: 0;
list-style: none;
}
/*
* Disables the default callout shown when you touch and hold a touch target
* Currently only works in Webkit
*/
.uk-nestable a,
.uk-nestable img {
-webkit-touch-callout: none;
}
/* Sub-object `uk-nestable-list`
========================================================================== */
.uk-nestable-list {
margin: 0;
padding-left: 40px;
list-style: none;
}
/* Sub-modifier `uk-nestable-item`
========================================================================== */
/*
* 1. Deactivate browser touch actions in IE11
*/
.uk-nestable-item {
/* 1 */
touch-action: none;
}
.uk-nestable-item + .uk-nestable-item {
margin-top: 10px;
}
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child {
margin-top: 10px;
}
/* Sub-modifier `uk-nestable-dragged`
========================================================================== */
/*
* 1. Reset style
*/
.uk-nestable-dragged {
position: absolute;
z-index: 1050;
pointer-events: none;
/* 1 */
padding-left: 0;
}
/* Sub-modifier `uk-nestable-placeholder`
========================================================================== */
.uk-nestable-placeholder {
position: relative;
}
.uk-nestable-placeholder > * {
opacity: 0;
}
.uk-nestable-placeholder:after {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border: 1px dashed #dddddd;
opacity: 1;
}
/* Empty List
========================================================================== */
.uk-nestable-empty {
min-height: 30px;
}
/* Sub-object `uk-nestable-handle`
========================================================================== */
/*
* Deactivate browser touch actions in IE11
*/
.uk-nestable-handle {
touch-action: none;
}
/* Hover */
.uk-nestable-handle:hover {
cursor: move;
}
/* Sub-object `uk-nestable-moving`
========================================================================== */
.uk-nestable-moving,
.uk-nestable-moving * {
cursor: move;
}
/* [data-nestable-action='toggle']
========================================================================== */
/*
* 1. Makes text unselectable. Happens if double clicked by mistake
*/
[data-nestable-action='toggle'] {
cursor: pointer;
/* 1 */
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Sub-object `.uk-nestable-toggle`
========================================================================== */
.uk-nestable-toggle {
display: inline-block;
visibility: hidden;
}
.uk-nestable-toggle:after {
content: "\f147";
font-family: FontAwesome;
}
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle {
visibility: visible;
}
/*
* Collapsed
*/
.uk-collapsed .uk-nestable-list {
display: none;
}
.uk-collapsed .uk-nestable-toggle:after {
content: "\f196";
}
/* Sub-object `uk-nestable-panel`
========================================================================== */
.uk-nestable-panel {
padding: 5px;
background: #f5f5f5;
border-radius: 4px;
border: 1px solid rgba(0, 0, 0, 0.06);
text-shadow: 0 1px 0 #ffffff;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f5f5f5;border-radius:4px;border:1px solid rgba(0,0,0,.06);text-shadow:0 1px 0 #fff}

@ -0,0 +1,132 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Nestable
========================================================================== */
.uk-nestable {
padding: 0;
list-style: none;
}
/*
* Disables the default callout shown when you touch and hold a touch target
* Currently only works in Webkit
*/
.uk-nestable a,
.uk-nestable img {
-webkit-touch-callout: none;
}
/* Sub-object `uk-nestable-list`
========================================================================== */
.uk-nestable-list {
margin: 0;
padding-left: 40px;
list-style: none;
}
/* Sub-modifier `uk-nestable-item`
========================================================================== */
/*
* 1. Deactivate browser touch actions in IE11
*/
.uk-nestable-item {
/* 1 */
touch-action: none;
}
.uk-nestable-item + .uk-nestable-item {
margin-top: 10px;
}
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child {
margin-top: 10px;
}
/* Sub-modifier `uk-nestable-dragged`
========================================================================== */
/*
* 1. Reset style
*/
.uk-nestable-dragged {
position: absolute;
z-index: 1050;
pointer-events: none;
/* 1 */
padding-left: 0;
}
/* Sub-modifier `uk-nestable-placeholder`
========================================================================== */
.uk-nestable-placeholder {
position: relative;
}
.uk-nestable-placeholder > * {
opacity: 0;
}
.uk-nestable-placeholder:after {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border: 1px dashed #dddddd;
opacity: 1;
}
/* Empty List
========================================================================== */
.uk-nestable-empty {
min-height: 30px;
}
/* Sub-object `uk-nestable-handle`
========================================================================== */
/*
* Deactivate browser touch actions in IE11
*/
.uk-nestable-handle {
touch-action: none;
}
/* Hover */
.uk-nestable-handle:hover {
cursor: move;
}
/* Sub-object `uk-nestable-moving`
========================================================================== */
.uk-nestable-moving,
.uk-nestable-moving * {
cursor: move;
}
/* [data-nestable-action='toggle']
========================================================================== */
/*
* 1. Makes text unselectable. Happens if double clicked by mistake
*/
[data-nestable-action='toggle'] {
cursor: pointer;
/* 1 */
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Sub-object `.uk-nestable-toggle`
========================================================================== */
.uk-nestable-toggle {
display: inline-block;
visibility: hidden;
}
.uk-nestable-toggle:after {
content: "\f147";
font-family: FontAwesome;
}
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle {
visibility: visible;
}
/*
* Collapsed
*/
.uk-collapsed .uk-nestable-list {
display: none;
}
.uk-collapsed .uk-nestable-toggle:after {
content: "\f196";
}
/* Sub-object `uk-nestable-panel`
========================================================================== */
.uk-nestable-panel {
padding: 5px;
background: #f5f5f5;
}

@ -0,0 +1,139 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Nestable
========================================================================== */
.uk-nestable {
padding: 0;
list-style: none;
}
/*
* Disables the default callout shown when you touch and hold a touch target
* Currently only works in Webkit
*/
.uk-nestable a,
.uk-nestable img {
-webkit-touch-callout: none;
}
/* Sub-object `uk-nestable-list`
========================================================================== */
.uk-nestable-list {
margin: 0;
padding-left: 40px;
list-style: none;
}
/* Sub-modifier `uk-nestable-item`
========================================================================== */
/*
* 1. Deactivate browser touch actions in IE11
*/
.uk-nestable-item {
/* 1 */
touch-action: none;
}
.uk-nestable-item + .uk-nestable-item {
margin-top: 10px;
}
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child {
margin-top: 10px;
}
/* Sub-modifier `uk-nestable-dragged`
========================================================================== */
/*
* 1. Reset style
*/
.uk-nestable-dragged {
position: absolute;
z-index: 1050;
pointer-events: none;
/* 1 */
padding-left: 0;
}
/* Sub-modifier `uk-nestable-placeholder`
========================================================================== */
.uk-nestable-placeholder {
position: relative;
}
.uk-nestable-placeholder > * {
opacity: 0;
}
.uk-nestable-placeholder:after {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border: 1px dashed #dddddd;
opacity: 1;
}
/* Empty List
========================================================================== */
.uk-nestable-empty {
min-height: 30px;
}
/* Sub-object `uk-nestable-handle`
========================================================================== */
/*
* Deactivate browser touch actions in IE11
*/
.uk-nestable-handle {
touch-action: none;
}
/* Hover */
.uk-nestable-handle:hover {
cursor: move;
}
/* Sub-object `uk-nestable-moving`
========================================================================== */
.uk-nestable-moving,
.uk-nestable-moving * {
cursor: move;
}
/* [data-nestable-action='toggle']
========================================================================== */
/*
* 1. Makes text unselectable. Happens if double clicked by mistake
*/
[data-nestable-action='toggle'] {
cursor: pointer;
/* 1 */
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Sub-object `.uk-nestable-toggle`
========================================================================== */
.uk-nestable-toggle {
display: inline-block;
visibility: hidden;
}
.uk-nestable-toggle:after {
content: "\f147";
font-family: FontAwesome;
}
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle {
visibility: visible;
}
/*
* Collapsed
*/
.uk-collapsed .uk-nestable-list {
display: none;
}
.uk-collapsed .uk-nestable-toggle:after {
content: "\f196";
}
/* Sub-object `uk-nestable-panel`
========================================================================== */
.uk-nestable-panel {
padding: 5px;
background: #f7f7f7;
border-radius: 4px;
border: 1px solid rgba(0, 0, 0, 0.2);
border-bottom-color: rgba(0, 0, 0, 0.3);
background-origin: border-box;
background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
background-image: linear-gradient(to bottom, #ffffff, #eeeeee);
text-shadow: 0 1px 0 #ffffff;
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f7f7f7;border-radius:4px;border:1px solid rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.3);background-origin:border-box;background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee);text-shadow:0 1px 0 #fff}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f5f5f5}

@ -0,0 +1,98 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Notify
========================================================================== */
/*
* Message container for positioning
*/
.uk-notify {
position: fixed;
top: 10px;
left: 10px;
z-index: 1040;
box-sizing: border-box;
width: 350px;
}
/* Position modifiers
========================================================================== */
.uk-notify-top-right,
.uk-notify-bottom-right {
left: auto;
right: 10px;
}
.uk-notify-top-center,
.uk-notify-bottom-center {
left: 50%;
margin-left: -175px;
}
.uk-notify-bottom-left,
.uk-notify-bottom-right,
.uk-notify-bottom-center {
top: auto;
bottom: 10px;
}
/* Responsiveness
========================================================================== */
/* Phones portrait and smaller */
@media (max-width: 479px) {
/*
* Fit in small screen
*/
.uk-notify {
left: 10px;
right: 10px;
width: auto;
margin: 0;
}
}
/* Sub-object: `uk-notify-message`
========================================================================== */
.uk-notify-message {
position: relative;
margin-bottom: 10px;
padding: 15px;
background: #444444;
color: #ffffff;
font-size: 16px;
line-height: 22px;
cursor: pointer;
border: 1px solid #444444;
border-radius: 4px;
}
/* Close in notify
========================================================================== */
.uk-notify-message > .uk-close {
visibility: hidden;
float: right;
}
.uk-notify-message:hover > .uk-close {
visibility: visible;
}
/* Modifier: `uk-alert-info`
========================================================================== */
.uk-notify-message-primary {
background: #ebf7fd;
color: #2d7091;
border-color: rgba(45, 112, 145, 0.3);
}
/* Modifier: `uk-alert-success`
========================================================================== */
.uk-notify-message-success {
background: #f2fae3;
color: #659f13;
border-color: rgba(101, 159, 19, 0.3);
}
/* Modifier: `uk-notify-message-warning`
========================================================================== */
.uk-notify-message-warning {
background: #fffceb;
color: #e28327;
border-color: rgba(226, 131, 39, 0.3);
}
/* Modifier: `uk-notify-message-danger`
========================================================================== */
.uk-notify-message-danger {
background: #fff1f0;
color: #d85030;
border-color: rgba(216, 80, 48, 0.3);
}

@ -0,0 +1,2 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-notify{position:fixed;top:10px;left:10px;z-index:1040;box-sizing:border-box;width:350px}.uk-notify-bottom-right,.uk-notify-top-right{left:auto;right:10px}.uk-notify-bottom-center,.uk-notify-top-center{left:50%;margin-left:-175px}.uk-notify-bottom-center,.uk-notify-bottom-left,.uk-notify-bottom-right{top:auto;bottom:10px}@media (max-width:479px){.uk-notify{left:10px;right:10px;width:auto;margin:0}}.uk-notify-message{position:relative;margin-bottom:10px;padding:15px;background:#444;color:#fff;font-size:16px;line-height:22px;cursor:pointer;border:1px solid #444;border-radius:4px}.uk-notify-message>.uk-close{visibility:hidden;float:right}.uk-notify-message:hover>.uk-close{visibility:visible}.uk-notify-message-primary{background:#ebf7fd;color:#2d7091;border-color:rgba(45,112,145,.3)}.uk-notify-message-success{background:#f2fae3;color:#659f13;border-color:rgba(101,159,19,.3)}.uk-notify-message-warning{background:#fffceb;color:#e28327;border-color:rgba(226,131,39,.3)}.uk-notify-message-danger{background:#fff1f0;color:#d85030;border-color:rgba(216,80,48,.3)}

@ -0,0 +1,92 @@
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/* ========================================================================
Component: Notify
========================================================================== */
/*
* Message container for positioning
*/
.uk-notify {
position: fixed;
top: 10px;
left: 10px;
z-index: 1040;
box-sizing: border-box;
width: 350px;
}
/* Position modifiers
========================================================================== */
.uk-notify-top-right,
.uk-notify-bottom-right {
left: auto;
right: 10px;
}
.uk-notify-top-center,
.uk-notify-bottom-center {
left: 50%;
margin-left: -175px;
}
.uk-notify-bottom-left,
.uk-notify-bottom-right,
.uk-notify-bottom-center {
top: auto;
bottom: 10px;
}
/* Responsiveness
========================================================================== */
/* Phones portrait and smaller */
@media (max-width: 479px) {
/*
* Fit in small screen
*/
.uk-notify {
left: 10px;
right: 10px;
width: auto;
margin: 0;
}
}
/* Sub-object: `uk-notify-message`
========================================================================== */
.uk-notify-message {
position: relative;
margin-bottom: 10px;
padding: 15px;
background: #444444;
color: #ffffff;
font-size: 16px;
line-height: 22px;
cursor: pointer;
}
/* Close in notify
========================================================================== */
.uk-notify-message > .uk-close {
visibility: hidden;
float: right;
}
.uk-notify-message:hover > .uk-close {
visibility: visible;
}
/* Modifier: `uk-alert-info`
========================================================================== */
.uk-notify-message-primary {
background: #ebf7fd;
color: #2d7091;
}
/* Modifier: `uk-alert-success`
========================================================================== */
.uk-notify-message-success {
background: #f2fae3;
color: #659f13;
}
/* Modifier: `uk-notify-message-warning`
========================================================================== */
.uk-notify-message-warning {
background: #fffceb;
color: #e28327;
}
/* Modifier: `uk-notify-message-danger`
========================================================================== */
.uk-notify-message-danger {
background: #fff1f0;
color: #d85030;
}

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

Loading…
Cancel
Save