Merge pull request #16 from mipt-npm/magprog

Magprog
This commit is contained in:
Alexander Nozik 2021-03-29 23:12:40 +03:00 committed by GitHub
commit 51340e23dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
111 changed files with 6688 additions and 18436 deletions

View File

@ -59,5 +59,6 @@ module.exports = {
redirectComponent: require.resolve(`./src/components/redirect.js`),
},
},
'gatsby-plugin-sass',
],
}

View File

@ -5,6 +5,7 @@
"version": "0.2.0",
"dependencies": {
"bootstrap": "4.6.0",
"breakpoints": "^0.0.0",
"gatsby": "3.1.1",
"gatsby-awesome-pagination": "0.3.6",
"gatsby-cli": "3.1.0",
@ -22,25 +23,25 @@
"gatsby-source-graphql": "3.1.0",
"gatsby-transformer-remark": "3.1.0",
"gatsby-transformer-sharp": "3.1.0",
"node-sass": "^5.0.0",
"gatsby-plugin-sass": "4.1.0",
"html-react-parser": "1.2.4",
"imagemin-pngquant": "9.0.2",
"jquery": "3.6.0",
"jquery.scrollex": "^0.2.1",
"jquery.scrolly": "^0.0.1",
"katex": "0.13.0",
"mini-css-extract-plugin": "1.3.9",
"ncp": "2.0.0",
"netlify-cms-app": "2.14.32",
"prop-types": "15.7.2",
"react": "17.0.2",
"react-bootstrap": "1.5.2",
"react-helmet": "6.1.0",
"react-intl": "^5.13.5",
"redux": "4.0.5",
"typescript": "^4.2.3",
"vertical-timeline-component-for-react": "1.0.7",
"react-scrollspy": "^3.4.3",
"smoothscroll-polyfill": "^0.4.4"
"redux": "4.0.5",
"gatsby-plugin-sass": "^4.1.0",
"node-sass": "^5.0.0",
"smoothscroll-polyfill": "^0.4.4",
"vertical-timeline-component-for-react": "1.0.7"
},
"devDependencies": {
"autoprefixer": "10.2.5",

View File

@ -1,5 +1,5 @@
import React from "react"
import "../styles/footer.css"
import "../styles/footer.scss"
const NpmFooter = () => (
<footer className="blockquote-footer bg-dark">

View File

@ -6,16 +6,21 @@ import NpmNavbar from "./navBar"
import NpmFooter from "./footer"
import SEO from "./seo"
import "../styles/layout.css"
import "../styles/main.css"
import "../styles/layout.scss"
import "../styles/main.scss"
import "katex/dist/katex.min.css"
import {Helmet} from "react-helmet";
const NpmLayout = ({children}) => {
const intl = useIntl();
const lang = intl.locale;
return (
<>
<Helmet>
<html className="npm-site"/>
</Helmet>
<SEO lang={lang} title={intl.formatMessage({id: "title"})}/>
<NpmNavbar/>
<div className="container">
<main>{children}</main>

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 451 KiB

View File

@ -0,0 +1,47 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Basic */
// MSIE: Required for IEMobile.
@-ms-viewport {
width: device-width;
}
// MSIE: Prevents scrollbar from overlapping content.
body {
-ms-overflow-style: scrollbar;
}
// Ensures page width is always >=320px.
@include breakpoint('<=xsmall') {
html, body {
min-width: 320px;
}
}
// Set box model to border-box.
// Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
body {
background: _palette(bg);
// Stops initial animations until page loads.
&.is-preload {
*, *:before, *:after {
@include vendor('animation', 'none !important');
@include vendor('transition', 'none !important');
}
}
}

View File

@ -0,0 +1,76 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
// Reset.
// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain)
html, body, div, span, applet, object,
iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
pre, a, abbr, acronym, address, big, cite,
code, del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var, b,
u, i, center, dl, dt, dd, ol, ul, li, fieldset,
form, label, legend, table, caption, tbody,
tfoot, thead, tr, th, td, article, aside,
canvas, details, embed, figure, figcaption,
footer, header, hgroup, menu, nav, output, ruby,
section, summary, time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
&:before,
&:after {
content: '';
content: none;
}
}
table {
border-collapse: collapse;
border-spacing: 0;
}
body {
-webkit-text-size-adjust: none;
}
mark {
background-color: transparent;
color: inherit;
}
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input, select, textarea {
-moz-appearance: none;
-webkit-appearance: none;
-ms-appearance: none;
appearance: none;
}

View File

@ -0,0 +1,200 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Type */
body, input, select, textarea {
color: _palette(fg);
font-family: _font(family);
font-size: 16.5pt;
font-weight: _font(weight);
line-height: 1.75;
@include breakpoint('<=xlarge') {
font-size: 13pt;
}
@include breakpoint('<=large') {
font-size: 12pt;
}
@include breakpoint('<=xxsmall') {
font-size: 11pt;
}
}
a {
@include vendor('transition', (
'color #{_duration(transition)} ease',
'border-bottom-color #{_duration(transition)} ease'
));
border-bottom: dotted 1px _palette(fg-light);
color: inherit;
text-decoration: none;
&:hover {
border-bottom-color: transparent;
color: _palette(fg-bold);
}
}
strong, b {
color: _palette(fg-bold);
font-weight: _font(weight-bold);
}
em, i {
font-style: italic;
}
p {
margin: 0 0 _size(element-margin) 0;
}
h1, h2, h3, h4, h5, h6 {
color: _palette(fg-bold);
font-weight: _font(weight-bold);
line-height: 1.5;
margin: 0 0 (_size(element-margin) * 0.25) 0;
a {
color: inherit;
text-decoration: none;
}
}
h1 {
font-size: 2.75em;
&.major {
margin: 0 0 (_size(element-margin) * 0.65) 0;
position: relative;
padding-bottom: 0.35em;
&:after {
@include vendor('background-image', 'linear-gradient(to right, #{_palette(accent1)}, #{_palette(accent3)})');
@include vendor('transition', 'max-width #{_duration(transition)} ease');
border-radius: 0.2em;
bottom: 0;
content: '';
height: 0.05em;
position: absolute;
right: 0;
width: 100%;
}
}
}
h2 {
font-size: 1.75em;
}
h3 {
font-size: 1.1em;
}
h4 {
font-size: 1em;
}
h5 {
font-size: 0.8em;
}
h6 {
font-size: 0.6em;
}
@include breakpoint('<=small') {
h1 {
font-size: 2em;
}
h2 {
font-size: 1.25em;
}
h3 {
font-size: 1em;
}
h4 {
font-size: 0.8em;
}
h5 {
font-size: 0.6em;
}
h6 {
font-size: 0.6em;
}
}
sub {
font-size: 0.8em;
position: relative;
top: 0.5em;
}
sup {
font-size: 0.8em;
position: relative;
top: -0.5em;
}
blockquote {
border-left: solid (_size(border-width) * 4) _palette(border);
font-style: italic;
margin: 0 0 _size(element-margin) 0;
padding: (_size(element-margin) / 4) 0 (_size(element-margin) / 4) _size(element-margin);
}
code {
background: _palette(border-bg);
border-radius: _size(border-radius);
border: solid _size(border-width) _palette(border);
font-family: _font(family-fixed);
font-size: 0.9em;
margin: 0 0.25em;
padding: 0.25em 0.65em;
}
pre {
-webkit-overflow-scrolling: touch;
font-family: _font(family-fixed);
font-size: 0.9em;
margin: 0 0 _size(element-margin) 0;
code {
display: block;
line-height: 1.75em;
padding: 1em 1.5em;
overflow-x: auto;
}
}
hr {
border: 0;
border-bottom: solid _size(border-width) _palette(border);
margin: _size(element-margin) 0;
&.major {
margin: (_size(element-margin) * 1.5) 0;
}
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}

View File

@ -0,0 +1,101 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Actions */
ul.actions {
@include vendor('display', 'flex');
cursor: default;
list-style: none;
margin-left: (_size(element-margin) * -0.5);
padding-left: 0;
li {
padding: 0 0 0 (_size(element-margin) * 0.5);
vertical-align: middle;
}
&.special {
@include vendor('justify-content', 'center');
width: 100%;
margin-left: 0;
li {
&:first-child {
padding-left: 0;
}
}
}
&.stacked {
@include vendor('flex-direction', 'column');
margin-left: 0;
li {
padding: (_size(element-margin) * 0.65) 0 0 0;
&:first-child {
padding-top: 0;
}
}
}
&.fit {
width: calc(100% + #{_size(element-margin) * 0.5});
li {
@include vendor('flex-grow', '1');
@include vendor('flex-shrink', '1');
width: 100%;
> * {
width: 100%;
}
}
&.stacked {
width: 100%;
}
}
@include breakpoint('<=xsmall') {
&:not(.fixed) {
@include vendor('flex-direction', 'column');
margin-left: 0;
width: 100% !important;
li {
@include vendor('flex-grow', '1');
@include vendor('flex-shrink', '1');
padding: (_size(element-margin) * 0.5) 0 0 0;
text-align: center;
width: 100%;
> * {
width: 100%;
}
&:first-child {
padding-top: 0;
}
input[type="submit"],
input[type="reset"],
input[type="button"],
button,
.button {
width: 100%;
&.icon {
&:before {
margin-left: -0.5rem;
}
}
}
}
}
}
}

View File

@ -0,0 +1,26 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Box */
.box {
border-radius: _size(border-radius);
border: solid _size(border-width) _palette(border);
margin-bottom: _size(element-margin);
padding: 1.5em;
> :last-child,
> :last-child > :last-child,
> :last-child > :last-child > :last-child {
margin-bottom: 0;
}
&.alt {
border: 0;
border-radius: 0;
padding: 0;
}
}

View File

@ -0,0 +1,106 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Button */
input[type="submit"],
input[type="reset"],
input[type="button"],
button,
.button {
@include vendor('appearance', 'none');
@include vendor('transition', (
'border-color #{_duration(transition)} ease'
));
background-color: transparent;
border: solid 1px !important;
border-color: _palette(border) !important;
border-radius: 3em;
color: _palette(fg-bold) !important;
cursor: pointer;
display: inline-block;
font-size: 0.6em;
font-weight: _font(weight-bold);
height: calc(4.75em + 2px);
letter-spacing: _font(kerning-alt);
line-height: 4.75em;
outline: 0;
padding: 0 3.75em;
position: relative;
text-align: center;
text-decoration: none;
text-transform: uppercase;
white-space: nowrap;
&:after {
@include vendor('transform', 'scale(0.25)');
@include vendor('pointer-events', 'none');
@include vendor('transition', (
'opacity #{_duration(transition)} ease',
'transform #{_duration(transition)} ease'
));
background: _palette(fg-bold);
border-radius: 3em;
content: '';
height: 100%;
left: 0;
opacity: 0;
position: absolute;
top: 0;
width: 100%;
}
&.icon {
&:before {
margin-right: 0.75em;
}
}
&.fit {
width: 100%;
}
&.small {
font-size: 0.4em;
}
&.large {
font-size: 0.8em;
}
&.primary {
background-color: _palette(fg-bold);
color: _palette(bg) !important;
&:after {
display: none;
}
}
&.disabled,
&:disabled {
cursor: default;
opacity: 0.5;
@include vendor('pointer-events', 'none');
}
&:hover {
border-color: _palette(fg) !important;
&:after {
opacity: 0.05;
@include vendor('transform', 'scale(1)');
}
&:active {
border-color: _palette(fg-bold) !important;
&:after {
opacity: 0.1;
}
}
}
}

View File

@ -0,0 +1,21 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Contact */
ul.contact {
list-style: none;
padding: 0;
> li {
padding: 0;
margin: 1.5em 0 0 0;
&:first-child {
margin-top: 0;
}
}
}

View File

@ -0,0 +1,98 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Features */
.features {
@include vendor('display', 'flex');
@include vendor('flex-wrap', 'wrap');
border-radius: _size(border-radius);
border: solid 1px _palette(border);
background: _palette(border-bg);
margin: 0 0 _size(element-margin) 0;
section {
@include padding(3em, 3em, (0.5em, 0, 0, 4em));
width: 50%;
border-top: solid 1px _palette(border);
position: relative;
&:nth-child(-n + 2) {
border-top-width: 0;
}
&:nth-child(2n) {
border-left: solid 1px _palette(border);
}
.icon {
@include vendor('transition', (
'opacity #{_duration(activation) * 0.5} ease',
'transform #{_duration(activation) * 0.5} ease'
));
@include vendor('transition-delay', '1s');
@include vendor('transform', 'scale(1)');
position: absolute;
left: 3em;
top: 3em;
opacity: 1;
}
@for $i from 1 through _misc(max-features) {
&:nth-child(#{$i}) {
.icon {
@include vendor('transition-delay', '#{(_duration(transition) * 0.75 * $i)}');
}
}
}
}
&.inactive {
section {
.icon {
@include vendor('transform', 'scale(0.5)');
opacity: 0;
}
}
}
@include breakpoint('<=medium') {
display: block;
section {
border-top-width: 1px !important;
border-left-width: 0 !important;
width: 100%;
&:first-child {
border-top-width: 0 !important;
}
}
}
@include breakpoint('<=small') {
section {
@include padding(2em, 1.5em, (0.5em, 0, 0, 4em));
.icon {
left: 1.5em;
top: 2em;
}
}
}
@include breakpoint('<=xsmall') {
section {
@include padding(2em, 1.5em, (0, 0, 0, 0));
.icon {
left: 0;
position: relative;
top: 0;
}
}
}
}

View File

@ -0,0 +1,236 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Form */
form {
margin: 0 0 _size(element-margin) 0;
> :last-child {
margin-bottom: 0;
}
> .fields {
$gutter: (_size(element-margin) * 0.75);
@include vendor('display', 'flex');
@include vendor('flex-wrap', 'wrap');
width: calc(100% + #{$gutter * 2});
margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1);
> .field {
@include vendor('flex-grow', '0');
@include vendor('flex-shrink', '0');
padding: $gutter 0 0 $gutter;
width: calc(100% - #{$gutter * 1});
&.half {
width: calc(50% - #{$gutter * 0.5});
}
&.third {
width: calc(#{100% / 3} - #{$gutter * (1 / 3)});
}
&.quarter {
width: calc(25% - #{$gutter * 0.25});
}
}
}
@include breakpoint('<=xsmall') {
> .fields {
$gutter: (_size(element-margin) * 0.75);
width: calc(100% + #{$gutter * 2});
margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1);
> .field {
padding: $gutter 0 0 $gutter;
width: calc(100% - #{$gutter * 1});
&.half {
width: calc(100% - #{$gutter * 1});
}
&.third {
width: calc(100% - #{$gutter * 1});
}
&.quarter {
width: calc(100% - #{$gutter * 1});
}
}
}
}
}
label {
color: _palette(fg-bold);
font-weight: _font(weight-bold);
line-height: 1.5;
margin: 0 0 (_size(element-margin) * 0.35) 0;
display: block;
font-size: 1.1em;
}
input[type="text"],
input[type="password"],
input[type="email"],
input[type="tel"],
select,
textarea {
@include vendor('appearance', 'none');
background: _palette(border-bg);
border-radius: _size(border-radius);
border: none;
border: solid _size(border-width) _palette(border);
color: inherit;
display: block;
outline: 0;
padding: 0 1em;
text-decoration: none;
width: 100%;
&:invalid {
box-shadow: none;
}
&:focus {
border-color: _palette(fg-bold);
box-shadow: 0 0 0 _size(border-width) _palette(fg-bold);
}
}
select {
background-image: svg-url("<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'><path d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='#{_palette(border)}' /></svg>");
background-size: 1.25rem;
background-repeat: no-repeat;
background-position: calc(100% - 1rem) center;
height: _size(element-height);
padding-right: _size(element-height);
text-overflow: ellipsis;
option {
color: _palette(fg-bold);
background: _palette(bg);
}
&:focus {
&::-ms-value {
background-color: transparent;
}
}
&::-ms-expand {
display: none;
}
}
input[type="text"],
input[type="password"],
input[type="email"],
select {
height: _size(element-height);
}
textarea {
padding: 0.75em 1em;
body.is-ie & {
min-height: 10em;
}
}
input[type="checkbox"],
input[type="radio"], {
@include vendor('appearance', 'none');
display: block;
float: left;
margin-right: -2em;
opacity: 0;
width: 1em;
z-index: -1;
& + label {
@include icon;
color: _palette(fg);
cursor: pointer;
display: inline-block;
font-size: 1em;
font-weight: _font(weight);
padding-left: (_size(element-height) * 0.6) + 0.75em;
padding-right: 0.75em;
position: relative;
&:before {
background: _palette(border-bg);
border-radius: _size(border-radius);
border: solid _size(border-width) _palette(border);
content: '';
display: inline-block;
height: (_size(element-height) * 0.6);
left: 0;
line-height: (_size(element-height) * 0.575);
position: absolute;
text-align: center;
top: 0;
width: (_size(element-height) * 0.6);
}
}
&:checked + label {
&:before {
background: _palette(fg-bold);
border-color: _palette(fg-bold);
color: _palette(accent3);
content: '\f00c';
}
}
&:focus + label {
&:before {
border-color: _palette(fg-bold);
box-shadow: 0 0 0 _size(border-width) _palette(fg-bold);
}
}
}
input[type="checkbox"] {
& + label {
&:before {
border-radius: _size(border-radius);
}
}
}
input[type="radio"] {
& + label {
&:before {
border-radius: 100%;
}
}
}
::-webkit-input-placeholder {
color: _palette(fg-light) !important;
opacity: 1.0;
}
:-moz-placeholder {
color: _palette(fg-light) !important;
opacity: 1.0;
}
::-moz-placeholder {
color: _palette(fg-light) !important;
opacity: 1.0;
}
:-ms-input-placeholder {
color: _palette(fg-light) !important;
opacity: 1.0;
}

View File

@ -0,0 +1,57 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Icon */
.icon {
@include icon;
border-bottom: none;
position: relative;
> .label {
display: none;
}
&.major {
width: 2.5em;
height: 2.5em;
display: block;
background: _palette(fg-bold);
border-radius: 100%;
color: _palette(bg);
text-align: center;
line-height: 2.5em;
margin: 0 0 (_size(element-margin) * 0.65) 0;
&:before {
font-size: 1.25em;
.wrapper.style1 & {
color: _palette(accent1);
}
.wrapper.style1-alt & {
color: _palette(accent1-alt);
}
.wrapper.style2 & {
color: _palette(accent2);
}
.wrapper.style2-alt & {
color: _palette(accent2-alt);
}
.wrapper.style3 & {
color: _palette(accent3);
}
.wrapper.style3-alt & {
color: _palette(accent3-alt);
}
}
}
}

View File

@ -0,0 +1,31 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Icons */
ul.icons {
cursor: default;
list-style: none;
padding-left: 0;
li {
display: inline-block;
padding: 0 0.75em 0 0;
&:last-child {
padding-right: 0;
}
> a, > span {
border: 0;
@include icon;
.label {
display: none;
}
}
}
}

View File

@ -0,0 +1,60 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Image */
.image {
border-radius: _size(border-radius);
border: 0;
display: inline-block;
position: relative;
img {
border-radius: _size(border-radius);
display: block;
}
&.left,
&.right {
max-width: 40%;
img {
width: 100%;
}
}
&.left {
float: left;
margin: 0 1.5em 1em 0;
top: 0.25em;
}
&.right {
float: right;
margin: 0 0 1em 1.5em;
top: 0.25em;
}
&.fit {
display: block;
margin: 0 0 _size(element-margin) 0;
width: 100%;
img {
width: 100%;
}
}
&.main {
display: block;
margin: 0 0 (_size(element-margin) * 1.5) 0;
width: 100%;
img {
width: 100%;
}
}
}

View File

@ -0,0 +1,56 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* List */
ol {
list-style: decimal;
margin: 0 0 _size(element-margin) 0;
padding-left: 1.25em;
li {
padding-left: 0.25em;
}
}
ul {
list-style: disc;
margin: 0 0 _size(element-margin) 0;
padding-left: 1em;
li {
padding-left: 0.5em;
}
&.alt {
list-style: none;
padding-left: 0;
li {
border-top: solid _size(border-width) _palette(border);
padding: 0.5em 0;
&:first-child {
border-top: 0;
padding-top: 0;
}
}
}
}
dl {
margin: 0 0 _size(element-margin) 0;
dt {
display: block;
font-weight: _font(weight-bold);
margin: 0 0 (_size(element-margin) * 0.5) 0;
}
dd {
margin-left: _size(element-margin);
}
}

View File

@ -0,0 +1,36 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Menu */
ul.menu {
list-style: none;
padding: 0;
> li {
border-left: solid 1px _palette(border);
display: inline-block;
line-height: 1;
margin-left: 1.5em;
padding: 0 0 0 1.5em;
&:first-child {
border-left: 0;
margin: 0;
padding-left: 0;
}
}
@include breakpoint('<=xsmall') {
> li {
border-left: 0;
display: block;
line-height: inherit;
margin: 0.5em 0 0 0;
padding-left: 0;
}
}
}

View File

@ -0,0 +1,31 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Row */
.row {
@include html-grid(1.5em);
@include breakpoint('<=xlarge') {
@include html-grid(1.5em, 'xlarge');
}
@include breakpoint('<=large') {
@include html-grid(1.5em, 'large');
}
@include breakpoint('<=medium') {
@include html-grid(1.5em, 'medium');
}
@include breakpoint('<=small') {
@include html-grid(1.5em, 'small');
}
@include breakpoint('<=xsmall') {
@include html-grid(1.5em, 'xsmall');
}
}

View File

@ -0,0 +1,41 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Section/Article */
section, article {
&.special {
text-align: center;
}
}
header {
p {
color: _palette(fg-light);
position: relative;
margin: 0 0 (_size(element-margin) * 0.75) 0;
}
h2 + p {
font-size: 1.25em;
margin-top: (_size(element-margin) * -0.5);
line-height: 1.5em;
}
h3 + p {
font-size: 1.1em;
margin-top: (_size(element-margin) * -0.4);
line-height: 1.5em;
}
h4 + p,
h5 + p,
h6 + p {
font-size: 0.9em;
margin-top: (_size(element-margin) * -0.3);
line-height: 1.5em;
}
}

View File

@ -0,0 +1,91 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Split */
.split {
@include vendor('display', 'flex');
> * {
width: calc(50% - 2.5em);
}
> :nth-child(2n - 1) {
padding-right: 2.5em;
border-right: solid 1px _palette(border);
}
> :nth-child(2n) {
padding-left: 2.5em;
}
&.style1 {
> :nth-child(2n - 1) {
width: calc(66.66666% - 2.5em);
}
> :nth-child(2n) {
width: calc(33.33333% - 2.5em);
}
}
@include breakpoint('<=xlarge') {
> * {
width: calc(50% - 2em);
}
> :nth-child(2n - 1) {
padding-right: 2em;
}
> :nth-child(2n) {
padding-left: 2em;
}
&.style1 {
> :nth-child(2n - 1) {
width: calc(66.66666% - 2em);
}
> :nth-child(2n) {
width: calc(33.33333% - 2em);
}
}
}
@include breakpoint('<=medium') {
display: block;
> * {
border-top: solid 1px _palette(border);
margin: 4em 0 0 0;
padding: 4em 0 0 0;
width: 100% !important;
}
> :nth-child(2n - 1) {
border-right: 0;
padding-right: 0;
}
> :nth-child(2n) {
padding-left: 0;
}
> :first-child {
border-top: 0;
margin-top: 0;
padding-top: 0;
}
}
@include breakpoint('<=small') {
> * {
margin: 3em 0 0 0;
padding: 3em 0 0 0;
}
}
}

View File

@ -0,0 +1,131 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Spotlights */
.spotlights {
> section {
@include vendor('display', 'flex');
@include vendor('flex-direction', 'row');
min-height: 22.5em;
body.is-ie & {
min-height: 0;
}
> .image {
background-position: center center;
background-size: cover;
border-radius: 0;
display: block;
position: relative;
width: 25em;
img {
border-radius: 0;
display: block;
}
&:before {
@include vendor('transition', 'opacity #{_duration(activation)} ease');
background: transparentize(_palette(bg), 0.1);
content: '';
display: block;
height: 100%;
left: 0;
opacity: 0;
position: absolute;
top: 0;
width: 100%;
}
}
> .content {
@include padding(4em, 5em);
@include vendor('display', 'flex');
@include vendor('flex-direction', 'column');
@include vendor('justify-content', 'center');
width: #{_size(inner-width) - 25em};
-ms-flex: 1;
> .inner {
@include vendor('transform', 'translateX(0) translateY(0)');
@include vendor('transition', (
'opacity #{_duration(activation)} ease',
'transform #{_duration(activation)} ease'
));
opacity: 1;
}
}
&:nth-child(1) {
}
&:nth-child(2) {
background-color: rgba(0, 0, 0, 0.05);
}
&:nth-child(3) {
background-color: rgba(0, 0, 0, 0.1);
}
&.inactive,
body.is-preload & {
> .image {
&:before {
opacity: 1;
}
}
> .content {
> .inner {
@include vendor('transform', 'translateX(-1em)');
opacity: 0;
}
}
}
@include breakpoint('<=xlarge') {
> .content {
@include padding(4em, 4em);
}
}
@include breakpoint('<=medium') {
display: block;
> .image {
width: 100%;
height: 50vh;
}
> .content {
width: 100%;
}
&.inactive,
body.is-preload & {
> .content {
> .inner {
@include vendor('transform', 'translateY(1em)');
}
}
}
}
@include breakpoint('<=small') {
> .image {
height: 50vh;
min-height: 15em;
}
> .content {
@include padding(3em, 2em);
}
}
}
}

View File

@ -0,0 +1,81 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Table */
.table-wrapper {
-webkit-overflow-scrolling: touch;
overflow-x: auto;
}
table {
margin: 0 0 _size(element-margin) 0;
width: 100%;
tbody {
tr {
border: solid _size(border-width) _palette(border);
border-left: 0;
border-right: 0;
&:nth-child(2n + 1) {
background-color: _palette(border-bg);
}
}
}
td {
padding: 0.75em 0.75em;
}
th {
color: _palette(fg-bold);
font-size: 1em;
font-weight: _font(weight-bold);
padding: 0 0.75em 0.75em 0.75em;
text-align: left;
}
thead {
border-bottom: solid (_size(border-width) * 2) _palette(border);
}
tfoot {
border-top: solid (_size(border-width) * 2) _palette(border);
}
&.alt {
border-collapse: separate;
tbody {
tr {
td {
border: solid _size(border-width) _palette(border);
border-left-width: 0;
border-top-width: 0;
&:first-child {
border-left-width: _size(border-width);
}
}
&:first-child {
td {
border-top-width: _size(border-width);
}
}
}
}
thead {
border-bottom: 0;
}
tfoot {
border-top: 0;
}
}
}

View File

@ -0,0 +1,139 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Wrapper */
.wrapper {
position: relative;
> .inner {
@include padding(5em, 5em);
max-width: 100%;
width: _size(inner-width);
@include breakpoint('<=xlarge') {
@include padding(4em, 4em);
}
@include breakpoint('<=large') {
width: 100%;
}
@include breakpoint('<=small') {
@include padding(3em, 2em);
}
}
&.alt {
background-color: _palette(bg-alt);
}
&.style1 {
background-color: _palette(accent1);
}
&.style1-alt {
background-color: _palette(accent1-alt);
}
&.style2 {
background-color: _palette(accent2);
}
&.style2-alt {
background-color: _palette(accent2-alt);
}
&.style3 {
background-color: _palette(accent3);
}
&.style3-alt {
background-color: _palette(accent3-alt);
}
&.fullscreen {
@include vendor('display', 'flex');
@include vendor('flex-direction', 'column');
@include vendor('justify-content', 'center');
min-height: 100vh;
body.is-ie & {
height: 100vh;
}
@include breakpoint('<=large') {
min-height: calc(100vh - 2.5em);
body.is-ie & {
height: calc(100vh - 2.5em);
}
}
@include breakpoint('<=small') {
padding: 2em 0;
min-height: 0;
body.is-ie & {
height: auto;
}
}
}
&.fade-up {
> .inner {
@include vendor('transform', 'translateY(0)');
@include vendor('transition', (
'opacity #{_duration(activation)} ease',
'transform #{_duration(activation)} ease'
));
opacity: 1.0;
}
&.inactive,
body.is-preload & {
> .inner {
opacity: 0;
@include vendor('transform', 'translateY(1em)');
}
}
}
&.fade-down {
> .inner {
@include vendor('transform', 'translateY(0)');
@include vendor('transition', (
'opacity #{_duration(activation)} ease',
'transform #{_duration(activation)} ease'
));
opacity: 1.0;
}
&.inactive,
body.is-preload & {
> .inner {
opacity: 0;
@include vendor('transform', 'translateY(-1em)');
}
}
}
&.fade {
> .inner {
@include vendor('transition', (
'opacity #{_duration(activation)} ease'
));
opacity: 1.0;
}
&.inactive,
body.is-preload & {
> .inner {
opacity: 0;
}
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1000px" height="500px"
viewBox="0 0 1000 500" zoomAndPan="disable" preserveAspectRatio="none">
<style type="text/css"><![CDATA[
line
{
stroke: rgba(255,255,255,0.05);
stroke-width: 1px;
}
]]></style>
<line x1="1100" y1="500" x2="-1000" y2="250"/>
<line x1="1100" y1="500" x2="-1000" y2="-100"/>
<line x1="1100" y1="500" x2="-1000" y2="-500"/>
<line x1="1100" y1="500" x2="-250" y2="-500"/>
<line x1="1100" y1="500" x2="300" y2="-500"/>
<line x1="1100" y1="500" x2="750" y2="-500"/>
<line x1="1750" y1="0" x2="750" y2="500"/>
<line x1="1500" y1="0" x2="500" y2="500"/>
<line x1="1150" y1="0" x2="150" y2="500"/>
<line x1="700" y1="0" x2="-300" y2="500"/>
<line x1="150" y1="0" x2="-850" y2="500"/>
</svg>

After

Width:  |  Height:  |  Size: 823 B

View File

@ -0,0 +1,38 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Footer */
#footer {
#sidebar + #wrapper + & {
margin-left: _size(sidebar-width);
@include breakpoint('<=large') {
margin-left: 0;
}
}
> .inner {
a {
border-bottom-color: _palette(border);
&:hover {
border-bottom-color: transparent;
}
}
.menu {
font-size: 0.8em;
color: _palette(border);
}
}
#header + #wrapper + & {
> .inner {
margin: 0 auto;
}
}
}

View File

@ -0,0 +1,98 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Header */
#header {
@include vendor('display', 'flex');
background-color: _palette(accent1);
cursor: default;
padding: 1.75em 2em;
> .title {
border: 0;
color: _palette(fg-bold);
display: block;
font-size: 1.25em;
font-weight: _font(weight-bold);
}
> nav {
@include vendor('flex', '1');
text-align: right;
> ul {
margin: 0;
padding: 0;
> li {
display: inline-block;
margin-left: 1.75em;
padding: 0;
vertical-align: middle;
&:first-child {
margin-left: 0;
}
&.active {
a {
color: _palette(fg-bold);
}
}
a {
border: 0;
color: _palette(fg-light);
display: inline-block;
font-size: 0.6em;
font-weight: _font(weight-bold);
letter-spacing: _font(kerning-alt);
text-transform: uppercase;
&:hover {
color: _palette(fg);
}
&.active {
color: _palette(fg-bold);
}
}
}
}
}
@include breakpoint('<=small') {
padding: 1em 2em;
}
@include breakpoint('<=xsmall') {
display: block;
padding: 0 2em;
text-align: left;
.title {
font-size: 1.25em;
padding: 1em 0;
}
> nav {
border-top: solid 1px _palette(border);
text-align: inherit;
> ul {
> li {
margin-left: 1.5em;
a {
height: 6em;
line-height: 6em;
}
}
}
}
}
}

View File

@ -0,0 +1,33 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Intro */
#intro {
background-attachment: fixed;
background-image: url('images/intro.svg');
background-position: top right;
background-repeat: no-repeat;
background-size: 100% 100%;
p {
font-size: 1.25em;
@include breakpoint('<=medium') {
br {
display: none;
}
}
@include breakpoint('<=small') {
font-size: 1em;
}
}
@include breakpoint('<=large') {
background-attachment: scroll;
}
}

View File

@ -0,0 +1,205 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Sidebar */
#sidebar {
@include padding(2.5em, 2.5em);
background: _palette(bg);
cursor: default;
height: 100vh;
left: 0;
overflow-x: hidden;
overflow-y: auto;
position: fixed;
text-align: right;
top: 0;
width: _size(sidebar-width);
z-index: _misc(z-index-base);
> .inner {
@include vendor('display', 'flex');
@include vendor('flex-direction', 'column');
@include vendor('justify-content', 'center');
@include vendor('transform', 'translateY(0)');
@include vendor('transition', ('opacity #{_duration(activation)} ease'));
min-height: 100%;
opacity: 1;
width: 100%;
body.is-ie & {
height: 100%;
}
}
nav {
> ul {
list-style: none;
padding: 0;
> li {
@include vendor('transform', 'translateY(0)');
@include vendor(
'transition',
(
'opacity #{_duration(activation) * 0.15} ease',
'transform #{_duration(activation) * 0.75} ease'
)
);
margin: 1.5em 0 0 0;
opacity: 1;
padding: 0;
position: relative;
&:first-child {
margin: 0;
}
@for $i from 1 through _misc(max-sidebar-links) {
&:nth-child(#{$i}) {
@include vendor(
'transition-delay',
'#{(_duration(activation) * 0.2 * $i) + (_duration(activation) * 0.25)}'
);
}
}
&.active {
a {
color: _palette(fg-bold);
&:after {
max-width: 100%;
}
}
}
}
}
a {
@include vendor('transition', 'color #{_duration(transition)} ease');
border: 0;
color: _palette(fg-light);
display: block;
font-size: 0.6em;
font-weight: _font(weight-bold);
letter-spacing: _font(kerning-alt);
line-height: 1.75;
outline: 0;
padding: 1.35em 0;
position: relative;
text-decoration: none;
text-transform: uppercase;
&:before,
&:after {
border-radius: 0.2em;
bottom: 0;
content: '';
height: 0.2em;
position: absolute;
right: 0;
width: 100%;
}
&:before {
background: lighten(_palette(bg), 5);
}
&:after {
@include vendor(
'background-image',
'linear-gradient(to right, #{_palette(accent1)}, #{_palette(accent3)})'
);
@include vendor(
'transition',
'max-width #{_duration(transition)} ease'
);
max-width: 0;
}
&:hover {
color: _palette(fg);
}
&.active {
color: _palette(fg-bold);
&:after {
max-width: 100%;
}
}
}
}
body.is-preload & {
> .inner {
opacity: 0;
}
nav {
ul {
li {
@include vendor('transform', 'translateY(2em)');
opacity: 0;
}
}
}
}
@include breakpoint('<=large') {
height: _size(sidebar-height);
left: 0;
line-height: _size(sidebar-height);
overflow: hidden;
padding: 0;
text-align: center;
top: 0;
width: 100%;
> .inner {
@include vendor('flex-direction', 'row');
@include vendor('align-items', 'stretch');
height: inherit;
line-height: inherit;
}
nav {
height: inherit;
line-height: inherit;
ul {
@include vendor('display', 'flex');
height: inherit;
line-height: inherit;
margin: 0;
li {
display: block;
height: inherit;
line-height: inherit;
margin: 0 0 0 2em;
padding: 0;
}
}
a {
height: inherit;
line-height: inherit;
padding: 0;
&:after {
background-image: none;
background-color: _palette(accent3);
}
}
}
}
@include breakpoint('<=small') {
display: none;
}
}

View File

@ -0,0 +1,30 @@
///
/// Hyperspace by HTML5 UP
/// html5up.net | @ajlkn
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
///
/* Wrapper (main) */
#wrapper {
#sidebar + & {
margin-left: _size(sidebar-width);
@include breakpoint('<=large') {
margin-left: 0;
padding-top: _size(sidebar-height);
}
@include breakpoint('<=small') {
padding-top: 0;
}
}
#header + & {
> .wrapper {
> .inner {
margin: 0 auto;
}
}
}
}

View File

@ -0,0 +1,223 @@
// breakpoints.scss v1.0 | @ajlkn | MIT licensed */
// Vars.
/// Breakpoints.
/// @var {list}
$breakpoints: () !global;
// Mixins.
/// Sets breakpoints.
/// @param {map} $x Breakpoints.
@mixin breakpoints($x: ()) {
$breakpoints: $x !global;
}
/// Wraps @content in a @media block targeting a specific orientation.
/// @param {string} $orientation Orientation.
@mixin orientation($orientation) {
@media screen and (orientation: #{$orientation}) {
@content;
}
}
/// Wraps @content in a @media block using a given query.
/// @param {string} $query Query.
@mixin breakpoint($query: null) {
$breakpoint: null;
$op: null;
$media: null;
// Determine operator, breakpoint.
// Greater than or equal.
@if (str-slice($query, 0, 2) == '>=') {
$op: 'gte';
$breakpoint: str-slice($query, 3);
}
// Less than or equal.
@else if (str-slice($query, 0, 2) == '<=') {
$op: 'lte';
$breakpoint: str-slice($query, 3);
}
// Greater than.
@else if (str-slice($query, 0, 1) == '>') {
$op: 'gt';
$breakpoint: str-slice($query, 2);
}
// Less than.
@else if (str-slice($query, 0, 1) == '<') {
$op: 'lt';
$breakpoint: str-slice($query, 2);
}
// Not.
@else if (str-slice($query, 0, 1) == '!') {
$op: 'not';
$breakpoint: str-slice($query, 2);
}
// Equal.
@else {
$op: 'eq';
$breakpoint: $query;
}
// Build media.
@if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
$a: map-get($breakpoints, $breakpoint);
// Range.
@if (type-of($a) == 'list') {
$x: nth($a, 1);
$y: nth($a, 2);
// Max only.
@if ($x == null) {
// Greater than or equal (>= 0 / anything)
@if ($op == 'gte') {
$media: 'screen';
}
// Less than or equal (<= y)
@else if ($op == 'lte') {
$media: 'screen and (max-width: ' + $y + ')';
}
// Greater than (> y)
@else if ($op == 'gt') {
$media: 'screen and (min-width: ' + ($y + 1) + ')';
}
// Less than (< 0 / invalid)
@else if ($op == 'lt') {
$media: 'screen and (max-width: -1px)';
}
// Not (> y)
@else if ($op == 'not') {
$media: 'screen and (min-width: ' + ($y + 1) + ')';
}
// Equal (<= y)
@else {
$media: 'screen and (max-width: ' + $y + ')';
}
}
// Min only.
@else if ($y == null) {
// Greater than or equal (>= x)
@if ($op == 'gte') {
$media: 'screen and (min-width: ' + $x + ')';
}
// Less than or equal (<= inf / anything)
@else if ($op == 'lte') {
$media: 'screen';
}
// Greater than (> inf / invalid)
@else if ($op == 'gt') {
$media: 'screen and (max-width: -1px)';
}
// Less than (< x)
@else if ($op == 'lt') {
$media: 'screen and (max-width: ' + ($x - 1) + ')';
}
// Not (< x)
@else if ($op == 'not') {
$media: 'screen and (max-width: ' + ($x - 1) + ')';
}
// Equal (>= x)
@else {
$media: 'screen and (min-width: ' + $x + ')';
}
}
// Min and max.
@else {
// Greater than or equal (>= x)
@if ($op == 'gte') {
$media: 'screen and (min-width: ' + $x + ')';
}
// Less than or equal (<= y)
@else if ($op == 'lte') {
$media: 'screen and (max-width: ' + $y + ')';
}
// Greater than (> y)
@else if ($op == 'gt') {
$media: 'screen and (min-width: ' + ($y + 1) + ')';
}
// Less than (< x)
@else if ($op == 'lt') {
$media: 'screen and (max-width: ' + ($x - 1) + ')';
}
// Not (< x and > y)
@else if ($op == 'not') {
$media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')';
}
// Equal (>= x and <= y)
@else {
$media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')';
}
}
}
// String.
@else {
// Missing a media type? Prefix with "screen".
@if (str-slice($a, 0, 1) == '(') {
$media: 'screen and ' + $a;
}
// Otherwise, use as-is.
@else {
$media: $a;
}
}
}
// Output.
@media #{$media} {
@content;
}
}

View File

@ -0,0 +1,87 @@
/// Removes a specific item from a list.
/// @author Hugo Giraudel
/// @param {list} $list List.
/// @param {integer} $index Index.
/// @return {list} Updated list.
@function remove-nth($list, $index) {
$result: null;
@if type-of($index) != number {
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
} @else if $index == 0 {
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
} @else if abs($index) > length($list) {
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
} @else {
$result: ();
$index: if($index < 0, length($list) + $index + 1, $index);
@for $i from 1 through length($list) {
@if $i != $index {
$result: append($result, nth($list, $i));
}
}
}
@return $result;
}
/// Gets a value from a map.
/// @author Hugo Giraudel
/// @param {map} $map Map.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function val($map, $keys...) {
@if nth($keys, 1) == null {
$keys: remove-nth($keys, 1);
}
@each $key in $keys {
$map: map-get($map, $key);
}
@return $map;
}
/// Gets a duration value.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function _duration($keys...) {
@return val($duration, $keys...);
}
/// Gets a font value.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function _font($keys...) {
@return val($font, $keys...);
}
/// Gets a misc value.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function _misc($keys...) {
@return val($misc, $keys...);
}
/// Gets a palette value.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function _palette($keys...) {
@return val($palette, $keys...);
}
/// Gets a size value.
/// @param {string} $keys Key(s).
/// @return {string} Value.
@function _size($keys...) {
@return val($size, $keys...);
}

