$accent-400: #f8f5ff; $accent-500: #d8ccfa; $job-running-400: #dfd; $job-running-500: #bfb; *, *::before, *::after { color: inherit; font-family: inherit; margin: 0; box-sizing: border-box; } html, body { height: 100%; min-height: 100%; } img { display: block; } // // Animations // @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } // // Typography // $base-font-size: 18px; $heading-scale: 1.33; @function pow($number, $exponent) { $value: 1; @if $exponent > 0 { @for $i from 1 through $exponent { $value: $value * $number; } } @return $value; } @for $i from 1 through 5 { h#{$i} { $factor: pow($heading-scale, 5 - $i); font-size: $base-font-size * $factor; font-family: 'Lato', sans-serif; font-weight: 300; line-height: 1; } } pre, code { font-family: 'JetBrains Mono', monospace; font-size: 14px; line-height: 1; } pre { background: #f0f0f0; line-height: 1.5; padding: 0.5rem; border-radius: 0.5rem; width: 100%; & > code { padding: 0; } } code { background: #f0f0f0; padding: 0 0.25rem; border-radius: 0.25rem; } .material-symbols-outlined { font-weight: normal; font-style: normal; display: inline-block; line-height: 1; text-transform: none; letter-spacing: normal; word-wrap: normal; white-space: nowrap; direction: ltr; font-family: 'Material Symbols Outlined Variable'; font-size: 24px; /* Preferred icon size */ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; } button, .button { border: none; text-decoration: none; display: inline-block; color: darken($accent-400, 80%); background-color: darken($accent-400, 5%); font-size: 18px; font-weight: 500; padding: 0.5rem 1rem 0.5rem 0.65rem; border-radius: 2rem; cursor: pointer; transition: background-color 150ms ease-in-out; // border: 1px solid #e0e0e0; display: inline-grid; place-items: center; grid-auto-flow: column; gap: 0.35rem; .material-symbols-outlined { font-size: 22px; } &.loading { .material-symbols-outlined { animation: spin 1s linear infinite; } } &:hover { background-color: darken($accent-400, 10%); } &.flat { background-color: transparent; color: #333; border: none; &:hover { background-color: #00000010; } } } input[type='text'], select, textarea { width: auto; &:not(textarea) { height: 2rem; } font-size: 18px; font-weight: 400; background: #fff; border: none; border: 1px solid #ddd; border-radius: 1rem; padding: 0.25rem 0.75rem; display: flex; align-items: center; resize: vertical; &:disabled { opacity: 0.5; } &::placeholder { color: #999; } } textarea { min-height: 2rem; // padding: 7px 0.25rem; padding: 0.5rem 0.75rem; } form { width: 100%; display: grid; padding: 2rem; border-radius: 1rem; background: #fff; border: 1px solid #ddd; grid-template-columns: minmax(7rem, auto) 1fr; gap: 0.5rem; align-items: start; .row { grid-column: span 2; display: flex; flex-direction: row; &.right { justify-content: flex-end; } } .compound { display: flex; flex-direction: row; gap: 0.5rem; & > .fill { flex-grow: 1; } } input[type='text'], textarea { font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 400; } label { display: flex; align-items: center; height: 2rem; font-weight: 700; } } .object { display: grid; grid-template-columns: auto 1fr; border: 1px solid #ddd; width: 100%; & > .key { font-weight: 700; display: flex; align-items: center; min-height: 2rem; padding: 0 1rem 0 0.25rem; } & > .value { min-height: 2rem; padding: 0.25rem; display: flex; align-items: center; border-left: 1px solid #ddd; word-break: break-word; } & > .key, & > .value { border-top: 1px solid #ddd; } & > .key:nth-child(1) { border-top: none; } & > .value:nth-child(2) { border-top: none; } } .array { display: grid; border: 1px solid #ddd; width: 100%; & > .item { display: flex; align-items: center; min-height: 2rem; padding: 0.25rem; } & > .item { border-top: 1px solid #ddd; } & > .item:nth-child(1) { border-top: none; } } .compound-value { border-radius: 4px; &.borderless { border: none; } } .deploys { width: 100%; display: flex; flex-direction: column; gap: 1rem; } .deploy { width: 100%; background: $accent-400; padding: 1rem 1rem 2rem; border-radius: 1rem; display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; align-items: center; grid-template-areas: 'title shield' 'description .'; gap: 0.5rem; & > .title { grid-area: title; font-size: 24px; font-weight: 600; color: #666; a { text-decoration: none; color: inherit; &:hover { color: #444; text-decoration: underline; } } } & > .shield { grid-area: shield; background: darken($accent-400, 4%); font-size: 16px; display: grid; place-content: center; padding: 0.125rem 0.25rem; border-radius: 0.25rem; } & > .description { grid-area: description; font-family: monospace; font-size: 15px; a { text-decoration: none; color: inherit; &:hover { text-decoration: underline; } } } // border: 1px solid #ddd; // padding: 1rem; // border-radius: 1rem; } .card { width: 100%; border: 1px solid #ddd; padding: 1rem; border-radius: 1rem; display: grid; } // // Structure // body { font-family: 'Lato', sans-serif; font-size: 18px; line-height: 1.25; color: #333; background: #fff; display: grid; grid-template-columns: auto 1fr; grid-template-areas: 'sidebar main'; .sidebar { grid-area: sidebar; min-width: 300px; width: 15vw; background: $accent-400; color: #333; display: flex; flex-direction: column; align-items: start; z-index: 1; padding: 1rem; // box-shadow: 0 0 1rem 0 #0002, 0 0 0.25rem 0 #0002; .header { padding: 1rem; font-weight: 300; font-size: 48px; } .menu-button { display: grid; place-content: center; aspect-ratio: 1; .material-symbols-outlined { font-size: 20px; } } nav { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; padding-top: 1rem; .nav-item { display: flex; flex-direction: column; align-items: flex-start; .label { color: inherit; text-decoration: none; display: grid; grid-auto-flow: column; align-items: center; gap: 0.5rem; cursor: pointer; transition: background-color 150ms ease-in-out; font-size: 16px; padding: 0.5rem 0.75rem; border-radius: 100px; &:hover { background-color: $accent-500; } .material-symbols-outlined { font-size: 18px; } } .children { flex-direction: column; padding-left: 1.5rem; display: flex; flex-direction: column; align-items: flex-start; .nav-item { padding: 5px; position: relative; } } &.group { & > .label { font-size: 18px; font-weight: 400; } } } } } & > .scroll-container { grid-area: main; display: grid; overflow-y: auto; .phc-logo { position: absolute; top: 1rem; left: 1rem; font-size: 32px; font-weight: 500; line-height: 1; color: #666; -webkit-text-stroke: 4px #fff; paint-order: stroke fill; } main { position: relative; overflow-x: auto; padding: 4rem 1rem 2rem; display: grid; grid-template-columns: minmax(auto, 80ch); justify-content: center; align-content: start; gap: 2rem; justify-self: center; width: 100%; // max-width: 80ch; // // Components // & > h1 { // & > .title { // } & > .kind { padding-bottom: 0.25rem; font-size: 20px; font-weight: 400; color: #666; } } .buttons { display: flex; flex-wrap: wrap; gap: 0.5rem; } .list { display: flex; flex-direction: column; width: 100%; gap: 1rem; } .job { padding: 1rem; border-radius: 1rem; width: 100%; background: $accent-400; display: grid; grid-template-columns: 1fr; grid-row: auto auto; gap: 0.5rem; cursor: pointer; & > .name { grid-column: span 3; font-size: 18px; font-weight: 600; } & > .footer { display: flex; justify-content: space-between; align-items: center; } & .submitted-at { font-size: 15px; } & .delta { font-size: 15px; } &:hover { background: $accent-500; } &.running { background: $job-running-400; &:hover { background: $job-running-500; } } } } } }