diff options
Diffstat (limited to 'src/client/static')
21 files changed, 673 insertions, 0 deletions
diff --git a/src/client/static/.well-known/keybase.txt b/src/client/static/.well-known/keybase.txt new file mode 100644 index 0000000..7e11526 --- /dev/null +++ b/src/client/static/.well-known/keybase.txt @@ -0,0 +1,54 @@ +================================================================== +https://keybase.io/nloomans +-------------------------------------------------------------------- + +I hereby claim: + + * I am an admin of https://rooster.hetmml.nl + * I am nloomans (https://keybase.io/nloomans) on keybase. + * I have a public key ASCCV4aRFiMkEv7inJTf34RgxZ6IK0wQ-wTH2ZfSIu3OzAo + +To do so, I am signing this object: + +{ + "body": { + "key": { + "eldest_kid": "0101bbdb28841b169de6538a51d17ca94b30088ba2914e56fd19121eec05f7a389cc0a", + "host": "keybase.io", + "kid": "01208257869116232412fee29c94dfdf8460c59e882b4c10fb04c7d997d222edcecc0a", + "uid": "7a52ddabf92293dd59f8fbf3774ea319", + "username": "nloomans" + }, + "service": { + "hostname": "rooster.hetmml.nl", + "protocol": "https:" + }, + "type": "web_service_binding", + "version": 1 + }, + "client": { + "name": "keybase.io go client", + "version": "1.0.20" + }, + "ctime": 1492017398, + "expire_in": 504576000, + "merkle_root": { + "ctime": 1492017367, + "hash": "463e597079ce3829ccc1f1aa7b15533c0848f9e13cdb55407af490a87bf4ac1b2d64e8235518ada07d93003b889157b576aad02eda294ccd594dc0dcbf8862ef", + "seqno": 1015311 + }, + "prev": "36959cd282a98f651138068f8695b07480a016f02ba99a0acbde277e0cf4ca30", + "seqno": 19, + "tag": "signature" +} + +which yields the signature: + +hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEggleGkRYjJBL+4pyU39+EYMWeiCtMEPsEx9mX0iLtzswKp3BheWxvYWTFAvt7ImJvZHkiOnsia2V5Ijp7ImVsZGVzdF9raWQiOiIwMTAxYmJkYjI4ODQxYjE2OWRlNjUzOGE1MWQxN2NhOTRiMzAwODhiYTI5MTRlNTZmZDE5MTIxZWVjMDVmN2EzODljYzBhIiwiaG9zdCI6ImtleWJhc2UuaW8iLCJraWQiOiIwMTIwODI1Nzg2OTExNjIzMjQxMmZlZTI5Yzk0ZGZkZjg0NjBjNTllODgyYjRjMTBmYjA0YzdkOTk3ZDIyMmVkY2VjYzBhIiwidWlkIjoiN2E1MmRkYWJmOTIyOTNkZDU5ZjhmYmYzNzc0ZWEzMTkiLCJ1c2VybmFtZSI6Im5sb29tYW5zIn0sInNlcnZpY2UiOnsiaG9zdG5hbWUiOiJyb29zdGVyLmhldG1tbC5ubCIsInByb3RvY29sIjoiaHR0cHM6In0sInR5cGUiOiJ3ZWJfc2VydmljZV9iaW5kaW5nIiwidmVyc2lvbiI6MX0sImNsaWVudCI6eyJuYW1lIjoia2V5YmFzZS5pbyBnbyBjbGllbnQiLCJ2ZXJzaW9uIjoiMS4wLjIwIn0sImN0aW1lIjoxNDkyMDE3Mzk4LCJleHBpcmVfaW4iOjUwNDU3NjAwMCwibWVya2xlX3Jvb3QiOnsiY3RpbWUiOjE0OTIwMTczNjcsImhhc2giOiI0NjNlNTk3MDc5Y2UzODI5Y2NjMWYxYWE3YjE1NTMzYzA4NDhmOWUxM2NkYjU1NDA3YWY0OTBhODdiZjRhYzFiMmQ2NGU4MjM1NTE4YWRhMDdkOTMwMDNiODg5MTU3YjU3NmFhZDAyZWRhMjk0Y2NkNTk0ZGMwZGNiZjg4NjJlZiIsInNlcW5vIjoxMDE1MzExfSwicHJldiI6IjM2OTU5Y2QyODJhOThmNjUxMTM4MDY4Zjg2OTViMDc0ODBhMDE2ZjAyYmE5OWEwYWNiZGUyNzdlMGNmNGNhMzAiLCJzZXFubyI6MTksInRhZyI6InNpZ25hdHVyZSJ9o3NpZ8RAcP5FuvbGM9nXBzWqChr9zdj452IpBzrVbd6YvcktLyKjaUaRg51BOWsyHmYQ+uxmZ2ZCUI6xZbbJ1SIAnWqvC6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEING7Z+BlY2sOTnQqQJo/PUBashy75VL9UU4tGIEvMXbco3RhZ80CAqd2ZXJzaW9uAQ== + +And finally, I am proving ownership of this host by posting or +appending to this document. + +View my publicly-auditable identity here: https://keybase.io/nloomans + +================================================================== diff --git a/src/client/static/apple-touch-icon.png b/src/client/static/apple-touch-icon.png Binary files differnew file mode 100644 index 0000000..5adfc69 --- /dev/null +++ b/src/client/static/apple-touch-icon.png diff --git a/src/client/static/browserconfig.xml b/src/client/static/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/src/client/static/browserconfig.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<browserconfig> + <msapplication> + <tile> + <square150x150logo src="/mstile-150x150.png"/> + <TileColor>#da532c</TileColor> + </tile> + </msapplication> +</browserconfig> diff --git a/src/client/static/favicon-16x16.png b/src/client/static/favicon-16x16.png Binary files differnew file mode 100644 index 0000000..1df47d3 --- /dev/null +++ b/src/client/static/favicon-16x16.png diff --git a/src/client/static/favicon-32x32.png b/src/client/static/favicon-32x32.png Binary files differnew file mode 100644 index 0000000..36cd5da --- /dev/null +++ b/src/client/static/favicon-32x32.png diff --git a/src/client/static/favicon.ico b/src/client/static/favicon.ico Binary files differnew file mode 100644 index 0000000..c201043 --- /dev/null +++ b/src/client/static/favicon.ico diff --git a/src/client/static/icons/mml-logo.png b/src/client/static/icons/mml-logo.png Binary files differnew file mode 100644 index 0000000..fa5ae11 --- /dev/null +++ b/src/client/static/icons/mml-logo.png diff --git a/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..514ad14 --- /dev/null +++ b/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png diff --git a/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..59bab1d --- /dev/null +++ b/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png diff --git a/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..908a6e8 --- /dev/null +++ b/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png diff --git a/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..f12048f --- /dev/null +++ b/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png diff --git a/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..7a0462e --- /dev/null +++ b/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/src/client/static/manifest.beta.webmanifest b/src/client/static/manifest.beta.webmanifest new file mode 100644 index 0000000..a1fdd92 --- /dev/null +++ b/src/client/static/manifest.beta.webmanifest @@ -0,0 +1,29 @@ +{ + "name": "BETA Metis Rooster", + "short_name": "BETA Rooster", + "start_url": "/", + "display": "standalone", + "background_color": "#ececec", + "description": "Een verbeterde rooster pagina voor het metis", + "icons": [{ + "src": "/icons/res/mipmap-mdpi/ic_launcher.png", + "sizes": "48x48", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-hdpi/ic_launcher.png", + "sizes": "72x72", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xhdpi/ic_launcher.png", + "sizes": "96x96", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xxhdpi/ic_launcher.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xxxhdpi/ic_launcher.png", + "sizes": "192x192", + "type": "image/png" + }] +} diff --git a/src/client/static/manifest.webmanifest b/src/client/static/manifest.webmanifest new file mode 100644 index 0000000..d33ee8e --- /dev/null +++ b/src/client/static/manifest.webmanifest @@ -0,0 +1,29 @@ +{ + "name": "Metis Rooster", + "short_name": "Rooster", + "start_url": "/", + "display": "standalone", + "background_color": "#ececec", + "description": "Een verbeterde rooster pagina voor het metis", + "icons": [{ + "src": "/icons/res/mipmap-mdpi/ic_launcher.png", + "sizes": "48x48", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-hdpi/ic_launcher.png", + "sizes": "72x72", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xhdpi/ic_launcher.png", + "sizes": "96x96", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xxhdpi/ic_launcher.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "/icons/res/mipmap-xxxhdpi/ic_launcher.png", + "sizes": "192x192", + "type": "image/png" + }] +} diff --git a/src/client/static/mstile-150x150.png b/src/client/static/mstile-150x150.png Binary files differnew file mode 100644 index 0000000..5e381e6 --- /dev/null +++ b/src/client/static/mstile-150x150.png diff --git a/src/client/static/safari-pinned-tab.svg b/src/client/static/safari-pinned-tab.svg new file mode 100644 index 0000000..97ce8bf --- /dev/null +++ b/src/client/static/safari-pinned-tab.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" + "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" + width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000" + preserveAspectRatio="xMidYMid meet"> +<metadata> +Created by potrace 1.11, written by Peter Selinger 2001-2013 +</metadata> +<g transform="translate(0.000000,16.000000) scale(0.012030,-0.012030)" +fill="#000000" stroke="none"> +<path d="M498 1233 c-10 -20 -1 -650 11 -690 18 -64 84 -154 141 -192 82 -55 +144 -66 385 -66 l209 0 1 478 c0 262 0 477 0 477 -1 0 -20 -18 -44 -40 -24 +-22 -64 -52 -89 -67 -44 -26 -49 -27 -231 -28 -102 -1 -202 3 -221 8 -47 12 +-107 54 -135 95 -13 18 -25 30 -27 25z"/> +<path d="M405 917 c-95 -24 -193 -97 -250 -187 -77 -122 -83 -287 -14 -421 30 +-60 113 -142 173 -173 171 -86 353 -62 489 64 48 45 50 49 27 50 -14 0 -41 +-13 -59 -30 -33 -27 -131 -86 -131 -77 0 2 14 32 30 66 17 35 30 64 28 65 -42 +30 -86 48 -120 49 -42 2 -42 2 -43 42 -1 31 -27 95 -39 95 -1 0 -2 -30 -1 -67 +l0 -68 -73 -3 c-84 -3 -84 -2 -97 105 l-7 62 77 -1 c42 0 78 2 81 5 2 2 2 11 +-2 20 -4 12 -18 16 -48 16 -22 -1 -56 -1 -74 0 l-34 1 6 53 c4 28 10 66 14 82 +8 29 11 30 62 30 43 0 54 3 56 18 2 14 -6 17 -41 17 -24 0 -46 3 -48 8 -7 10 +39 102 65 129 22 24 32 50 20 56 -4 2 -25 -1 -47 -6z m-58 -119 l-32 -68 -52 +0 c-29 0 -53 4 -53 8 0 15 74 80 120 106 24 14 45 24 46 23 1 -1 -12 -32 -29 +-69z m-52 -153 c-4 -27 -8 -62 -10 -76 -1 -15 -5 -31 -8 -35 -5 -9 -133 -11 +-142 -2 -7 7 15 108 30 138 12 23 19 25 75 25 l62 1 -7 -51z m-14 -168 c0 -7 +2 -19 3 -27 2 -8 6 -41 10 -72 l7 -58 -61 0 -61 0 -19 43 c-10 23 -21 61 -25 +84 l-6 41 76 1 c52 0 75 -3 76 -12z m65 -257 c18 -35 32 -65 31 -67 -14 -13 +-167 102 -167 126 0 4 23 7 52 7 l51 -1 33 -65z m145 58 c3 -5 5 -41 4 -81 -1 +-70 -2 -72 -26 -69 -13 1 -32 13 -42 25 -14 19 -67 119 -67 129 0 7 126 3 131 +-4z m164 0 c8 -7 -35 -94 -61 -125 -11 -12 -28 -23 -39 -25 -18 -3 -20 3 -20 +72 -1 41 0 77 1 80 4 8 111 6 119 -2z"/> +</g> +</svg> diff --git a/src/client/static/stylesheets/hello.css b/src/client/static/stylesheets/hello.css new file mode 100644 index 0000000..edcbc92 --- /dev/null +++ b/src/client/static/stylesheets/hello.css @@ -0,0 +1,23 @@ +* { + box-sizing: border-box; +} + +html, body { + margin: 0; + font-family: 'Roboto', sans-serif; + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + width: 100vw; + height: 100vh; + color: gray; +} + +.ideas { + font-size: 0.8em; +} + +a { + color: #3f51b5; +} diff --git a/src/client/static/stylesheets/print.css b/src/client/static/stylesheets/print.css new file mode 100644 index 0000000..0e09533 --- /dev/null +++ b/src/client/static/stylesheets/print.css @@ -0,0 +1,63 @@ +#search, #week-selector { + background-color: inherit; + box-shadow: inherit; +} + +#search { + border-bottom: 1px solid black; + position: absolute; +} + +#search .top-bar, #week-selector .week-wrapper { + max-width: inherit; +} + +#search input[type="search"] { + background-color: inherit; + color: black; + font-weight: bold; +} + +#search .fav { + display: none !important; +} + +#search #overflow-button { + display: none; +} + +#week-selector .week-wrapper { + display: block; +} + +#week-selector button { + display: none; +} + +#week-selector .current { + color: black; + padding: 16px; + font-size: 1.1em; + float: right; +} + +#search-space-filler { + display: none; +} + +.mdl-menu__container { + display: none !important; +} + +#schedule { + padding-top: 16px; + width: 100%; +} + +.no-print { + display: none; +} + +.print { + display: initial; +} diff --git a/src/client/static/stylesheets/style.css b/src/client/static/stylesheets/style.css new file mode 100644 index 0000000..830b007 --- /dev/null +++ b/src/client/static/stylesheets/style.css @@ -0,0 +1,392 @@ +* { + box-sizing: border-box; +} + +html, body { + margin: 0; + font-family: 'Roboto', sans-serif; +} + +.other { + color: gray; + font-style: italic; + margin-left: 5px; +} + +#search { + z-index: 2; + background-color: #F44336; + margin: 0 auto; + width: 100%; + position: fixed; + box-shadow: 0 0.5px 1.5px rgba(0,0,0,0.06), 0 0.5px 1px rgba(0,0,0,0.12); +} + +#search .top-bar { + position: relative; + margin: 0 auto; + max-width: 600px; + padding: 10px; + display: flex; +} + +#search .input-wrapper { + position: relative; + flex-grow: 1; + color: #FFFFFF; +} + +#search input[type='search'] { + display: block; + background-color: #f6695e; + color: inherit; + border-radius: 2px; + width: 100%; + display: block; + outline: none; + border: 0; + padding: 16px; + font-size: 16px; + transition: box-shadow 200ms ease-in-out; +} + +#search input[type='search']:focus { + background-color: #FFFFFF; + color: #212121; + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); +} + +#search input[type='search']:focus + button { + color: #212121; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { + display: none; +} + +input[type="search"]::-ms-clear { + width: 0; + height: 0; +} + +button::-moz-focus-inner { + border: 0; +} + + +/* WebKit, Blink, Edge */ +input::-webkit-input-placeholder { + color: #FFCDD2; +} +input:focus::-webkit-input-placeholder { + color: #757575; +} + +/* Mozilla Firefox 4 to 18 */ +input:-moz-placeholder { + color: #FFCDD2; + opacity: 1; +} +input:focus:-moz-placeholder { + color: #757575; +} + +/* Mozilla Firefox 19+ */ +input::-moz-placeholder { + color: #FFCDD2; + opacity: 1; +} +input:focus::-moz-placeholder { + color: #757575; +} + +/* Internet Explorer 10-11 */ +input:-ms-input-placeholder { + color: #FFCDD2; +} +input:focus:-ms-input-placeholder { + color: #757575; +} + +li:hover { + background-color: lightgray; + cursor: pointer; +} + +.selected { + background-color: lightgray; +} + +#schedule { + overflow: auto; +} + +body.searched #search-space-filler { + height: 70px; +} + +.autocomplete-wrapper { + background-color: white; +} + +.autocomplete { + max-width: 600px; + margin: 0 auto; + padding: 0; +} + +.autocomplete li { + list-style: none; + padding: 10px; +} + +#week-selector { + z-index: 1; + background-color: #F44336; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); + color: white; +} + +#week-selector .week-wrapper { + max-width: 600px; + padding: 10px !important; + margin: 0 auto; + display: flex; + -js-display: flex; + padding: 10px 0; +} + +#week-selector .current { + display: flex; + flex-grow: 1; + align-items: center; + justify-content: center; +} + +#week-selector .current.changed { + font-weight: bold; +} + +#week-selector button { + background: transparent; + color: white; + border: 0px; + padding: 5px 10px; + border-radius: 2px; +} + +input { + -webkit-appearance: none; +} + +#search .fav { + position: absolute; + font-size: 1.8em; + color: inherit; + right: 8.5px; + top: 8.5px; + border: 0; + padding: 4px; + border-radius: 2px; + background: none; + + display: none; +} + +body.searched #search .fav { + display: block; +} + +#week-selector button:focus, #search #overflow-button:focus, #search .fav:focus { + outline: none; + background-color: #D32F2F; +} + +#search #overflow-button { + background: none; + border: none; + padding: 3px 9px; + color: white; + border-radius: 2px; +} + +.hidden { + display: none !important; +} + +ul a { + color: inherit; + text-decoration: none; +} + +#search .title { + display: none; +} + +body:not(.no-input) { + overflow-y: scroll; +} + +body.no-input #week-selector { + display: none; +} + +@media screen and (min-height: 400px) { + body.no-input { + background-color: #ececec; + } + + body.no-input #search { + height: 100%; + background-color: #ececec; + box-shadow: none; + } + + body.no-input #search button { + display: none; + } + + body.no-input #search #overflow-button { + position: absolute; + display: block; + top: 0; + right: 0; + color: #757575; + } + + body.no-input #search .print-page { + display: none; + } + + body.no-input #search #overflow-button:focus { + background-color: inherit; + color: #212121; + } + + body.no-input #search .logo { + background-image: url(/icons/mml-logo.png); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + height: 100px; + width: 100px; + + /* virtual center: http://javier.xyz/visual-center/ */ + transform: translate(-8%,-3%); + margin: 0 auto; + } + + body.no-input #search .title { + display: block; + font-size: 55px; + padding-bottom: 32px; + } + + body.no-input #search .title .text { + text-align: center; + line-height: 55px; + } + + body.no-input #search .top-bar { + position: static; + display: block; + margin-top: 50vh; + transform: translateY(-75%); + } + + body.no-input #search input[type='search'] { + background-color: #FFF; + } + + /* WebKit, Blink, Edge */ + body.no-input #search input::-webkit-input-placeholder { + color: #757575; + } + + /* Mozilla Firefox 4 to 18 */ + body.no-input #search input:-moz-placeholder { + color: #757575; + opacity: 1; + } + + /* Mozilla Firefox 19+ */ + body.no-input #search input::-moz-placeholder { + color: #757575; + opacity: 1; + } + + /* Internet Explorer 10-11 */ + body.no-input #search input:-ms-input-placeholder { + color: #757575; + } + + body.no-input .tooltip { + display: block; + position: absolute; + background-color: white; + padding: 15px; + margin: 32px 8px; + border-radius: 2px; + + left: 16px; + right: 16px; + } + + body.no-input .tooltip::before { + content: ''; + width: 24px; + height: 24px; + background-color: white; + top: -12px; + position: absolute; + transform: rotate(45deg); + z-index: -1; + } +} + +.tooltip { + display: none; +} + +.error { + text-align: center; + margin-top: 100px; + padding: 16px; +} + +body.week-selector-not-visible #search { + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} + +body.week-selector-not-visible #week-selector { + box-shadow: inherit; +} + +.print { + display: none; +} + +#notification { + max-width: 600px; + padding: 10px; + margin: 0 auto; +} + +#notification .box { + display: flex; + background-color: #e0e0e0; + padding: 8px; + border-radius: 2px; + align-items: center; +} + +#notification .text { + padding-left: 8px; +} + +.grow { + flex-grow: 1; +} diff --git a/src/client/static/sw.js b/src/client/static/sw.js new file mode 100644 index 0000000..bd43805 --- /dev/null +++ b/src/client/static/sw.js @@ -0,0 +1,29 @@ +/* global importScripts toolbox self */ + +(global => { + 'use strict' + + // Load the sw-toolbox library. + importScripts('/components/sw-toolbox/sw-toolbox.js') + + // Ensure that our service worker takes control of the page as soon as possible. + global.addEventListener('install', event => event.waitUntil(global.skipWaiting())) + global.addEventListener('activate', event => event.waitUntil(global.clients.claim())) + + toolbox.precache([ + '/', + '/hello', + '/untisinfo.css', + '/javascripts/bundle.js', + '/stylesheets/style.css', + '/stylesheets/hello.css' + ]) + + toolbox.router.get('/', toolbox.fastest) + toolbox.router.get('/hello', toolbox.fastest) + + toolbox.router.get('/javascripts/bundle.js', toolbox.fastest) + toolbox.router.get('/stylesheets/*', toolbox.fastest) + toolbox.router.get('/untisinfo.css', toolbox.fastest) + toolbox.router.get('/meetingpointProxy/*', toolbox.networkFirst) +})(self) diff --git a/src/client/static/untisinfo.css b/src/client/static/untisinfo.css new file mode 100644 index 0000000..d74a7aa --- /dev/null +++ b/src/client/static/untisinfo.css @@ -0,0 +1,11 @@ +html, body { + overflow: auto; + width: 100vw; + height: 100vh; + margin: 0; + -webkit-overflow-scrolling: touch; +} + +center { + margin: 5px; +} |