View File

@ -0,0 +1,146 @@
// html-grid.scss v1.0 | @ajlkn | MIT licensed */
// Mixins.
/// Initializes the current element as an HTML grid.
/// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually).
/// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list).
@mixin html-grid($gutters: 1.5em, $suffix: '') {
// Initialize.
$cols: 12;
$multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00;
$unit: 100% / $cols;
// Suffixes.
$suffixes: null;
@if (type-of($suffix) == 'list') {
$suffixes: $suffix;
} @else {
$suffixes: ($suffix);
}
// Gutters.
$guttersCols: null;
$guttersRows: null;
@if (type-of($gutters) == 'list') {
$guttersCols: nth($gutters, 1);
$guttersRows: nth($gutters, 2);
} @else {
$guttersCols: $gutters;
$guttersRows: 0;
}
// Row.
display: flex;
flex-wrap: wrap;
box-sizing: border-box;
align-items: stretch;
// Columns.
> * {
box-sizing: border-box;
}
// Gutters.
&.gtr-uniform {
> * {
> :last-child {
margin-bottom: 0;
}
}
}
// Alignment.
&.aln-left {
justify-content: flex-start;
}
&.aln-center {
justify-content: center;
}
&.aln-right {
justify-content: flex-end;
}
&.aln-top {
align-items: flex-start;
}
&.aln-middle {
align-items: center;
}
&.aln-bottom {
align-items: flex-end;
}
// Step through suffixes.
@each $suffix in $suffixes {
// Suffix.
@if ($suffix != '') {
$suffix: '-' + $suffix;
} @else {
$suffix: '';
}
// Row.
// Important.
> .imp#{$suffix} {
order: -1;
}
// Columns, offsets.
@for $i from 1 through $cols {
> .col-#{$i}#{$suffix} {
width: $unit * $i;
}
> .off-#{$i}#{$suffix} {
margin-left: $unit * $i;
}
}
// Step through multipliers.
@each $multiplier in $multipliers {
// Gutters.
$class: null;
@if ($multiplier != 1) {
$class: '.gtr-' + ($multiplier * 100);
}
&#{$class} {
margin-top: ($guttersRows * $multiplier * -1);
margin-left: ($guttersCols * $multiplier * -1);
> * {
padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier);
}
// Uniform.
&.gtr-uniform {
margin-top: $guttersCols * $multiplier * -1;
> * {
padding-top: $guttersCols * $multiplier;
}
}
}
}
}
}

