:root {
--pageWidth: 894px;
--backgroundColor: #fff;
--colorUtu1: #8b5dcb;
--colorUtu2: #78c8d2;
--colorUtu3: #f8485e;
--colorUtu4: #adcb00;
--colorUtu5: #000;
--colorUtu6: #868686;
--colorUtu7: #b1b1b0;
--colorUtu8: #d9d9d9;
--colorUtu9: #ffffff;
--colorUtu1d: 139, 93, 203;
--colorUtu2d: 120, 200, 210;
--colorUtu3d: 248, 72, 94;
--colorUtu4d: 173, 203, 0;
}
*, *:before, *:after {
box-sizing: inherit;
}
html, body, hr {
margin: 0;
padding: 0;
}
h1, h2, h3, h4, h5, h6 {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
color: inherit;
font-weight: bold;
line-height: 1.1;
}
h1 {
margin-bottom: 1.45rem;
font-size: 2.25rem;
}
h2 {
margin-bottom: 1.45rem;
font-size: 1.62671rem;
}
h3 {
margin-bottom: 1.45rem;
font-size: 1.38316rem;
}
h4 {
margin-bottom: 1.45rem;
font-size: 1rem;
}
h5 {
margin-bottom: 1.45rem;
font-size: 0.85028rem;
}
h6 {
margin-bottom: 1.45rem;
font-size: 0.78405rem;
}
ul {
margin-left: 1.45rem;
margin-bottom: 1.45rem;
list-style-position: outside;
list-style-image: none;
}
p {
margin-bottom: 1.45rem;
}
img {
max-width: 100%;
margin-bottom: 1.25rem;
}
.columns2 {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
margin-bottomk: 1em;
gap: 16pt;
}
.columns2 > div {
flex-basis: 35%;
flex-grow: 1;
padding: 0.5em;
padding-top: 1em;
padding-bottom: 1em;
text-justify: inter-word;
border: 1px dotted black;
border-radius: 8px;
background: rgba(192,222,128, 0.1);
}
.simple-columns {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: nowrap;
gap: 16pt;
margin-bottom: 1em;
}
.simple-columns p {
text-align: justify;
text-justify: inter-word;
}
.simple-columns img {
border: 1px solid black;
}
.simple-columns * {
flex-wrap: nowrap;
width: 100%;
background: solid blue;
padding: 0;
margin: 0;
}
.float img {
float:left;
padding-right: 16pt;
}
.float-right img {
float:right;
padding-left: 16pt;
}
.column-grid {
border: 1px solid black;
padding: 1em;
}
.column-grid > * {
margin: 1em;
}
.twocolumns {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: nowrap;
gap: 16pt;
width: 100%;
}
.twocolumns * {
padding: 0;
margin: 0;
width: 100%;
flex-grow: 1;
flex-basis: 50%;
}
.twocolumns img {
width: 49vw;
}
.columns {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
gap: 16pt;
}
.columns p, .columns div {
padding: 0;
margin: 0;
flex-basis: 34%;
flex-grow: 1;
background: solid blue;
margin-bottom: 1em;
text-align: justify;
text-justify: inter-word;
}
.columns img {
border: 1px solid black;
}
@media only screen and (max-width: 1100px) {
.columns p, .columns div {
flex-basis: 35vw;
}
}
@media only screen and (min-width: 2400px) {
.columns p, .columns div {
flex-basis: 15vw;
}
}
div.goals {
background-color: rgba(var(--colorUtu2d), 0.5);
border: 1px solid var(--colorUtu5);
border-radius: 15px;
padding: 8px;
}
div.goals h3 {
width: 100%;
background-color: rgba(var(--colorUtu1d), 0.5);
border-radius: 15px;
padding: 8px;
text-align: center;
}
div.goals h3::before, div.goals ul li::before {
content: "🎓 "
}
div.goals h3::after {
content: " 🎓"
}
div.goals ul {
list-style: none;
}
div.important, span.important {
background-color: rgba(var(--colorUtu3d), 0.3);
border: 1px solid var(--colorUtu5);
border-radius: 15px;
padding: 8px;
margin-top: 8px;
margin-bottom: 8px;
}
div.important > *:first-child::before {
content: "❗ "
}
div.important > *:last-child::after {
content: " ❗"
}
div.nicetoknow {
background-color: rgba(var(--colorUtu4d), 0.1);
border: 1px solid var(--colorUtu5);
border-radius: 15px;
padding: 8px;
margin-top: 8px;
margin-bottom: 8px;
}
div.nicetoknow > *:first-child::before {
content: "💡 Nice to know 💡\A ";
font-weight: bold;
}
@media only screen and (max-width: 1480px) {
.simple-columns {
display: block;
}
}
@media only screen and (max-width: 1500px) {
.table-scroller {
overflow-x: auto;
width: 100%;
}
}
html {
font: 120% brother-1816, sans-serif;
box-sizing: border-box;
overflow-y: scroll;
}
.layout {
background-color: var(--colorUtu9);
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
justify-content: top;
justify-content: space-between;
align-items: top;
min-height: 100vh;
}
.page-layout {
background-color: var(--colorUtu8);
display: flex;
justify-content: center;
flex-grow: 1;
}
.page-container {
background-color: var(--colorUtu9);
max-width: 1920px;
padding: 1em;
}
.thesis-layout {
background-color: var(--colorUtu8);
display: flex;
}
.thesis-layout .infobar {
background-color: var(--colorUtu9);
margin: 0.5em;
padding: 0.5em;
padding-top: 1em;
padding-bottom: 1em;
}
.thesis-layout .infobar th {
background-color: var(--colorUtu2);
border-bottom: 1px solid black;
padding: 0;
margin: 0;
}
.thesis-layout .infobar td {
padding: 0em;
padding-left: 0.3em;
margin: 0;
}
.thesis-layout .infobar table {
border: 2pt solid black;
}
.site-nav {
margin: 0;
padding-top: 1em;
padding-bottom: 1em;
}
.site-nav ul, .site-nav li {
margin: 0;
padding: 0;
list-style: none;
}
.site-nav a {
display: block;
text-decoration: none;
color: var(--colorUtu5);
height: 4em;
background-color: var(--colorUtu2);
font-family: "Comic Sans Ms";
font-weight: bold;
border-radius: 5px;
text-align: center;
padding: 6px;
}
.site-nav ul {
display: flex;
align-items: center;
flex-flow: row wrap;
justify-content: space-between;
gap: 10px;
}
.site-nav ul.section {
padding: 2px;
display: flex;
align-items: center;
border: var(--colorUtu1) dotted;
flex-flow: nowrap;
border-radius: 10px;
gap: 10px;
}
.site-nav ul li {
flex: 1;
}
.site-nav ul li a {
display: flex;
align-items: center;      
justify-content: center;
width: 100%;
flex-flow: row wrap;
}
.site-nav ul.section:hover {
background-color:  rgba(var(--colorUtu1d), 0.8);
}
.site-nav ul li a.active {
background: var(--colorUtu1);
}
.site-nav ul li a:hover {
background: var(--colorUtu4);
}
.site-nav.fi ul li a.part:before {
content: "Osa ";
}
.site-nav.en ul li a.part:before {
content: "Part ";
}
.page-header {
padding-top: 0.5em;
padding-bottom: 0.5em;
margin-bottom: 1em;
margin-top: 1em;
border-top: 2px solid var(--colorUtu2);
border-bottom: 2px solid var(--colorUtu2);
border-right: 2px solid var(--colorUtu2);
}
.page-header span {
font-size: 2em;
margin: 0.67em 0;
}
.page-header * {
text-decoration: none;
}
.main-content section {
border-top: 1px solid var(--colorUtu8);
padding-top: 8px;
}
.section-header {
border-bottom: solid 1px #eee;
display: flex;
justify-content: space-between;
padding-top: 0;
padding-bottom: 0;
width: 100%;
}
.section-header h2 {
padding: 0;
margin: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
.section-header h2.isolated {
padding-top: 2.5em;
}
@media only screen and (max-width: 780px) {
.page-container, .main-lecture pre {
padding: 0;
}
.page-container {
max-width: 100vw;
}
.main-lecture a, .page-header span, .main-lecture pre {
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}
.page-layout {
padding: 4px;
}
.site-nav {
padding-top: 0.5em;
padding-bottom: 0.5em;
}
.site-nav a {
display: block;
height: auto;
font-weight: normal;
border-radius: 0px;
padding: 6px;
}
.site-nav.parts.fi:before {
content: "Osat:"
}
.site-nav.parts.en:before {
content: "Parts:"
}
.site-nav .headers {
display:none;
}
.site-nav ul.fi li a.part:before {
content: ""
}
.site-nav ul.en li a.part:before {
content: ""
}
.site-nav ul a {
height: auto;
border-radius: 10px;
}
.site-nav ul.section a {
height: auto;
}
.site-nav ul.section {
background-color: rgba(var(--colorUtu2d), 0.5);
border: 0px;
border-radius: 5px;
}
}
.cards {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
width: 100%;
}
.card {
display: flex;
flex-direction: column;
justify-content: space-between;
border: solid 1.5px var(--colorUtu7);
padding: 8px;
border-radius: 15px;
}
.course-card {
background-color: #fcfcfc;
width: 400px;
margin: 8px;
}
.course-card.hide {
display: none;
}
.course-card h3 {
margin-top: 0;
}
.course-card img {
width: 382px;
height: 152px;
margin-bottom: 0.5em;
}
.course-card a {
text-decoration: none;
color: var(--colorUtu5);
}
.course-card a:hover {
text-decoration: underline solid var(--colorUtu5);
}
.course-card .card-footer {
background-color: rgba(var(--colorUtu2d), 0.25);
border-radius: 8px;
padding-right: 4px;
padding-left: 4px;
margin-top: 1em;
width: 100%;
min-height: 48px;
display: flex;
justify-content: center;
flex-direction: column;
}
.course-card .organizer {
text-align: center;
text-decoration: none;
color: var(--colorUtu5);
}
.course-card .card-operation {
text-align: center;
text-decoration: none;
color: var(--colorUtu5);
cursor: hand;
cursor: pointer;
}
.course-card .card-operation:hover {
background: var(--colorUtu1);
}
@media only screen and (max-width: 780px) {
.course-card {
width: 100%;
border: 1;
margin: 0;
padding: 0;
padding-top: 8px;
margin-bottom: 16px;
}
.course-card img {
width: 100%;
height: auto;
}
.course-card .card-body, .course-card .card-footer {
text-align: center;
}
}
:root {
--primary: #557933;
--primary-light: #73a244;
--soft: #f3f7f1;
--text: #2f3a2c;
--heading: #1f2a1a;
--muted: #5f6b5a;
--content-width: 1200px;
--radius: 14px;
--primary2: #466114;
--bg: #f7f8f5;
--text2: #2b2b2b;
--muted2: #6b6f67;
--card: #ffffff;
--primary-color: #466114;
--secondary-color: #E3EDC6;
--text-color: #1F1C1C;
--background-color: #FFFFFF;
--h1-header-desktop: 2.5rem;
--h2-header-desktop: 1.875rem;
--h3-header-desktop: 1.5rem;
--font-size-desktop: 1.125rem;
--margin-desktop: 1.25rem;
--h1-header-tablet: 2.25rem;
--font-size-tablet: 1rem;
--margin-tablet: 1rem;
--h1-header-mobile: 2rem;
--font-size-mobile: 0.875rem;
--margin-mobile: 0.625rem;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
padding: 0;
font-family:
Inter,
"Segoe UI",
Roboto,
sans-serif;
background: #ffffff;
color: var(--text);
line-height: 1.72;
font-size: 16px;
}
.site-header {
width: 100%;
background: var(--primary);
border-bottom:
1px solid rgba(255,255,255,.08);
}
.logo-bar {
display:flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin: 0 auto;
padding: 1.1rem 2rem;
max-width: var(--content-width);
}
.logo-bar p {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 1.5rem;
}
.logo-bar img {
height: 55px;
width: auto;
display: block;
opacity: .86;
transition:
opacity .2s ease,
transform .2s ease;
margin: 0;
}
.logo-bar img:hover {
opacity: 1;
transform: translateY(-1px);
}
.logo-bar #pg-logo {
display: flex;
flex-direction: row;
align-items: center;
}
.logo-bar #pg-logo * {
height: 55px;
color: #cec;
font-size: 1.5em;
margin: 0;
}
.content {
min-width: 0;
}
.hero .content h1 {
margin: 0 0 1.6rem;
padding-top: 1rem;
color: var(--heading);
font-size: clamp(2.2rem, 4vw, 3.2rem);
line-height: 1.1;
font-weight: 700;
letter-spacing: -0.03em;
}
.hero .content p {
margin: 0 0 1.35rem;
max-width: 74ch;
}
.content strong {
color: var(--heading);
font-weight: 650;
}
.content ul {
margin: 1.5rem 0 2rem;
padding: 0;
list-style: none;
}
.content li {
position: relative;
padding-left: 1.4rem;
margin-bottom: .8rem;
}
.content li::before {
content: "▸";
position: absolute;
left: 0;
top: 0;
color: var(--primary);
font-weight: 700;
}
.hero li a {
color: inherit;
font-weight: 500;
text-decoration-line: underline;
text-decoration-style: dashed;
text-decoration-color: var(--primary-light);
text-decoration-thickness: 2px;
text-underline-offset: 0.18em;
transition:
color .18s ease,
text-decoration-color .18s ease;
}
.hero li a:hover {
color: var(--primary);
text-decoration-color: var(--primary);
}
.hero {
max-width: var(--content-width);
margin: 0 auto;
padding:
4.5rem
2rem
0rem;
display: grid;
grid-template-columns: 1.55fr 1fr;
gap: 3rem;
align-items: start;
}
.visual {
position: sticky;
top: 2rem;
}
.visual img {
width: 100%;
height: auto;
display: block;
border-radius: var(--radius);
filter: drop-shadow(0 10px 30px rgba(0,0,0,.08));
}
.portal-navigation {
background: var(--primary);
margin-top: 2rem;
}
.portal-navigation-inner {
max-width: var(--content-width);
margin: 0 auto;
padding: 2rem 2rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
}
.nav-group h2 {
margin: 0 0 1rem;
color: #ffffff;
font-size: 1.1rem;
font-weight: 650;
letter-spacing: .01em;
}
.nav-group ul {
margin: 0;
padding: 0;
list-style: none;
}
.nav-group li + li {
margin-top: .75rem;
}
.nav-group a {
color: rgba(255,255,255,.92);
text-decoration: none;
display: inline-flex;
align-items: center;
gap: .7rem;
transition:
color .2s ease,
transform .2s ease;
}
.nav-group a:hover {
color: #ffffff;
transform: translateX(2px);
}
.nav-group.internal a::before {
content: "→";
}
.nav-group.external a::before {
content: "↗";
}
.site-footer {
max-width: var(--content-width);
margin: 0 auto;
padding: 2rem;
}
.site-footer p {
margin: 0;
color: var(--muted);
font-size: .95rem;
}
.site-footer a {
color: inherit;
text-decoration-line: underline;
text-decoration-style: dashed;
text-decoration-color: var(--primary-light);
text-decoration-thickness: 2px;
text-underline-offset: 0.18em;
transition:
color .18s ease,
text-decoration-color .18s ease;
}
@media (max-width: 960px) {
.hero {
grid-template-columns: 1fr;
gap: 2rem;
padding-top: 3rem;
}
.visual {
position: static;
order: -1;
max-width: 700px;
}
.portal-navigation-inner {
grid-template-columns: 1fr;
gap: 2rem;
}
}
@media (max-width: 640px) {
body {
font-size: 15px;
}
.logo-bar p {
gap: 1rem;
padding: 1rem;
}
.logo-bar img {
height: 32px;
}
.hero {
padding:
2.5rem
1.2rem
2rem;
}
.portal-navigation-inner,
.site-footer {
padding-left: 1.2rem;
padding-right: 1.2rem;
}
.content h1 {
margin-bottom: 1.2rem;
}
}
input.wide:hover { background: var(--colorUtu4); }
.site-nav a { background: var(--secondary-color); }
.site-nav li ul a.active { background: var(--colorUtu4); }
.site-nav ul.section:hover { background: none; }
.site-nav li ul a.active:hover { background: var(--primary-color); }
.link-buttons li:hover { background: var(--colorUtu4); }
.tool-radiobuttons span:hover { background: var(--secondary-color); }
.site-nav ul.section.filled li.active a { background: var(--colorUtu4); }
.site-nav ul.section.filled li.active a { background: var(--colorUtu4); }
.site-nav ul.section {
border: 0;
}
.site-nav ul.section.filled {
padding: 2px;
display: flex;
align-items: center;
border: 0;
flex-flow: nowrap;
border-radius: 0;
gap: 0;
}
.site-nav ul.section.filled * {
border-radius: 0;
gap: 0;
}
.site-nav ul.section.filled a span,
.site-nav ul.section.filled:hover li.active a span {
max-height: 0;
max-width:0;
overflow: hidden;
opacity: 0;
transition: max-height 0.3s linear, opacity 0.3s linear;
}
.site-nav ul.section.filled li:hover a span,
.site-nav ul.section.filled li.active a span {
max-width: 500px;
max-height: 4em;
opacity: 1;
font-size: 0.9rem;
font-weight: normal;
font-style: italic;
}
.site-nav ul.section.filled:hover li.active {
flex: 1;
}
.site-nav ul.section.filled li:hover,
.site-nav ul.section.filled li.active {
flex: 3;
}
.site-nav ul.section.filled li.title:hover {
flex: 1;
}
.site-nav ul.section.filled li.title {
align-items: center;
justify-content: center;
height: 4em;
background-color: var(--colorUtu4);
font-weight: bold;
display: flex;
border-radius: 10px 0 0 10px;
}
.product {
font-family: system-ui, -apple-system, sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.6;
}
.product * {
box-sizing: border-box;
}
.product p {
color: var(--muted);
}
.product header {
padding: 2rem 2rem;
text-align: center;
background: white;
}
.product header h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
.product header p {
max-width: 600px;
margin: 0 auto 2rem;
}
.product header a {
background: var(--primary);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 999px;
text-decoration: none;
font-weight: 600;
transition: background 0.2s ease;
}
.product header a:hover {
background: #384e10;
}
.product section {
padding: 4rem 2rem;
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: center;
}
.product section:nth-of-type(even) {
direction: rtl;
}
.product section:nth-of-type(even) > * {
direction: ltr;
}
.product .text h2 {
font-size: 1.8rem;
margin-bottom: 1rem;
}
.product img {
width: 100%;
height: 260px;
border-radius: 12px;
transition: transform 0.2s ease;
object-fit: contain;
}
.product img:hover {
transform: scale(1.1);
}
.product .resources .text {
grid-column: span 2;
}
.product .resource-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1.5rem;
margin-top: 2rem;
}
.product .resource-card {
background: var(--card);
padding: 1rem;
border-radius: 16px;
box-shadow: 0 8px 24px rgba(0,0,0,0.05);
transition: transform 0.2s ease, box-shadow 0.2s ease;
display: flex;
align-items: center;
flex-direction: column;
gap: 1rem;
}
.product .resource-card p:first-child {
font-size: 3.8rem;
padding: 0;
margin: 0;
}
.toc li {
margin-bottom: calc(1.45rem / 2);
}
.toc li > ol {
margin-left: 1.45rem;
margin-bottom: calc(1.45rem / 2);
margin-top: calc(1.45rem / 2);
}
ol.toc {
padding: 16px;
border: 1px solid var(--colorUtu5);
border-radius: 15px;
list-style-position: inside;
margin: 0;
margin-bottom: 20px;
counter-reset: section;
list-style-type: none;
}
.toc ol {
counter-reset: section;
list-style-type: none;
margin: 0;
padding: 0;
}
.toc li:before {
counter-increment: section;
content: counters(section, ".") ". ";
}
table {
border: 2px solid var(--primary-color);
color: #306245;
margin: 0;
padding: 0;
width: 100%;
border-spacing: 0;
border-collapse: collapse;
}
table tr {
margin: 1em;
margin: 0;
padding: 0;
border: 0;
}
table td:first-child {
width: 20%;
background: var(--secondary-color);
font-weight: bold;
color: #306245;
}
table th {
margin: 0;
padding: 0.5em;
border: 0;
color: #f9f8f6;
background: var(--primary-color);
border: 2px solid var(--primary-color);
}
table td {
margin: 0;
padding: 0.5em;
border: 0;
background: white;
color: black;
border: 2px solid #306245;
}
table a {
color: var(--primary-color);
}
div.hidden {
display: none;
}
h1 a, h2 a, ol.toc a {
color: var(--primary-color);
text-decoration: none;
}
hr {
box-sizing: content-box;
margin-bottom: calc(1.45rem - 1px);
background: hsla(0, 0%, 0%, 0.2);
height: 1px;
padding: 0;
border: 1px solid var(--primary-color);
}
.cards {
width: 90%;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
}
.tool-controls {
display: flex;
gap: 24pt;
display: flex;
flex-direction: column;
}
.link-buttons ul, .tool-radiobuttons {
display: flex;
width: 90%;
margin-left: auto;
margin-right: auto;
gap: 10%;
justify-content: center;
}
.tool-radiobuttons {
gap: 1%;
}
.link-buttons ul li a {
text-align: center;
color: black;
text-decoration: none;
}
.link-buttons li {
display: block;
width: 100%;
max-width: 25%;
border: 0.5px dotted var(--primary-color);
padding: 5pt;
text-align: center;
background: var(--secondary-color);
}
.tool-radiobuttons span, input#name, textarea#notes, input.wide {
background: white;
border: 2px solid var(--primary-color);
border-radius: 2px;
}
.tool-radiobuttons span {
padding: 10pt;
padding-left: 16pt;
padding-right: 16pt;
text-align: center;
display: block;
}
.note input, .note textarea {
width: 60%;
}
.note input {
height: 4em;
}
.note {
margin-bottom: 2em;
}
input.wide {
height: 4em;
width: 60%;
text-align: center;
display: block;
background: var(--secondary-color);
font-weight: bold;
font-size: 0.875rem;
}
.tool-radiobuttons input[type=checkbox], .tool-radiobuttons input[type=checkbox] ~ label {
display: inline;
}
.accordion input[type=checkbox], .accordion input[type=checkbox] ~ label {
display: inline;
margin-right: 0.5em;
}
h1 {
text-align: center;
color: var(--primary-color);
}
.accordion {
display: flex;
justify-content: space-between;
width: 100%;
box-shadow: 0 0 32px rgba(0, 0, 0, 0.1);
margin-bottom: var(--margin-desktop);
background-color: white;
color: black;
cursor: pointer;
padding: 18px;
text-align: left;
outline: none;
transition: 0.4s;
}
.accordion:hover {
background-color: #ccc;
}
.accordion.active .collapse:after { display:block; }
.accordion.active .expand:after { display:none; }
.accordion.active {
background-color: #ccc;
border: 1px solid var(--primary-color);
border-bottom: 0;
margin-bottom: 0;
padding-bottom: var(--margin-desktop);
}
.expand:after {
content: "▼";
}
.collapse:after {
content: "▲";
display:none;
}
.panel {
width: 100%;
padding: 0 18px;
padding-top: var(--margin-desktop);
display: none;
background-color: white;
border: 1px solid var(--primary-color);
overflow: hidden;
}
.panel ul {
padding: 0;
margin: 0;
margin: 0.5em;
margin-top: 0em;
margin-bottom: 1em;
}
.mitvidi-footer {
display: flex;
justify-content: center;
align-items: center;
padding: 0;
border-bottom: 2em solid var(--secondary-color);
background: var(--secondary-color);
}
.mitvidi-footer div p {
width: 75%;
}
.mitvidi-footer  img {
width: 75%;
}
.mitvidi-footer * {
display: flex;
width: 100%;
padding: 0;
margin: 0;
}
.mitvidi-footer > div {
background: var(--secondary-color);
border-radius: 0 25px 0 0;
justify-content: right;
padding: 1em;
text-align: justify;
text-justify: inter-word;
margin-top: 1em;
}
.mitvidi-footer > p {
border-top: 1em solid white;
background: white;
justify-content: left;
border-radius: 0 0 0 25px;
}
.mitvidi-footer img {
border-radius: 0 0 0 25px;
}
@media only screen and (max-width: 1280px) {
.mitvidi-footer, .mitvidi-footer * {
display: block;
padding: 0;
margin: 0;
border: 0;
border-radius: 0;
}
.mitvidi-footer div p {
background: var(--secondary-color);
width: 100%;
}
.mitvidi-footer img, .mitvidi-footer p {
width: 100%;
max-width: 100vw;
padding: 0;
margin: 0;
border: 0;
background: white;
border-radius: 0;
}
.link-buttons ul, .tool-radiobuttons {
display: flex;
padding: 0;
margin: auto;
gap: 6pt;
justify-content: center;
flex-direction: column;
}
.link-buttons li {
display: block;
width: 100%;
padding: 0;
margin-bottom: 0.5em;
max-width: inherit;
}
.site-nav, .site-nav nav, .site-nav ul, .site-nav li  {
display: block;
width: 100%;
padding: 0;
margin: 0;
border: 0;
max-width: inherit;
}
.note input, .note textarea {
width: 98%;
}
input.wide {
height: 4em;
width: 90%;
margin: auto;
}
}
.portal-header {
padding-top: 3em;
padding-bottom: 3em;
padding-left: 2em;
margin-bottom: 1em;
margin-top: 0em;
background-color: var(--colorUtu2);
border-radius: 15px;
}
.portal-header span {
font-size: 2.5em;
margin: 0.67em 0;
}
.course-info-container {
display: grid;
grid-template-columns: 50% auto;
}
.course-info-container .course-info:first-child {
padding-right: 2em;
}
.material {
background-color: var(--colorUtu8);
padding: 8px;
border-radius: 5px;
margin-top: 1em;
display: flex;
justify-content: flex-start;
}
.materials a {
text-decoration: none;
}
.material * {
display:block;
margin: 0;
padding: 0;
color: var(--colorUtu5);
}
.material img {
aspect-ratio: attr(width) / attr(height);
width: 4em;
height: auto;
margin: 0;
padding: 0;
margin-right: 1em;
}
.material .material-title {
font-weight: bolder;
}
.material .material-description {
font-style: italic;
}
.material:hover {
background: var(--colorUtu1);
}
.activities {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
width: 100%;
}
.activity-header {
display: flex;
width: 100%;
justify-content: space-between;
}
.activity-header h3 {
display: inline;
}
.activity {
width: 100%;
border: solid 1.5px var(--colorUtu7);
background-color: #fcfcfc;
margin-bottom: 4em;
padding: 8px;
border-radius: 5px;
}
.activity-description {
font-style: italic;
}
.activity .lecture {
background-color: var(--colorUtu4);
}
.activity .tutorial {
background-color: var(--colorUtu4);
}
.activity .exercise {
background-color: var(--colorUtu2);
}
.activity .deadline {
background-color: var(--colorUtu3);
}
.activity .exam {
background-color: var(--colorUtu1);
color: var(--colorUtu9);
}
.activity .event-typestatus {
font-weight: bolder;
}
.events a {
text-decoration: none;
color: var(--colorUtu5);
}
.events a *:hover {
background: var(--colorUtu1);
}
.event-entry img {
aspect-ratio: attr(width) / attr(height);
width: 4em;
height: auto;
margin: 0;
padding: 0;
margin-right: 1em;
}
.event-right {
text-align: right;
}
.event-description {
display: flex;
justify-content: flex-start;
width: 75%;
}
.event-entry {
background-color: var(--colorUtu8);
padding: 8px;
border-radius: 5px;
margin-top: 1em;
display: flex;
flex-flow: row wrap;
width: 100%;
justify-content: space-between;
}
.hidebutton.en::before {
content: "[Collapse]";
}
.showbutton.en::before {
content: "[Expand]";
}
.hidebutton.fi::before {
content: "[Piilota]";
}
.showbutton.fi::before {
content: "[Laajenna]";
}
.activitycheckbox {
display: none;
}
.activitycheckbox:not(:checked) ~ div div .showbutton,
.activitycheckbox:checked ~ div div .hidebutton,
.activitycheckbox:checked ~ .stuff {
display: none;
}
.activitycheckbox:checked ~ div div .showbutton,
.activitycheckbox:not(:checked) ~ div div .hidebutton {
display: block;
}
.action-list {
margin: 0;
padding: 0;
}
.action-list a {
text-decoration: none;
color: var(--colorUtu5);
}
.action-list li  {
font-weight: bolder;
margin: 0;
display: block;
min-width: 50%;
background-color: var(--colorUtu1);
margin-bottom: 20px;
padding: 8px;
border-radius: 15px;
}
.action-list li:hover, .builtin li:hover {
background: var(--colorUtu1);
}
.action-list li.highlight {
background-color: var(--colorUtu3);
cursor: pointer;
}
.watch-list li {
background-color: var(--colorUtu8);
}
h2.hide {
display: none;
}
.url-list li {
background-color: var(--colorUtu8);
}
.url-list.builtin li {
background-color: var(--colorUtu2);
}
.url-list li::before, .url-list.builtin li::before {
content: "🌐 ";
padding-right: 0.5em;
}
.url-list.builtin li::before {
content: "🗎 ";
}
ul li.even {
background-color: var(--colorUtu8);
}
ul li.odd {
background-color: var(--colorUtu2);
}
ul.changes {
margin: 0;
padding: 0;
}
ul.changes li {
display: block;
margin-bottom: 20px;
padding: 8px;
border-radius: 15px;
}
ul.changes li span.past {
text-decoration: line-through;
color: var(--colorUtu6);
}
ul.changes li span.next {
font-weight: bolder;
}
ul.changes li span::before {
content: "🕓 ";
padding-right: 0.5em;
}
ul.changes li span.timer::before {
content: "";
}
ul.changes li span.next::before {
content: "⏰ ";
}
ul.changes li span.future::before {
content: "📅 ";
}
#coursestatus {
margin: 0;
padding: 0;
}
#coursestatus a {
text-decoration: none;
color: var(--colorUtu5);
}
#coursestatus li {
font-weight: bolder;
margin: 0;
display: block;
min-width: 50%;
background-color: var(--colorUtu8);
margin-bottom: 20px;
padding: 8px;
border-radius: 15px;
}
#coursestatus li::before {
content: "▶  Currently active:";
padding-right: 0.5em;
}
#coursestatus li.future::before {
content: "⏰  Starting soon:";
}
#coursestatus.fi li::before {
content: "▶  Aktiivinen toteutus:";
}
#coursestatus.fi li.future::before {
content: "⏰  Pian alkava toteutus:";
}
#coursestatus li.nothing::before {
content: "🛑 ";
}
#coursestatus li:hover {
background: var(--colorUtu1);
}
.modal {
display: none; 
display: block; 
position: fixed; 
z-index: 100; 
left: 0;
top: 0;
width: 100%; 
height: 100%; 
overflow: auto; 
background-color: rgb(0,0,0); 
background-color: rgba(0,0,0,0.4); 
}
.modal-content {
background-color: #fefefe;
margin: 15% auto; 
padding: 20px;
border: 1px solid #888;
width: 80%; 
z-index: 101; 
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
ol.toc {
padding: 16px;
border: 1px solid var(--colorUtu5);
border-radius: 15px;
list-style-position: inside;
margin: 0;
margin-bottom: 20px;
counter-reset: section;
list-style-type: none;
}
.toc ol {
counter-reset: section;
list-style-type: none;
}
.toc li:before {
counter-increment: section;
content: counters(section, ".") ". ";
}
.youtube-embedded {
width: 94vw;
height: 53vw;
display: block;
margin-left: auto;
margin-right: auto;
}
.codetabs {
margin: 20px;
width: 80%;
}
.codetabs .state {
display: none;
}
.codetabs .tabs {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.codetabs .panel {
background-color: #fff;
padding: 20px;
height: auto;
display: none;
width: 100%;
flex-basis: auto;
}
.codetabs .tab {
flex-grow: 1;
max-height: 40px;
display: inline-block;
padding: 10px;
vertical-align: top;
background-color: #eee;
cursor: hand;
cursor: pointer;
border-left: 10px solid #ccc;
}
.codetabs .tab:hover {
background-color: #fff;
}
input:nth-child(1):checked ~ .tabs .tab:nth-child(1),
input:nth-child(2):checked ~ .tabs .tab:nth-child(2),
input:nth-child(3):checked ~ .tabs .tab:nth-child(3),
input:nth-child(4):checked ~ .tabs .tab:nth-child(4),
input:nth-child(5):checked ~ .tabs .tab:nth-child(5),
input:nth-child(6):checked ~ .tabs .tab:nth-child(6),
input:nth-child(7):checked ~ .tabs .tab:nth-child(7),
input:nth-child(8):checked ~ .tabs .tab:nth-child(8),
input:nth-child(9):checked ~ .tabs .tab:nth-child(9) {
background-color: #fff;
cursor: default;
border-left-color: #69be28;
}
input:nth-child(1):checked ~ .tabs .panel:nth-child(1),
input:nth-child(2):checked ~ .tabs .panel:nth-child(2),
input:nth-child(3):checked ~ .tabs .panel:nth-child(3),
input:nth-child(4):checked ~ .tabs .panel:nth-child(4),
input:nth-child(5):checked ~ .tabs .panel:nth-child(5),
input:nth-child(6):checked ~ .tabs .panel:nth-child(6),
input:nth-child(7):checked ~ .tabs .panel:nth-child(7),
input:nth-child(8):checked ~ .tabs .panel:nth-child(8),
input:nth-child(9):checked ~ .tabs .panel:nth-child(9) {
display: block;
}
.hand-list li:before {
font-size: 1.5em;
content: "☞ ";
list-style: none;
}
.hand-list ul {
list-style: none;
padding: 0;
margin: 0;
}
.lecture-grid-container .grid p {
margin: 0;
margin-left: auto;
margin-right: auto;
width: 100%;
padding: 0;
display: flex;
flex-wrap: wrap;
margin-bottom: 16px;
}
.lecture-grid-container h2 {
width: 100%;
background-color: rgba(var(--colorUtu1d), 0.5);
margin: 0;
margin-top: 15px;
margin-bottom: 6px;
padding: 8px;
text-align: center;
border-radius: 15px 15px 0 0;
}
.lecture-grid-container h2 ~ p, .lecture-grid-container h2 ~ ol, .lecture-grid-container h2 ~ ul {
width: 100%;
background-color: rgba(var(--colorUtu2d), 0.5);
margin: 0;
margin-top: -6px;
margin-bottom: 6px;
padding: 10px;
padding-top: 16px;
list-style-position: inside;
}
.lecture-grid-container p ~ p {
margin-top: -6px;
}
.lecture-grid-container * * a {
width: 50%;
background-color: rgba(var(--colorUtu2d), 0.5);
padding: 8px;
text-decoration: none;
color: var(--colorUtu5);
}
.lecture-grid-container a:hover {
background: var(--colorUtu1);
text-decoration: underline;
color: var(--colorUtu9);
}
.lecture-grid-container a img {
max-width:100%;
height: 15vh;
margin: 0;
margin-left: auto;
margin-right: auto;
display: block;
background: var(--colorUtu9);
}
.lecture-grid-container .grid p a span {
width: 100%;
margin: 0;
padding: 8px;
text-align: center;
font-weight: bold;
display: block;
}
@media only screen and (max-width: 1120px) {
.event-description {
width: 50%;
}
}
@media only screen and (max-width: 780px) {
.hidebutton.en::before, .hidebutton.fi::before {
content: "[-]";
}
.showbutton.en::before, .showbutton.fi::before {
content: "[+]";
}
.course-info-container {
display: block;
}
.activity {
border: 2px solid var(--colorUtu7);
border-left: 0px;
border-right: 0px;
background-color: #fcfcfc;
margin-bottom: 4em;
padding: 3px;
border-radius: 0px;
}
.material {
padding: 3px;
border-radius: 0px;
display: block;
}
.material * {
display:block;
}
.material .material-title {
text-align: center;
width: 100%;
border-bottom: 1px solid var(--colorUtu5);
}
.material img {
margin: 0;
padding: 0;
margin-right: auto;
margin-left: auto;
}
.event-entry {
padding: 3px;
border-radius: 0px;
display: block;
}
.events a {
text-decoration: none;
color: var(--colorUtu5);
}
.event-entry img {
margin: 0;
padding: 0;
margin-right: auto;
margin-left: auto;
}
.event-right {
text-align: center;;
}
.event-description {
text-align: center;
display: block;
width: 100%;
}
ul.changes {
margin: 0;
padding: 2px;
}
ul.changes li {
font-weight: normal;
display: block;
margin-bottom: 1em;
padding: 3px;
border-radius: 0px;
}
ul.changes li::before {
padding-right: 0.2em;
}
.url-list, .url-list.builtin {
margin: 0;
padding: 2px;
}
.url-list li::before, .url-list.builtin li::before {
padding-right: 0.2em;
}
.url-list li, .url-list.builtin li  {
font-weight: normal;
display: block;
margin: 0;
margin-bottom: 1em;
min-width: inherit;
width: 100%;
padding: 3px;
border-radius: 0px;
}
.portal-header {
padding: 0;
margin: 0;
box-shadow: 0;
background-color: var(--colorUtu2);
}
.portal-header {
text-align: center;
}
}
:root {
--primary-color: #71a43d;
--secondary-color2: #E3EDC6;
--secondary-color3: #ba1d46d;
--secondary-color: #d1f49d;
--third-color: #c15e20;
--fourth-color: #466114;
--text-color: #1F1C1C;
--background-color: #FFFFFF;
}
.site-nav ul.section, .site-nav a, .site-nav li ul a.active, .site-nav ul.section:hover, .site-nav li ul a.active:hover {
border: 0;
background: none;
}
.site-nav a { background: var(--secondary-color); }
.site-nav li ul a.active { background: var(--primary-color); }
.site-nav ul.section:hover { background: none; }
.site-nav li ul a.active:hover { background: var(--third-color); }
.link-buttons li:hover { background: var(--colorUtu4); }
.lecture-grid-container .grid p {
margin: 0;
margin-left: auto;
margin-right: auto;
width: 100%;
padding: 0;
display: flex;
flex-wrap: wrap;
margin-bottom: 16px;
}
.lecture-grid-container h2 {
background-color: var(--primary-color);
}
.lecture-grid-container h2 ~ p, .lecture-grid-container h2 ~ ol, .lecture-grid-container h2 ~ ul {
background: var(--secondary-color);
}
.lecture-grid-container * * a {
background-color: rgba(var(--colorUtu2d), 0.5);
color: var(--colorUtu5);
background: var(--secondary-color);
}
.lecture-grid-container a:hover {
background: var(--colorUtu1);
color: var(--colorUtu9);
background: var(--primary-color);
}
.lecture-grid-container a img {
background: var(--colorUtu9);
background: var(--secondary-color);
background: white;
}
.pdf-area canvas {
width: 100%;
margin: 0 auto;
display: block;
cursor: pointer;
border: 0;
border-left: 1px solid var(--colorUtu2);
border-right: 1px solid var(--colorUtu2);
border-bottom: 1px solid var(--colorUtu2);
}
.video-area video, .video-area iframe {
width: 100%;
margin: 0 auto;
display: block;
border: 0;
border-left: 1px solid var(--colorUtu2);
border-right: 1px solid var(--colorUtu2);
border-bottom: 1px solid var(--colorUtu2);
}