View File

@ -0,0 +1,63 @@
/// Makes an element's :before pseudoelement a FontAwesome icon.
/// @param {string} $content Optional content value to use.
/// @param {string} $where Optional pseudoelement to target (before or after).
@mixin icon($content: false, $where: before) {
text-decoration: none;
&:#{$where} {
@if $content {
content: $content;
}
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
text-transform: none !important;
}
}
/// Applies padding to an element, taking the current element-margin value into account.
/// @param {mixed} $tb Top/bottom padding.
/// @param {mixed} $lr Left/right padding.
/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
/// @param {bool} $important If true, adds !important.
@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) {
@if $important {
$important: '!important';
}
$x: 0.1em;
@if unit(_size(element-margin)) == 'rem' {
$x: 0.1rem;
}
padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad, 3)) ($lr + nth($pad,4)) #{$important};
}
/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
/// @param {string} $svg SVG data URL.
/// @return {string} Encoded SVG data URL.
@function svg-url($svg) {
$svg: str-replace($svg, '"', '\'');
$svg: str-replace($svg, '%', '%25');
$svg: str-replace($svg, '<', '%3C');
$svg: str-replace($svg, '>', '%3E');
$svg: str-replace($svg, '&', '%26');
$svg: str-replace($svg, '#', '%23');
$svg: str-replace($svg, '{', '%7B');
$svg: str-replace($svg, '}', '%7D');
$svg: str-replace($svg, ';', '%3B');
@return url("data:image/svg+xml;charset=utf8,#{$svg}");
}

View File

@ -0,0 +1,49 @@
// Misc.
$misc: (
z-index-base: 10000,
max-features: 20,
max-sidebar-links: 20
);
// Duration.
$duration: (
transition: 0.2s,
activation: 1s
);
// Size.
$size: (
border-radius: 0.25em,
border-width: 1px,
element-height: 2.75em,
element-margin: 2em,
sidebar-width: 18em,
sidebar-height: 3.5em, // when <=large is active
inner-width: 75em
);
// Font.
$font: (
family: (Arial, Helvetica, sans-serif),
family-fixed: ('Courier New', monospace),
weight: normal,
weight-bold: bold,
kerning-alt: 0.25em
);
// Palette.
$palette: (
bg: #312450,
bg-alt: darken(#312450, 5),
fg: rgba(255, 255, 255, 0.55),
fg-bold: #ffffff,
fg-light: rgba(255, 255, 255, 0.35),
border: rgba(255, 255, 255, 0.15),
border-bg: rgba(255, 255, 255, 0.05),
accent1: #5e42a6,
accent1-alt: darken(#5e42a6, 10),
accent2: #5052b5,
accent2-alt: darken(#5052b5, 10),
accent3: #b74e91,
accent3-alt: darken(#b74e91, 10)
);

View File

@ -0,0 +1,336 @@
// vendor.scss v1.0 | @ajlkn | MIT licensed */
// Vars.
/// Vendor prefixes.
/// @var {list}
$vendor-prefixes: (
'-moz-',
'-webkit-',
'-ms-',
''
);
/// Properties that should be vendorized.
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
/// @var {list}
$vendor-properties: (
// Animation.
'animation',
'animation-delay',
'animation-direction',
'animation-duration',
'animation-fill-mode',
'animation-iteration-count',
'animation-name',
'animation-play-state',
'animation-timing-function',
// Appearance.
'appearance',
// Backdrop filter.
'backdrop-filter',
// Background image options.
'background-clip',
'background-origin',
'background-size',
// Box sizing.
'box-sizing',
// Clip path.
'clip-path',
// Filter effects.
'filter',
// Flexbox.
'align-content',
'align-items',
'align-self',
'flex',
'flex-basis',
'flex-direction',
'flex-flow',
'flex-grow',
'flex-shrink',
'flex-wrap',
'justify-content',
'order',
// Font feature.
'font-feature-settings',
'font-language-override',
'font-variant-ligatures',
// Font kerning.
'font-kerning',
// Fragmented borders and backgrounds.
'box-decoration-break',
// Grid layout.
'grid-column',
'grid-column-align',
'grid-column-end',
'grid-column-start',
'grid-row',
'grid-row-align',
'grid-row-end',
'grid-row-start',
'grid-template-columns',
'grid-template-rows',
// Hyphens.
'hyphens',
'word-break',
// Masks.
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-clip',
'mask-composite',
'mask-image',
'mask-origin',
'mask-position',
'mask-repeat',
'mask-size',
// Multicolumn.
'break-after',
'break-before',
'break-inside',
'column-count',
'column-fill',
'column-gap',
'column-rule',
'column-rule-color',
'column-rule-style',
'column-rule-width',
'column-span',
'column-width',
'columns',
// Object fit.
'object-fit',
'object-position',
// Regions.
'flow-from',
'flow-into',
'region-fragment',
// Scroll snap points.
'scroll-snap-coordinate',
'scroll-snap-destination',
'scroll-snap-points-x',
'scroll-snap-points-y',
'scroll-snap-type',
// Shapes.
'shape-image-threshold',
'shape-margin',
'shape-outside',
// Tab size.
'tab-size',
// Text align last.
'text-align-last',
// Text decoration.
'text-decoration-color',
'text-decoration-line',
'text-decoration-skip',
'text-decoration-style',
// Text emphasis.
'text-emphasis',
'text-emphasis-color',
'text-emphasis-position',
'text-emphasis-style',
// Text size adjust.
'text-size-adjust',
// Text spacing.
'text-spacing',
// Transform.
'transform',
'transform-origin',
// Transform 3D.
'backface-visibility',
'perspective',
'perspective-origin',
'transform-style',
// Transition.
'transition',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
// Unicode bidi.
'unicode-bidi',
// User select.
'user-select',
// Writing mode.
'writing-mode',
);
/// Values that should be vendorized.
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
/// @var {list}
$vendor-values: (
// Cross fade.
'cross-fade',
// Element function.
'element',
// Filter function.
'filter',
// Flexbox.
'flex',
'inline-flex',
// Grab cursors.
'grab',
'grabbing',
// Gradients.
'linear-gradient',
'repeating-linear-gradient',
'radial-gradient',
'repeating-radial-gradient',
// Grid layout.
'grid',
'inline-grid',
// Image set.
'image-set',
// Intrinsic width.
'max-content',
'min-content',
'fit-content',
'fill',
'fill-available',
'stretch',
// Sticky position.
'sticky',
// Transform.
'transform',
// Zoom cursors.
'zoom-in',
'zoom-out',
);
// Functions.
/// Removes a specific item from a list.
/// @author Hugo Giraudel
/// @param {list} $list List.
/// @param {integer} $index Index.
/// @return {list} Updated list.
@function remove-nth($list, $index) {
$result: null;
@if type-of($index) != number {
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
} @else if $index == 0 {
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
} @else if abs($index) > length($list) {
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
} @else {
$result: ();
$index: if($index < 0, length($list) + $index + 1, $index);
@for $i from 1 through length($list) {
@if $i != $index {
$result: append($result, nth($list, $i));
}
}
}
@return $result;
}
/// Replaces a substring within another string.
/// @author Hugo Giraudel
/// @param {string} $string String.
/// @param {string} $search Substring.
/// @param {string} $replace Replacement.
/// @return {string} Updated string.
@function str-replace($string, $search, $replace: '') {
$index: str-index($string, $search);
@if $index {
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
}
@return $string;
}
/// Replaces a substring within each string in a list.
/// @param {list} $strings List of strings.
/// @param {string} $search Substring.
/// @param {string} $replace Replacement.
/// @return {list} Updated list of strings.
@function str-replace-all($strings, $search, $replace: '') {
@each $string in $strings {
$strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
}
@return $strings;
}
// Mixins.
/// Wraps @content in vendorized keyframe blocks.
/// @param {string} $name Name.
@mixin keyframes($name) {
@-moz-keyframes #{$name} {
@content;
}
@-webkit-keyframes #{$name} {
@content;
}
@-ms-keyframes #{$name} {
@content;
}
@keyframes #{$name} {
@content;
}
}
/// Vendorizes a declaration's property and/or value(s).
/// @param {string} $property Property.
/// @param {mixed} $value String/list of value(s).
@mixin vendor($property, $value) {
// Determine if property should expand.
$expandProperty: index($vendor-properties, $property);
// Determine if value should expand (and if so, add '-prefix-' placeholder).
$expandValue: false;
@each $x in $value {
@each $y in $vendor-values {
@if $y == str-slice($x, 1, str-length($y)) {
$value: set-nth($value, index($value, $x), '-prefix-' + $x);
$expandValue: true;
}
}
}
// Expand property?
@if $expandProperty {
@each $vendor in $vendor-prefixes {
#{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
}
}
// Expand just the value?
@else if $expandValue {
@each $vendor in $vendor-prefixes {
#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
}
}
// Neither? Treat them as a normal declaration.
@else {
#{$property}: #{$value};
}
}

View File

@ -0,0 +1,57 @@
@import 'libs/vars';
@import 'libs/functions';
@import 'libs/mixins';
@import 'libs/vendor';
@import 'libs/breakpoints';
@import 'libs/html-grid';
/*
Hyperspace by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
/* Spotlights */
.spotlights {
> section {
> .image {
&:before {
opacity: 0 !important;
}
}
> .content {
> .inner {
@include vendor('transform', 'none !important');
opacity: 1 !important;
}
}
}
}
/* Wrapper */
.wrapper {
> .inner {
opacity: 1 !important;
@include vendor('transform', 'none !important');
}
}
/* Sidebar */
#sidebar {
> .inner {
opacity: 1 !important;
}
nav {
> ul {
> li {
@include vendor('transform', 'none !important');
opacity: 1 !important;
}
}
}
}

View File

@ -0,0 +1,81 @@
@import 'libs/vars';
@import 'libs/functions';
@import 'libs/mixins';
@import 'libs/vendor';
@import 'libs/breakpoints';
@import 'libs/html-grid';
@import 'font-awesome.min.css';
.magprog {
/*
Hyperspace by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
// Breakpoints.
@include breakpoints((
xlarge: (1281px, 1680px),
large: (981px, 1280px),
medium: (737px, 980px),
small: (481px, 736px),
xsmall: (361px, 480px),
xxsmall: (null, 360px)
));
// Base.
@import 'base/reset';
@import 'base/page';
@import 'base/typography';
// Component.
@import 'components/row';
@import 'components/box';
@import 'components/button';
@import 'components/features';
@import 'components/form';
@import 'components/icon';
@import 'components/image';
@import 'components/list';
@import 'components/actions';
@import 'components/contact';
@import 'components/icons';
@import 'components/menu';
@import 'components/section';
@import 'components/split';
@import 'components/spotlights';
@import 'components/table';
@import 'components/wrapper';
// Layout.
@import 'layout/sidebar';
@import 'layout/intro';
#site-navbar {
.container {
max-width: 1160px;
width: 100%;
margin: 0 auto;
padding: 0 15px 0 15px;
font-family: Arial, Helvetica, sans-serif;
font-weight: 400;
}
a.nav-item {
text-decoration: none;
}
z-index: 100000;
}
}
@import 'layout/footer';
@import 'layout/header';
@import 'layout/wrapper';

View File

@ -4,30 +4,35 @@ import Helmet from 'react-helmet';
import {injectIntl, useIntl} from "react-intl";
import SEO from "../../seo";
import NpmNavbar from "../../navBar";
import {withPrefix} from "gatsby";
import "../../../styles/layout.css"
import "../../../styles/main.css"
import "katex/dist/katex.min.css"
import '../assets/sass/magprog.scss'
const MagProgLayout = ({children}) => {
const intl = useIntl();
const lang = intl.locale;
return (
<>
<SEO lang={lang} title={intl.formatMessage({id: "title"})}/>
<Helmet>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
<link rel="stylesheet" href={withPrefix("magprog/css/main.css")}/>
{/*<noscript>{*/}
{/* <link rel="stylesheet" href={withPrefix("magprog/css/noscript.css")}/>*/}
{/*</noscript>*/}
<html className="magprog"/>
<body className="is-preload"/>
</Helmet>
<SEO ang={lang} title={intl.formatMessage({id: "title"})}/>
<NpmNavbar/>
<div className="container-fluid">
<main>{children}</main>
</div>
{/*<NpmFooter/>*/}
<main>{children}</main>
{/* <footer id="footer" className="wrapper style1-alt">
<div className="inner">
<ul className="menu">
<li>&copy; MIPT-NPM 2021.</li>
<li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
</ul>
</div>
</footer>*/}
</>
)
}

View File

@ -3,69 +3,74 @@ import React from 'react';
import PropTypes from 'prop-types';
const Element = props => {
return props.children;
return props.children;
};
class Scroll extends React.Component {
static propTypes = {
type: PropTypes.string,
element: PropTypes.string,
offset: PropTypes.number,
timeout: PropTypes.number,
children: PropTypes.node.isRequired,
};
constructor() {
super();
this.handleClick = this.handleClick.bind(this);
}
componentDidMount() {
smoothscroll.polyfill();
}
handleClick(e) {
e.preventDefault();
let elem = 0;
let scroll = true;
const { type, element, offset, timeout } = this.props;
if (type && element) {
switch (type) {
case 'class':
elem = document.getElementsByClassName(element)[0];
scroll = !!elem;
break;
case 'id':
elem = document.getElementById(element);
scroll = !!elem;
break;
default:
}
static propTypes = {
type: PropTypes.string,
element: PropTypes.string,
offset: PropTypes.number,
timeout: PropTypes.number,
children: PropTypes.node.isRequired,
};
constructor() {
super();
this.handleClick = this.handleClick.bind(this);
}
scroll
? this.scrollTo(elem, offset, timeout)
: console.log(`Element not found: ${element}`); // eslint-disable-line
}
scrollTo(element, offSet = 0, timeout = null) {
const elemPos = element
? element.getBoundingClientRect().top + window.pageYOffset
: 0;
if (timeout) {
setTimeout(() => {
window.scroll({ top: elemPos + offSet, left: 0, behavior: 'smooth' });
}, timeout);
} else {
window.scroll({ top: elemPos + offSet, left: 0, behavior: 'smooth' });
componentDidMount() {
smoothscroll.polyfill();
}
handleClick(e) {
e.preventDefault();
let elem = 0;
let scroll = true;
const {type, element, offset, timeout} = this.props;
if (type && element) {
switch (type) {
case 'class':
elem = document.getElementsByClassName(element)[0];
scroll = !!elem;
break;
case 'id':
elem = document.getElementById(element);
scroll = !!elem;
break;
default:
}
}
scroll
? this.scrollTo(elem, offset, timeout)
: console.log(`Element not found: ${element}`); // eslint-disable-line
}
scrollTo(element, offSet = 0, timeout = null) {
const elemPos = element
? element.getBoundingClientRect().top + window.pageYOffset
: 0;
if (timeout) {
setTimeout(() => {
window.scroll({top: elemPos + offSet, left: 0, behavior: 'smooth'});
}, timeout);
} else {
window.scroll({top: elemPos + offSet, left: 0, behavior: 'smooth'});
}
}
render() {
return (
<Element>
{typeof this.props.children === 'object' ? (
React.cloneElement(this.props.children, {onClick: this.handleClick})
) : (
<span onClick={this.handleClick}>{this.props.children}</span>
)}
</Element>
);
}
}
render() {
return (
<Element>
{typeof this.props.children === 'object' ? (
React.cloneElement(this.props.children, { onClick: this.handleClick })
) : (
<span onClick={this.handleClick}>{this.props.children}</span>
)}
</Element>
);
}
}
export default Scroll;

View File

@ -6,7 +6,7 @@ import {FormattedMessage, injectIntl, useIntl} from "react-intl"
import {Container, Nav, Navbar} from "react-bootstrap"
import Language from "./language"
import "../styles/navbar.css"
import "../styles/navbar.scss"
import logo from "../images/index/logo_white.png"
const NpmNavbar = () => {
@ -49,13 +49,14 @@ const NpmNavbar = () => {
<Nav.Link as="span" eventKey="partners"><FormattedMessage
id="header.partners"/></Nav.Link>
</Link>
{/*
<Link to={`/${intl.locale}/magprog`} className="nav-item" activeClassName="active"
partiallyActive={true}>
{/* magprog */}
<Nav.Link as="span" eventKey="magprog">
<FormattedMessage id="header.magprog"/>
</Nav.Link>
</Link>
*/}
</Nav>
<Nav.Link eventKey="language" className="nav-item language">
<Language/>

View File

@ -17,7 +17,7 @@ export default function Projects({projects, project_type}) {
const link = node.frontmatter.shortTitle;
const id = node.frontmatter.id;
return (
<li><Link to={`/projects/${project_type}#${id}`}>{link}</Link></li>
<li key={id}><Link to={`/projects/${project_type}#${id}`}>{link}</Link></li>
)
})}
</ul>
@ -26,7 +26,7 @@ export default function Projects({projects, project_type}) {
const title = node.frontmatter.title;
const id = node.frontmatter.id;
return (
<div className="row" id={id}>
<div className="row" id={id} key={id}>
<div className="col-lg-12">
<hr/>
<h2 id={id}>{title}</h2>

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Долгоносов Максим Сергеевич
id: Dolgonosov
photo: Dolgonosov.jpg
language: ru
---
#### Организация
ИКИ РАН, ВШЭ
#### Биография
Выпускник МФТИ (ФПФЭ 2003, красный диплом). Аспирантура ИКИ РАН (теоретическая физика). Кандидат физико-математических наук. Работа в ИКИ РАН с 2001-по настоящее время отдел Физики космической плазмы. Научный руководитель космического эксперимента "Микроспутник Чибис-АИ" на борту МКС, старший научный сотрудник ИКИ РАН
#### Направление исследований
Исследование УКВ излучения грозовых разрядов.
#### Требования к студентам
Знание английского языка не ниже pre-intermidiate. Python продвинутый.

View File

@ -0,0 +1,26 @@
---
content_type: magprog_mentor
title: Герценбергер Константин Викторович
id: Gertsenberger
photo: Gertsenberger.jpg
language: ru
---
#### Организация
Объединенный институт ядерных исследований (ОИЯИ), начальник группы
#### Биография
Родился 03.06.1983 года в г. Дубна Московской области. В 2000 г. поступил в НИЯУ “Московский инженерно-физический институт”, который окончил в 2006 г. по специальности “Математическое и программное обеспечение вычислительных систем”, в 2009 году закончил аспирантуру МИФИ. В 2014 году стал кандидатом технических наук по специальности 05.13.11. С 2009 года работаю в ОИЯИ, в настоящее время являюсь начальником группы математического и программного обеспечения НЭОФСТИ на комплексе NICA ЛФВЭ ОИЯИ. Также являюсь координатором разработки программных систем для эксперимента BM@N и вхожу в исполнительный совет эксперимента.
#### Направление исследований
Разработка программного обеспечения для обработки экспериментальных и моделированных данных эксперимента на фиксированной мишени BM@N проекта NICA.
Направления работ по тематике магистерских диссертаций:
- Использование распределённых и высокопроизводительных вычислений для моделирования и обработки данных эксперимента.
- Развитие системы визуализации событий столкновения частиц эксперимента.
- Разработка баз данных эксперимента и интерфейсов доступа.
#### Требования к студентам
Требования: знание языка C++, желательно знание Linux, CERN ROOT. Возможность участия в конференциях ОИЯИ, оплачиваемых летних практиках, публикация работ.

View File

@ -0,0 +1,24 @@
---
content_type: magprog_mentor
title: Igor Khokhriakov
id: Khokhriakov
photo: Khokhriakov.jpg
language: ru
---
#### Организация
Helmholtz-Zentrum Geesthacht/IK Company (Solutions Architect/CTO)
#### Биография
I am a results-oriented professional who has been consistently praised as quality-oriented by my co-workers and management. Over the course of my 14-year career, I've developed a skill set directly relevant to full life cycle of software development including requirements capture, prototyping, design, implementation, testing and maintenance as well as team leading. Overall, I have consistently demonstrated critical thinking, analytical and problem-solving abilities in every aspect of my software solutions architect role at Helmholtz-Zentrum Geesthacht.
Regular participation as a speaker at various community meetings and scientific conferences since 2012. Have organized more than a dozen of workshops in different countries.
I enjoy reading about and applying new technologies.
Out with the world of Software development, I enjoy boardgaming, shooting short-movies with my friends about post nuclear mankind life based on Fallout (a Role Playing Game). DJing psytrance music. And I am interested in space research.
#### Направление исследований
SCADA, DCS, IoT, Micro-services architecture, Reactive systems design

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Калашев Олег Евгеньевич
id: Kalashev
photo: Kalashev.jpg
language: ru
---
#### Организация
ИЯИ РАН
#### Биография
Окончил МФТИ в 1999. В 1999-2002 году обучался в аспирантуре Института ядерных исследований РАН под руководством В.А. Кузьмина. В 2005-2006 году работал на факультете физики и астрономии в университете штата Калифорния, Лос-Анджелес. В 2003 году защитил кандидатскую, а в 2017 докторскую диссертацию по специальности теоретическая физика и темам связанным с космическими лучами сверхвысоких энергий. С 2006 года работает в институте ядерных исследований РАН, преподает на кафедре физики частиц и космологии физического факультета МГУ и кафедре фундаментальных взаимодействий и космологии факультета проблем физики и энергетики МФТИ. С 2008 года действительный член международной коллаборации Telescope Array.
#### Направление исследований
Разработка методов, основанных на алгоритмах машинного обучения для анализа экспериментальных данных, а также в теоретических задачах астрофизики частиц. Моделирование распространения космических лучей.
#### Требования к студентам
Возможно сотрудничество с экспериментальными группами Telescope Array (США), Байкальского подводного нейтринного телескопа, Баксанской Нейтринной Обсерватории.

View File

@ -0,0 +1,25 @@
---
content_type: magprog_mentor
title: Петр Климай
id: Klimai
photo: Klimai.jpg
language: ru
---
#### Организация
ИЯИ РАН, МФТИ, JetBrains Research
#### Биография
Выпускник МФТИ (2007), учился в аспирантуре ИЯИ РАН, в 2010 году защитил диссертацию к.ф.-м.н. по теме ""Ограничения на концентрацию первичных черных дыр и их космологические следствия"". Автор более 30 научных работ.
Как наиболее интересные результаты можно выделить:
- Выявлена связь между первичными возмущениями плотности, спектром индуцированных гравитационных волн, и возможной концентрацией первичных черных дыр во Вселенной.
- Изучен вопрос рождения первичных черных дыр в ряде инфляционных моделей, в том числе в теоретических моделях «водопада» гибридной инфляции, «курватона», и модели аксионной инфляции.
- Рассчитаны временные и энергетические параметры «вспышки» излучения первичной черной дыры, находящейся на финальной стадии испарения. Получены параметризации результатов, удобные для использования при анализе экспериментальных данных. Эти результаты продолжают использоваться в работах нескольких экспериментальных коллабораций.
На сегодняшний день занимается разработкой научного программного обеспечения и построением ИТ-инфраструктуры для физических экспериментов. В работе в первую очередь использует языки программирования Kotlin и Python.
#### Направление исследований
ИТ-инфраструктура физических экспериментов

View File

@ -0,0 +1,37 @@
---
content_type: magprog_mentor
title: Александр Нозик
id: Nozik
photo: Nozik.jpg
language: ru
---
#### Организация
МФТИ, JetBrains Research, ИЯИ РАН
#### Биография
Окончил Л2Ш в 2002 году. Поступил в МФТИ на ФПФЭ, кафедру фундаментальных взаимодействий и космологии (ИЯИ РАН).
- В 2006 году с отличием окончил бакалавриат МФТИ.
- В 2008 году окончил магистратуру МФТИ.
- В 2012 году защитил кандидатскую диссертацию по направлению 01.04.16: физика атомного ядра и элементарных частиц. Тема: "Результаты обработки данных эксперимента "Троицк ню-масс" по прямому измерению массы электронного нейтрино"
- С 2013 году преподаватель общей физики в МФТИ.
- С 2019 года заместитель заведующего ЛМЯФЭ МФТИ.
- С 2019 года руководитель направления в JetBrains Research.
[ResearchGate](https://www.researchgate.net/profile/Alexander-Nozik)
[Страница на сайте JBR](https://research.jetbrains.org/groups/npm/)
#### Направление исследований
Разработка научного программного обеспечения на Kotlin и других языках.
* Разработка систем визуализации научных данных.
* Разработка систем сбора данных и управления оборудованием и использование этих систем в международных экспериментах, таких как Троицк ню-масс и IAXO.
* Разработка автоматизированных систем анализа данных.
Разработка научных библиотек на языке Kotlin.
#### Требования к студентам
Работа возможна в дистанционном и очном формате (в Москве).

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Пшеничнов Игорь Анатольевич
id: Pshenichnov
photo: Pshenichnov.jpg
language: ru
---
#### Организация
Институт ядерных исследований Российской академии наук, в.н.с., д.ф.-м.н.
#### Биография
Окончил физический факультет МГУ в 1987 году и был принят на работу в ИЯИ РАН. Первые работы были посвящены моделированию взаимодействия антипротонов с ядрами. Разработал модель фотоядерных реакций, и модель RELDIS, описывающую электромагнитные взаимодействия ядер. Исследовал физику адронной и тяжелоионной терапии онкологических заболеваний, прохождения частиц через вещество, нейтронных источников, ядерной трансмутации. В разные годы работал в Национальном институте ядерной физики Италии, Институте Нильса Бора в Копенгагене, Университете Франкфурта-на-Майне. В настоящее время участник коллаборации ALICE в ЦЕРН. Полный список работ, включая публикации в составе коллаборциии доступен [здесь](https://publons.com/researcher/1260212/igor-a-pshenichnov/)
#### Направление исследований
Моделирование методом Монте-Карло адронных и электромагнитных взаимодействий релятивистских ядер, взаимодействия пучков частиц и ядер с веществом. Анализ данных эксперимента ALICE на LHC.
#### Требования к студентам
Приветствуется уверенное владение С++, навыки отладки, тестирования и культура разработки сложных программных систем, владение численными методами. Желательно знакомство с библиотекой Geant4, готовность работать в составе больших экспериментальных коллабораций в ЦЕРН, ОИЯИ и других институтах.

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Шагалов Лев Михайлович
id: Shagalov
photo: Shagalov.jpg
language: ru
---
#### Организация
ООО "Разумные электрические сети", Ведущий специалист
#### Биография
Последние 8 лет занимаюсь разработкой информационных систем. В том числе: высоко нагруженные и высоко доступные, банковские, SCADA, платформы для построения подобных систем.
#### Направление исследований
Разработка отказоустойчивых систем управления и симуляторов сетей 0.4-35 кВ.
#### Требования к студентам
Работа возможна в дистанционном формате. Желательно знание kotlin, java, linux, frontend

View File

@ -0,0 +1,21 @@
---
content_type: magprog_mentor
title: Ильмир Усманов
id: Usmanov
photo: Usmanov.jpg
language: ru
---
#### Организация
JetBrains
#### Биография
Окончил в ФРТК МФТИ в 2013 г.
Последние 9 лет работал над различными компиляторами - от GCC и LLVM до котлиновского компилятора.
Сейчас работаю в JetBrans в команде Kotlin Language Research Team.
#### Направление исследований
Дизайн и реализация языков программирования, компиляторные оптимизации, гетерогенные вычисления, символьное исполнение

View File

@ -0,0 +1,9 @@
---
content_type: magprog_mentor
title: Полиграф Шариков
id: template
photo: Template.jpg
published: false
language: ru
---
Выдающийся ученый

View File

@ -6,18 +6,10 @@ order: 1
photo: nozik.png
language: ru
---
**Заместитель руководителя группы.**
Кандидат физико-математических наук. Старший научный сотрудник ИЯИ РАН (Сектор математического обеспечения экспериментов), ассистент кафедры общей физики МФТИ.
**Руководитель программы**
Специалист в области анализа данных в физическом эксперименте. Участник эксперимента "Троицк ню-масс" по прямому измерению массы нейтрино. [Профиль ResearchGate](https://www.researchgate.net/profile/Alexander_Nozik)
Заместитель заведующего ЛМЯФЭ МФТИ.
Руководитель направления в [JetBrains Research](https://research.jetbrains.org/ru/researchers/altavir).
Руководитель направления в JetBrains Research.
Секретарь совета [Общества Научных Работников](http://onr-russia.ru/)
**Научные интересы:** Математическая статистика, Научное программное обеспечение, Масса нейтрино.
<p>
e-mail: <a href="mailto:&#110;&#111;&#122;&#105;&#107;&#046;&#097;&#097;&#064;&#109;&#105;&#112;&#116;&#046;&#114;&#117;">&#110;&#111;&#122;&#105;&#107;&#046;&#097;&#097;&#064;&#109;&#105;&#112;&#116;&#046;&#114;&#117;</a>
</p>
Преподаватель общей физики, статистических методов и программирования на Kotlin в МФТИ.

View File

@ -6,6 +6,8 @@ order: 2
photo: svetlichny.jpeg
language: ru
---
Аспирант МФТИ, преподаватель кафедры общей физики и Физтех-активист.
**Заместитель руководителя**
Занимается физикой столкновений высокоэнергичных ионов под руководством И. А. Пшеничного.
Преподаватель кафедры общей физики МФТИ.
Аспирант ИЯИ РАН.

View File

@ -8,13 +8,5 @@ order: 2
published: true
language: ru
---
<table>
<tbody><tr><td>
<div className="col-lg-9">
<img src="/images/projects/math/gears_animated.gif" alt="Under construction...">
</div>
</td>
<td>
<div className="col-lg-8" align="center"><h3>Этот раздел дорабатывается...</h3></div>
</td>
</tr></tbody></table>
<img src="/images/projects/math/gears_animated.gif" alt="Under construction...">
<h3>Этот раздел дорабатывается...</h3>

View File

@ -1,7 +1,7 @@
---
content_type: project
project_type: software
id: dataforge
id: kmath
shortTitle: Kmath
title: "Экспериментальная математическая библиотека на kotlin"
order: 2

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,5 +1,5 @@
{
"title": "NPM GROUP",
"title": "MIPT NPM Laboratory",
"language": "en",
"description": "Nuclear physics methods laboratory",
"header": {

View File

@ -1,5 +1,5 @@
{
"title": "NPM Group",
"title": "Лаборатория NPM МФТИ",
"language": "ru",
"description": "Лаборатория методов ядерно-физических экспериментов",
"header": {

View File

@ -4,7 +4,7 @@ import {graphql} from "gatsby"
import Parser from "html-react-parser"
import Layout from "../components/layout"
import "../styles/main.css"
import "../styles/main.scss"
const AboutPage = ({data}) => {
const intl = useIntl()
@ -38,7 +38,7 @@ const AboutPage = ({data}) => {
const path = "../../images/members/"
if (photo === null)
return (
<div>
<div key={node.id}>
<hr/>
<div className="row">
<div className="col-lg-2"/>
@ -51,7 +51,7 @@ const AboutPage = ({data}) => {
)
else
return (
<div>
<div key={node.id}>
<hr/>
<div className="row">
<div className="col-lg-2">
@ -77,6 +77,7 @@ export const query = graphql`
sort: {fields: frontmatter___order, order: ASC}) {
edges{
node {
id
html
frontmatter {
title
@ -91,6 +92,7 @@ export const query = graphql`
sort: {fields: frontmatter___order, order: ASC}) {
edges{
node {
id
html
frontmatter {
title

View File

@ -7,7 +7,7 @@ import Parser from "html-react-parser"
import head_ru from "../images/index/head.png"
import head_en from "../images/index/head_en.png"
import "../styles/main.css"
import "../styles/main.scss"
import "../styles/bootstrap.min.css"
import {Button, Jumbotron} from "react-bootstrap"
@ -68,7 +68,7 @@ const IndexPage = ({data}) => {
const date = node.frontmatter.date;
const html = node.html;
return (
<div className="card"
<div className="card" key={node.id} id={node.id}
style={{marginBottom: `15px`, borderRadius: `0px`, boxShadow: `0 2px 2px #A2A2A2`}}>
<div className="card-body">
<h2 className="title">
@ -92,6 +92,7 @@ export const query = graphql`
{
edges{
node{
id
html
frontmatter {
date(formatString: "DD.MM.YYYY")
@ -107,6 +108,7 @@ export const query = graphql`
{
edges{
node{
id
html
frontmatter {
date(formatString: "DD.MM.YYYY")

View File

@ -1,22 +1,106 @@
import React from 'react';
import {injectIntl} from "react-intl";
import {graphql} from "gatsby";
import {graphql, withPrefix} from "gatsby";
import MagProgLayout from '../../components/magprog/common/MagProgLayout';
import Parser from "html-react-parser";
import Scrollspy from "react-scrollspy";
import Scroll from "../../components/magprog/common/Scroll";
function mentors(edges) {
return (
<>
{edges.map((edge) => {
return <section>
<div className="image">
<img src={withPrefix(`images/magprog/mentors/${edge.node.frontmatter.photo}`)}
alt={edge.node.frontmatter.title} width="100%" data-position="top center"/>
</div>
<div className="content">
<div className="inner">
<h2>{edge.node.frontmatter.title}</h2>
{Parser(edge.node.html)}
{/*
<ul className="actions">
<li><a href="generic.html" className="button">Learn more</a></li>
</ul>
*/}
</div>
</div>
</section>
})}
</>
)
}
function team(edges) {
return (
<>
{edges.map((edge) => {
const name = edge.node.frontmatter.title;
const photo = edge.node.frontmatter.photo;
return (
<section>
<a className="image">
<img src={withPrefix(`images/members/${photo}`)}
alt={edge.node.frontmatter.title} width="100%" data-position="top center"/>
</a>
<div className="content">
<div className="inner">
<h2>{name}</h2>
{Parser(edge.node.html)}
{/*
<ul className="actions">
<li><a href="generic.html" className="button">Learn more</a></li>
</ul>
*/}
</div>
</div>
</section>
)
})}
</>
)
}
const MagProgPage = (props) => {
let sections = [props.data.what, props.data.why, props.data.partners, props.data.program, props.data.enroll, props.data.contacts].map(node => {
let body = <>
<div className="inner">
<h2>{node.frontmatter.section_title}</h2>
{Parser(node.html)}
</div>
</>
return {
id: node.frontmatter.magprog_section,
title: node.frontmatter.section_title,
body: Parser(node.html)
body: body,
style: "wrapper style1 fullscreen fade-up"
}
})
sections[0].id = "intro"
sections.splice(3, 0,
{
id: "mentors",
title: "Научные руководители",
body: mentors(props.data.mentors.edges),
style: "wrapper style2 spotlights"
}
)
sections.splice(6, 0,
{
id: "team",
title: "Команда",
body: team(props.data.team.edges),
style: "wrapper style2 spotlights"
}
)
return (
<MagProgLayout>
<section id="sidebar">
@ -38,14 +122,11 @@ const MagProgPage = (props) => {
</nav>
</div>
</section>
<div id="wrapper">
{sections.map(section => {
return <section id={section.id}
className="wrapper style1 fullscreen fade-up">
<div className="inner">
<h2>{section.title}</h2>
{section.body}
</div>
return <section id={section.id} className={section.style}>
{section.body}
</section>
})}
@ -53,6 +134,7 @@ const MagProgPage = (props) => {
{/*<Capabilities/>*/}
{/*<Contact/>*/}
</div>
</MagProgLayout>
)
}
@ -84,7 +166,19 @@ export const query = graphql`
}
}
# Научные руководители
mentors: allMarkdownRemark(filter: {frontmatter: {content_type: {eq: "magprog_mentor"}, published: {ne: false}, language: {eq: "ru"}}},
sort: {fields: frontmatter___title, order: ASC}) {
edges{
node {
html
frontmatter {
title
photo
language
}
}
}
}
program: markdownRemark(frontmatter: {content_type: {eq: "magprog"}, magprog_section: {eq: "program"} published: {ne: false}, language: {eq: "ru"}}){
html
@ -103,12 +197,17 @@ export const query = graphql`
}
}
team: markdownRemark(frontmatter: {content_type: {eq: "magprog"}, magprog_section: {eq: "team"} published: {ne: false}, language: {eq: "ru"}}){
html
frontmatter{
magprog_section
section_title
team: allMarkdownRemark(filter: {frontmatter: {content_type: {eq: "magprog_team"}, published: {ne: false}, language: {eq: "ru"}}},
sort: {fields: frontmatter___order, order: ASC}) {
edges{
node {
html
frontmatter {
title
photo
language
}
}
}
}
@ -119,19 +218,5 @@ export const query = graphql`
section_title
}
}
#
# team: allMarkdownRemark(filter: {frontmatter: {content_type: {eq: "magprog_team"}, published: {ne: false}, language: {eq: "ru"}}},
# sort: {fields: frontmatter___order, order: ASC}) {
# edges{
# node {
# html
# frontmatter {
# title
# photo
# language
# }
# }
# }
# }
}
`

View File

@ -14,19 +14,24 @@ const PartnersPage = () => {
<Layout>
<div className="media" style={{marginTop: `30px`}}>
<div className="media-body">
<h1><a aria-label="MIPT general physics"
href="https://mipt.ru/education/chair/physics/"><FormattedMessage
id="partners.mipt.title_fund"/></a></h1>
<h1 className="partner">
<a aria-label="MIPT general physics" href="https://mipt.ru/education/chair/physics/">
<FormattedMessage id="partners.mipt.title_fund"/>
</a>
</h1>
<p><FormattedMessage id="partners.mipt.description_fund"/></p>
<hr/>
<h1><a aria-label="MIPT HEP"
href="https://mipt.ru/science/labs/high_energy_physics_lab.php"><FormattedMessage
id="partners.mipt.title_energy"/></a></h1>
<h1 className="partner">
<a aria-label="MIPT HEP" href="https://mipt.ru/science/labs/high_energy_physics_lab.php">
<FormattedMessage id="partners.mipt.title_energy"/>
</a>
</h1>
<p><FormattedMessage id="partners.mipt.description_energy"/></p>
</div>
<div className="media-right media-middle">
<a href="https://mipt.ru/education/chair/physics/"><img className="media-object" src={mipt_logo}
alt="mipt logo" width="400px"/></a>
<a href="https://mipt.ru/education/chair/physics/">
<img className="media-object" src={mipt_logo} alt="mipt logo" width="400px"/>
</a>
</div>
</div>
@ -34,13 +39,15 @@ const PartnersPage = () => {
<div className="media">
<div className="media-body">
<h1><a id="partner" href="https://www.jetbrains.com/">JetBrains</a></h1>
<h1><a className="partner" href="https://www.jetbrains.com/">JetBrains</a></h1>
<p><FormattedMessage id="partners.jb.description"/></p>
</div>
<div className="media-right media-middle">
<a href="https://www.jetbrains.com/"><img className="media-object" src={jetbrains_logo}
alt="inr logo" width="150px"
style={{marginLeft: `10px`}}/></a>
<a href="https://www.jetbrains.com/">
<img className="media-object" src={jetbrains_logo}
alt="inr logo" width="150px"
style={{marginLeft: `10px`}}/>
</a>
</div>
</div>
@ -48,13 +55,16 @@ const PartnersPage = () => {
<div className="media">
<div className="media-body">
<h1><a id="partner" href="https://research.jetbrains.org/ru/groups/npm">JetBrains Research</a></h1>
<h1><a className="partner" href="https://research.jetbrains.org/ru/groups/npm">JetBrains
Research</a></h1>
<p><FormattedMessage id="partners.jbr.description"/></p>
</div>
<div className="media-right media-middle">
<a href="https://research.jetbrains.org/ru/groups/npm"><img className="media-object" src={jbr}
alt="inr logo" width="250px"
style={{marginLeft: `10px`}}/></a>
<a href="https://research.jetbrains.org/ru/groups/npm">
<img className="media-object" src={jbr}
alt="inr logo" width="250px"
style={{marginLeft: `10px`}}/>
</a>
</div>
</div>
@ -62,7 +72,11 @@ const PartnersPage = () => {
<div className="media">
<div className="media-body">
<h2 className="media-heading"><FormattedMessage id="partners.ras.title_exp"/></h2>
<h1 className="partner">
<a href="http://inr.ru/">
<FormattedMessage id="partners.ras.title_exp"/>
</a>
</h1>
<p><FormattedMessage id="partners.ras.description_exp"/></p>
</div>
</div>
@ -71,12 +85,16 @@ const PartnersPage = () => {
<div className="media">
<div className="media-left media-middle">
<a href="http://www.inr.ru"><img className="media-object" src={inr_linac} alt="inr logo"
width="100px"/></a>
<a href="http://www.inr.ru">
<img className="media-object" src={inr_linac} alt="inr logo" width="100px"/>
</a>
</div>
<div className="media-body" style={{marginLeft: `25px`}}>
<h1><a aria-label="INR" href="http://www.inr.ru/"><FormattedMessage
id="partners.ras.title_beam"/></a></h1>
<h1 className="partner">
<a aria-label="INR" href="http://www.inr.ru/">
<FormattedMessage id="partners.ras.title_beam"/>
</a>
</h1>
<p><FormattedMessage id="partners.ras.description_beam"/></p>
</div>
</div>
@ -85,7 +103,7 @@ const PartnersPage = () => {
<div className="media">
<div className="media-body">
<h1><a aria-label="INR education" href="http://www.inr.ru/"><FormattedMessage
<h1 className="partner"><a aria-label="INR education" href="http://www.inr.ru/"><FormattedMessage
id="partners.ras.title_education"/></a></h1>
<p><FormattedMessage id="partners.ras.description_education"/></p>
</div>
@ -109,7 +127,7 @@ const PartnersPage = () => {
<div className="media" style={{marginBottom: `30px`}}>
<div className="media-body">
<h1><a aria-label="SRI RAS" href="http://www.iki.rssi.ru/"><FormattedMessage
<h1 className="partner"><a aria-label="SRI RAS" href="http://www.iki.rssi.ru/"><FormattedMessage
id="partners.ras.title_iki"/></a></h1>
<p><FormattedMessage id="partners.ras.description_iki"/></p>
</div>

View File

@ -1,4 +1,6 @@
footer {
html.npm-site {
footer {
background-color: rgb(245, 245, 245);
left: 0;
bottom: 0;
@ -9,22 +11,24 @@ footer {
font-family: Segoe UI, serif;
font-size: 20px;
text-decoration: none solid rgb(108, 117, 125);
}
}
footer .container p {
footer .container p {
margin-bottom: 15px;
}
}
footer p a {
footer p a {
color: rgb(0, 86, 179);
text-decoration: none;
}
}
footer p a:hover {
footer p a:hover {
color: rgb(12, 65, 124);
text-decoration: underline;
}
}
footer a:visited {
footer a:visited {
color: rgb(0, 86, 179);
}
}

View File

@ -1,89 +1,91 @@
html {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
height: 100%;
font-size: 1.08rem;
}
html.npm-site {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
height: 100%;
font-size: 1.08rem;
body {
body {
height: 100%;
margin: 0;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
.container {
.container {
max-width: 1160px;
width: 100%;
margin: 0 auto;
padding: 0 15px 0 15px;
font-family: Arial, Helvetica, sans-serif;
font-weight: 400;
}
}
@media (max-width: 769px) {
@media (max-width: 769px) {
main {
margin-top: 6%;
margin-top: 6%;
}
nav.navbar.navbar-expand-lg.navbar-light {
width: 100%;
padding: 0;
width: 100%;
padding: 0;
}
}
}
img {
img {
max-width: 100%;
margin-bottom: 1.45rem;
}
}
h1 {
h1 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
h2 {
h2 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
h3 {
h3 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
h4 {
h4 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
h5 {
h5 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
h6 {
h6 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
figure {
figure {
padding: 0;
margin: 0 0 1.45rem;
}
}
table {
table {
padding: 0;
margin: 0 0 1.45rem;
font-size: 1rem;
line-height: 1.45rem;
border-collapse: collapse;
width: 100%;
}
}
b, strong, dt, th {
b, strong, dt, th {
font-weight: bold;
}
@media only screen and (max-width: 480px) {
html {
font-size: 100%;
}
}
}
@media only screen and (max-width: 480px) {
html {
font-size: 100%;
}
}

View File

@ -1,89 +1,93 @@
main {
html.npm-site {
main {
margin-top: 75px;
}
}
a#partner {
a .partner {
font-size: 1.8rem;
}
}
/* ---- projects navbar ---------------------- */
a {
/* ---- projects navbar ---------------------- */
a {
font-size: 0.98rem;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
}
a.nav-link#project:hover {
a.nav-link#project:hover {
padding-bottom: 7px;
color: rgb(0, 0, 0);
text-decoration: none;
background-color: rgb(228, 228, 228);
}
}
ul.nav-tabs a.nav-link.active {
ul.nav-tabs a.nav-link.active {
color: black;
background-color: rgb(190, 190, 190);
}
}
ul.nav-tabs a.nav-link, ul.nav-tabs a.nav-link.active {
ul.nav-tabs a.nav-link, ul.nav-tabs a.nav-link.active {
border-radius: 0;
padding: 7px 22px 7px 22px;
margin-top: 5px;
}
}
/* ------------------------------------------- */
/* ------------------------------------------- */
/* ------- news & main content ----------------------------- */
h1 {
/* ------- news & main content ----------------------------- */
h1 {
font-size: 2.3rem;
}
}
h2 {
h2 {
font-size: 1.75rem;
}
}
h3 {
h3 {
font-size: 1.5rem;
}
}
div.container main a {
div.container main a {
color: rgb(0, 86, 179);
}
}
div.container main a:hover {
div.container main a:hover {
color: rgb(1, 66, 136);
text-decoration: underline;
}
}
div.container main p a:visited {
div.container main p a:visited {
color: rgb(0, 86, 179);
text-decoration: none;
}
}
li a {
color: rgb(0, 86, 179)
}
/*li a {
color: rgb(0, 86, 179)
}
li a:hover {
color: rgb(1, 66, 136)
}
li a:hover {
color: rgb(1, 66, 136)
}
li a:visited {
color: rgb(0, 86, 179)
}
li a:visited {
color: rgb(0, 86, 179)
}
h2 a {
color: rgb(0, 86, 179)
}
h2 a {
color: rgb(0, 86, 179)
}
h2 a:hover {
color: rgb(1, 66, 136)
}
h2 a:hover {
color: rgb(1, 66, 136)
}
h2 a:visited {
color: rgb(0, 86, 179)
}
h2 a:visited {
color: rgb(0, 86, 179)
}
.jumbotron {
*/
.jumbotron {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
padding: 60px 40px 10px 40px;
@ -92,9 +96,9 @@ h2 a:visited {
border: 1.5px solid rgb(219, 219, 219);
border-bottom: 0;
border-radius: 5px 5px 0 0;
}
}
.aboutButton {
.aboutButton {
background-color: rgb(233, 236, 239);
padding-top: 5px;
padding-bottom: 25px;
@ -102,54 +106,54 @@ h2 a:visited {
border-bottom: 1.5px solid rgb(219, 219, 219);
border-left: 1.5px solid rgb(219, 219, 219);
border-right: 1.5px solid rgb(219, 219, 219);
}
}
button#jt:hover {
button#jt:hover {
background-color: rgb(9, 110, 88);
}
}
button#jt a {
button#jt a {
color: white;
}
}
button#jt a:hover {
button#jt a:hover {
text-decoration: none;
}
}
button#jt {
button#jt {
margin-left: 50px;
font-size: 25px;
background-color: rgb(14, 156, 125);
border: rgb(0, 99, 99);
}
}
button#more a {
button#more a {
font-size: 20px;
color: white;
}
}
button#more a:hover {
button#more a:hover {
text-decoration: none;
}
}
button#more:hover {
button#more:hover {
background-color: rgb(34, 76, 104);
}
}
button#more {
button#more {
margin-bottom: 15px;
color: white;
background-color: rgb(51, 113, 155);
border: rgb(36, 88, 122);
}
}
h2.title {
h2.title {
background-color: rgb(247, 247, 247);
padding: 15px;
border: 2px solid #E8E4E4;
}
}
span#date {
span#date {
color: white;
font-size: 20px;
opacity: 0.7;
@ -159,151 +163,153 @@ span#date {
position: absolute;
top: 0;
right: 0;
}
}
p {
p {
font-size: 0.95rem;
margin-top: 15px;
margin-bottom: 20px;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
hr {
hr {
border-top: 1px solid rgb(220, 222, 224);
margin: 10px 0px 20px 0px;
}
}
img.center-block {
img.center-block {
margin-bottom: 0;
}
}
ol li {
ol li {
font-size: 0.9rem;
}
}
li {
li {
margin-bottom: 0;
font-size: 0.9rem;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
}
ul {
ul {
margin: 0 0 20px 0;
padding-left: 40px;
}
}
p#button {
p#button {
margin-bottom: 0;
}
}
p#lead {
p#lead {
margin-bottom: 20px;
font-size: 1.15rem;
font-weight: 300;
}
}
.card-body {
.card-body {
padding: 25px;
}
}
.card-header {
.card-header {
padding: 15px 25px 15px 25px;
}
}
.card-title {
.card-title {
margin-bottom: 15px;
}
}
span.badge.badge-info {
span.badge.badge-info {
margin-right: 15px;
background-color: rgb(20, 142, 161);
}
}
span.katex-html {
span.katex-html {
color: rgb(0, 0, 0);
font-weight: 500;
}
}
/* timeline */
div.timeline {
/* timeline */
div.timeline {
max-width: 1400px;
}
}
div.timeline--wrapper {
div.timeline--wrapper {
margin-top: 60px;
}
}
div.entry div.title {
div.entry div.title {
width: 20%
}
}
div.entry div.body {
div.entry div.body {
width: 80%
}
}
div.timeline::before {
div.timeline::before {
left: calc(20% - 6px)
}
}
div.body div.body-container.bounce-in p p a {
div.body div.body-container.bounce-in p p a {
color: rgb(0, 86, 179)
}
}
div.body div.body-container.bounce-in p h2 a {
div.body div.body-container.bounce-in p h2 a {
color: rgb(0, 86, 179)
}
}
div.body div.body-container.bounce-in p ul li a {
div.body div.body-container.bounce-in p ul li a {
color: rgb(0, 86, 179)
}
}
nav div a:hover {
nav div a:hover {
text-decoration: none;
}
}
/* -------------------------------------------------------- */
/* -------------------------------------------------------- */
figcaption {
figcaption {
font-size: 0.8rem;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: rgb(82, 82, 82)
}
}
/* --- media --------------------------------------------- */
@media (max-width: 769px) {
/* --- media --------------------------------------------- */
@media (max-width: 769px) {
span#date {
top: 0;
right: 0;
top: 0;
right: 0;
}
button#togglerButton.navbar-toggler.collapsed {
margin-top: 10px;
margin-left: 10px;
margin-top: 10px;
margin-left: 10px;
}
a.nav-link#project {
margin-bottom: 10px;
margin-right: 0;
border: 1px solid rgb(202, 202, 202);
margin-bottom: 10px;
margin-right: 0;
border: 1px solid rgb(202, 202, 202);
}
a.nav-link#project.active {
color: black;
color: black;
}
div.entry div.title {
width: 40%
width: 40%
}
div.entry div.body {
width: 80%
width: 80%
}
div.timeline::before {
left: calc(12% - 6px)
left: calc(12% - 6px)
}
}
}
/* ------------------------------------------------------- */

View File

@ -1,110 +0,0 @@
nav#site-navbar.navbar.navbar-expand-lg.bg-dark.fixed-top {
height: 75px;
}
div.mr-auto.navbar-nav a {
font-size: 1rem;
}
img#logo {
margin-bottom: 0;
}
a.language.nav-link {
margin-left: 50px;
}
a[data-rb-event-key="language"] div {
margin-bottom: 8px;
}
a[data-rb-event-key="language"]:hover {
background-color: rgb(52, 58, 64);
}
a[data-rb-event-key="language"] a {
padding: 15px;
}
a#project {
margin: 0;
}
/*nav div p a {*/
/* color: rgb(0, 86, 179);*/
/*}*/
/*nav div p a:visited {*/
/* color: rgb(0, 86, 179);*/
/*}*/
/*nav div p a:hover {*/
/* color: rgb(1, 71, 145)*/
/*}*/
/* ------ navbar ------------------------------ */
/* ----- collapse show ---------------------- */
@media (max-width: 769px) {
a.activeBrand {
margin: 0 0 0 20px;
padding-top: 0
}
a.nav-link a#active {
color: white;
background-color: rgb(20, 142, 161);
padding-top: 11px;
padding-bottom: 12px;
}
}
/* button.navbar-toggler.collapsed { margin-top: 0px; margin-left: 15px; } */
button.navbar-toggler {
margin-top: 0;
margin-right: 17px;
}
div#basic-navbar-nav.navbar-collapse.collapse.show {
width: 100px;
padding-bottom: 0;
text-align: center;
background-color: rgb(52, 58, 64);
margin-top: -0px;
}
button.navbar-toggler {
background-color: rgb(20, 142, 161);
}
div#navbarSupportedContent.navbar-collapse.collapse.show img#logo {
margin: auto;
}
/* ------------------------------------------- */
/* #navbarSupportedContent {
width: 100%;
max-width: 1880px;
padding: 0;
line-height: 30px;
max-height: 56px;
text-align: left; }
.container {
max-width: 1160px;
width: 100%;
margin: 0;
padding: 0; } */
/* @media (max-width: 769px) {
a[aria-current="page"] img#logo { margin-top: 0; margin-left: 0; padding-left: 15px }
a[aria-current="page"] { padding-top: 0 }
button.navbar-toggler { margin-top: 15px; }
a.nav-link[data-rb-event-key="language"] a {
padding-bottom: 12px;
margin-right: 0;
margin-left: -10px }
} */

113
src/styles/navbar.scss Normal file
View File

@ -0,0 +1,113 @@
nav#site-navbar.navbar.navbar-expand-lg.bg-dark.fixed-top {
height: 75px;
}
.site-navbar {
div.mr-auto.navbar-nav a {
font-size: 1rem;
}
img#logo {
margin-bottom: 0;
}
a.language.nav-link {
margin-left: 50px;
}
a[data-rb-event-key="language"] div {
margin-bottom: 8px;
}
a[data-rb-event-key="language"]:hover {
background-color: rgb(52, 58, 64);
}
a[data-rb-event-key="language"] a {
padding: 15px;
}
a#project {
margin: 0;
}
/*nav div p a {*/
/* color: rgb(0, 86, 179);*/
/*}*/
/*nav div p a:visited {*/
/* color: rgb(0, 86, 179);*/
/*}*/
/*nav div p a:hover {*/
/* color: rgb(1, 71, 145)*/
/*}*/
/* ------ navbar ------------------------------ */
/* ----- collapse show ---------------------- */
@media (max-width: 769px) {
a.activeBrand {
margin: 0 0 0 20px;
padding-top: 0
}
a.nav-link a#active {
color: white;
background-color: rgb(20, 142, 161);
padding-top: 11px;
padding-bottom: 12px;
}
}
/* button.navbar-toggler.collapsed { margin-top: 0px; margin-left: 15px; } */
button.navbar-toggler {
margin-top: 0;
margin-right: 17px;
}
div#basic-navbar-nav.navbar-collapse.collapse.show {
width: 100px;
padding-bottom: 0;
text-align: center;
background-color: rgb(52, 58, 64);
margin-top: -0px;
}
button.navbar-toggler {
background-color: rgb(20, 142, 161);
}
div#navbarSupportedContent.navbar-collapse.collapse.show img#logo {
margin: auto;
}
/* ------------------------------------------- */
/* #navbarSupportedContent {
width: 100%;
max-width: 1880px;
padding: 0;
line-height: 30px;
max-height: 56px;
text-align: left; }
.container {
max-width: 1160px;
width: 100%;
margin: 0;
padding: 0; } */
/* @media (max-width: 769px) {
a[aria-current="page"] img#logo { margin-top: 0; margin-left: 0; padding-left: 15px }
a[aria-current="page"] { padding-top: 0 }
button.navbar-toggler { margin-top: 15px; }
a.nav-link[data-rb-event-key="language"] a {
padding-bottom: 12px;
margin-right: 0;
margin-left: -10px }
} */
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +0,0 @@
/*
Hyperspace by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
/* Spotlights */
.spotlights > section > .image:before {
opacity: 0 !important;
}
.spotlights > section > .content > .inner {
-moz-transform: none !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
opacity: 1 !important;
}
/* Wrapper */
.wrapper > .inner {
opacity: 1 !important;
-moz-transform: none !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
}
/* Sidebar */
#sidebar > .inner {
opacity: 1 !important;
}
#sidebar nav > ul > li {
-moz-transform: none !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
opacity: 1 !important;
}

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

View File

@ -1,2 +0,0 @@
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});

View File

@ -1,2 +0,0 @@
/* browser.js v1.0 | @ajlkn | MIT licensed */
var browser=function(){"use strict";var e={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(n){e._canUse||(e._canUse=document.createElement("div"));var o=e._canUse.style,r=n.charAt(0).toUpperCase()+n.slice(1);return n in o||"Moz"+r in o||"Webkit"+r in o||"O"+r in o||"ms"+r in o},init:function(){var n,o,r,i,t=navigator.userAgent;for(n="other",o=0,r=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(RegExp.$1);break}for(e.name=n,e.version=o,n="other",o=0,r=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(r[i][2]?r[i][2](RegExp.$1):RegExp.$1);break}e.os=n,e.osVersion=o,e.touch="wp"==e.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
/* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery);

View File

@ -1,2 +0,0 @@
/* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */
(function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery);

View File

@ -1,190 +0,0 @@
/*
Hyperspace by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
(function($) {
var $window = $(window),
$body = $('body'),
$sidebar = $('#sidebar');
// Breakpoints.
breakpoints({
xlarge: [ '1281px', '1680px' ],
large: [ '981px', '1280px' ],
medium: [ '737px', '980px' ],
small: [ '481px', '736px' ],
xsmall: [ null, '480px' ]
});
// Hack: Enable IE flexbox workarounds.
if (browser.name == 'ie')
$body.addClass('is-ie');
// Play initial animations on page load.
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-preload');
}, 100);
});
// Forms.
// Hack: Activate non-input submits.
$('form').on('click', '.submit', function(event) {
// Stop propagation, default.
event.stopPropagation();
event.preventDefault();
// Submit form.
$(this).parents('form').submit();
});
// Sidebar.
if ($sidebar.length > 0) {
var $sidebar_a = $sidebar.find('a');
$sidebar_a
.addClass('scrolly')
.on('click', function() {
var $this = $(this);
// External link? Bail.
if ($this.attr('href').charAt(0) != '#')
return;
// Deactivate all links.
$sidebar_a.removeClass('active');
// Activate link *and* lock it (so Scrollex doesn't try to activate other links as we're scrolling to this one's section).
$this
.addClass('active')
.addClass('active-locked');
})
.each(function() {
var $this = $(this),
id = $this.attr('href'),
$section = $(id);
// No section for this link? Bail.
if ($section.length < 1)
return;
// Scrollex.
$section.scrollex({
mode: 'middle',
top: '-20vh',
bottom: '-20vh',
initialize: function() {
// Deactivate section.
$section.addClass('inactive');
},
enter: function() {
// Activate section.
$section.removeClass('inactive');
// No locked links? Deactivate all links and activate this section's one.
if ($sidebar_a.filter('.active-locked').length == 0) {
$sidebar_a.removeClass('active');
$this.addClass('active');
}
// Otherwise, if this section's link is the one that's locked, unlock it.
else if ($this.hasClass('active-locked'))
$this.removeClass('active-locked');
}
});
});
}
// Scrolly.
$('.scrolly').scrolly({
speed: 1000,
offset: function() {
// If <=large, >small, and sidebar is present, use its height as the offset.
if (breakpoints.active('<=large')
&& !breakpoints.active('<=small')
&& $sidebar.length > 0)
return $sidebar.height();
return 0;
}
});
// Spotlights.
$('.spotlights > section')
.scrollex({
mode: 'middle',
top: '-10vh',
bottom: '-10vh',
initialize: function() {
// Deactivate section.
$(this).addClass('inactive');
},
enter: function() {
// Activate section.
$(this).removeClass('inactive');
}
})
.each(function() {
var $this = $(this),
$image = $this.find('.image'),
$img = $image.find('img'),
x;
// Assign image.
$image.css('background-image', 'url(' + $img.attr('src') + ')');
// Set background position.
if (x = $img.data('position'))
$image.css('background-position', x);
// Hide <img>.
$img.hide();
});
// Features.
$('.features')
.scrollex({
mode: 'middle',
top: '-20vh',
bottom: '-20vh',
initialize: function() {
// Deactivate section.
$(this).addClass('inactive');
},
enter: function() {
// Activate section.
$(this).removeClass('inactive');
}
});
})(jQuery);

View File

@ -1,587 +0,0 @@
(function($) {
/**
* Generate an indented list of links from a nav. Meant for use with panel().
* @return {jQuery} jQuery object.
*/
$.fn.navList = function() {
var $this = $(this);
$a = $this.find('a'),
b = [];
$a.each(function() {
var $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'),
target = $this.attr('target');
b.push(
'<a ' +
'class="link depth-' + indent + '"' +
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
'>' +
'<span class="indent-' + indent + '"></span>' +
$this.text() +
'</a>'
);
});
return b.join('');
};
/**
* Panel-ify an element.
* @param {object} userConfig User config.
* @return {jQuery} jQuery object.
*/
$.fn.panel = function(userConfig) {
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).panel(userConfig);
return $this;
}
// Vars.
var $this = $(this),
$body = $('body'),
$window = $(window),
id = $this.attr('id'),
config;
// Config.
config = $.extend({
// Delay.
delay: 0,
// Hide panel on link click.
hideOnClick: false,
// Hide panel on escape keypress.
hideOnEscape: false,
// Hide panel on swipe.
hideOnSwipe: false,
// Reset scroll position on hide.
resetScroll: false,
// Reset forms on hide.
resetForms: false,
// Side of viewport the panel will appear.
side: null,
// Target element for "class".
target: $this,
// Class to toggle.
visibleClass: 'visible'
}, userConfig);
// Expand "target" if it's not a jQuery object already.
if (typeof config.target != 'jQuery')
config.target = $(config.target);
// Panel.
// Methods.
$this._hide = function(event) {
// Already hidden? Bail.
if (!config.target.hasClass(config.visibleClass))
return;
// If an event was provided, cancel it.
if (event) {
event.preventDefault();
event.stopPropagation();
}
// Hide.
config.target.removeClass(config.visibleClass);
// Post-hide stuff.
window.setTimeout(function() {
// Reset scroll position.
if (config.resetScroll)
$this.scrollTop(0);
// Reset forms.
if (config.resetForms)
$this.find('form').each(function() {
this.reset();
});
}, config.delay);
};
// Vendor fixes.
$this
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
.css('-webkit-overflow-scrolling', 'touch');
// Hide on click.
if (config.hideOnClick) {
$this.find('a')
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
$this
.on('click', 'a', function(event) {
var $a = $(this),
href = $a.attr('href'),
target = $a.attr('target');
if (!href || href == '#' || href == '' || href == '#' + id)
return;
// Cancel original event.
event.preventDefault();
event.stopPropagation();
// Hide panel.
$this._hide();
// Redirect to href.
window.setTimeout(function() {
if (target == '_blank')
window.open(href);
else
window.location.href = href;
}, config.delay + 10);
});
}
// Event: Touch stuff.
$this.on('touchstart', function(event) {
$this.touchPosX = event.originalEvent.touches[0].pageX;
$this.touchPosY = event.originalEvent.touches[0].pageY;
})
$this.on('touchmove', function(event) {
if ($this.touchPosX === null
|| $this.touchPosY === null)
return;
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
th = $this.outerHeight(),
ts = ($this.get(0).scrollHeight - $this.scrollTop());
// Hide on swipe?
if (config.hideOnSwipe) {
var result = false,
boundary = 20,
delta = 50;
switch (config.side) {
case 'left':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
break;
case 'right':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
break;
case 'top':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
break;
case 'bottom':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
break;
default:
break;
}
if (result) {
$this.touchPosX = null;
$this.touchPosY = null;
$this._hide();
return false;
}
}
// Prevent vertical scrolling past the top or bottom.
if (($this.scrollTop() < 0 && diffY < 0)
|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
event.preventDefault();
event.stopPropagation();
}
});
// Event: Prevent certain events inside the panel from bubbling.
$this.on('click touchend touchstart touchmove', function(event) {
event.stopPropagation();
});
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
$this.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.removeClass(config.visibleClass);
});
// Body.
// Event: Hide panel on body click/tap.
$body.on('click touchend', function(event) {
$this._hide(event);
});
// Event: Toggle.
$body.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.toggleClass(config.visibleClass);
});
// Window.
// Event: Hide on ESC.
if (config.hideOnEscape)
$window.on('keydown', function(event) {
if (event.keyCode == 27)
$this._hide(event);
});
return $this;
};
/**
* Apply "placeholder" attribute polyfill to one or more forms.
* @return {jQuery} jQuery object.
*/
$.fn.placeholder = function() {
// Browser natively supports placeholders? Bail.
if (typeof (document.createElement('input')).placeholder != 'undefined')
return $(this);
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).placeholder();
return $this;
}
// Vars.
var $this = $(this);
// Text, TextArea.
$this.find('input[type=text],textarea')
.each(function() {
var i = $(this);
if (i.val() == ''
|| i.val() == i.attr('placeholder'))
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('blur', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == '')
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('focus', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == i.attr('placeholder'))
i
.removeClass('polyfill-placeholder')
.val('');
});
// Password.
$this.find('input[type=password]')
.each(function() {
var i = $(this);
var x = $(
$('<div>')
.append(i.clone())
.remove()
.html()
.replace(/type="password"/i, 'type="text"')
.replace(/type=password/i, 'type=text')
);
if (i.attr('id') != '')
x.attr('id', i.attr('id') + '-polyfill-field');
if (i.attr('name') != '')
x.attr('name', i.attr('name') + '-polyfill-field');
x.addClass('polyfill-placeholder')
.val(x.attr('placeholder')).insertAfter(i);
if (i.val() == '')
i.hide();
else
x.hide();
i
.on('blur', function(event) {
event.preventDefault();
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
});
x
.on('focus', function(event) {
event.preventDefault();
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
x.hide();
i
.show()
.focus();
})
.on('keypress', function(event) {
event.preventDefault();
x.val('');
});
});
// Events.
$this
.on('submit', function() {
$this.find('input[type=text],input[type=password],textarea')
.each(function(event) {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
i.attr('name', '');
if (i.val() == i.attr('placeholder')) {
i.removeClass('polyfill-placeholder');
i.val('');
}
});
})
.on('reset', function(event) {
event.preventDefault();
$this.find('select')
.val($('option:first').val());
$this.find('input,textarea')
.each(function() {
var i = $(this),
x;
i.removeClass('polyfill-placeholder');
switch (this.type) {
case 'submit':
case 'reset':
break;
case 'password':
i.val(i.attr('defaultValue'));
x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
else {
i.show();
x.hide();
}
break;
case 'checkbox':
case 'radio':
i.attr('checked', i.attr('defaultValue'));
break;
case 'text':
case 'textarea':
i.val(i.attr('defaultValue'));
if (i.val() == '') {
i.addClass('polyfill-placeholder');
i.val(i.attr('placeholder'));
}
break;
default:
i.val(i.attr('defaultValue'));
break;
}
});
});
return $this;
};
/**
* Moves elements to/from the first positions of their respective parents.
* @param {jQuery} $elements Elements (or selector) to move.
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
*/
$.prioritize = function($elements, condition) {
var key = '__prioritize';
// Expand $elements if it's not already a jQuery object.
if (typeof $elements != 'jQuery')
$elements = $($elements);
// Step through elements.
$elements.each(function() {
var $e = $(this), $p,
$parent = $e.parent();
// No parent? Bail.
if ($parent.length == 0)
return;
// Not moved? Move it.
if (!$e.data(key)) {
// Condition is false? Bail.
if (!condition)
return;
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
$p = $e.prev();
// Couldn't find anything? Means this element's already at the top, so bail.
if ($p.length == 0)
return;
// Move element to top of parent.
$e.prependTo($parent);
// Mark element as moved.
$e.data(key, $p);
}
// Moved already?
else {
// Condition is true? Bail.
if (condition)
return;
$p = $e.data(key);
// Move element back to its original location (using our placeholder).
$e.insertAfter($p);
// Unmark element as moved.
$e.removeData(key);
}
});
};
})(jQuery);

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 674 KiB

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