/
dyskolas
/
portfolioAI
Обзор
Документация
Войти
/
dyskolas
/
portfolioAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
styles.css
720 строк
18 KB
dyskolas
МЯУ
10 авг 2026, 03:08
Верифицирован
10 авг 2026, 03:08
8e7cd5b
Код
Авторство
О чём код?
@import url("https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap"); :root { --paper: #08060b; --ink: #f7f4fb; --muted: #aaa2b5; --line: rgba(255, 255, 255, 0.16); --accent: #6d24ff; --accent-bright: #a78bfa; --panel: #160d22; --black: #050407; --white: #faf8ff; --sans: "Space Grotesk", "Helvetica Neue", Helvetica, Arial, sans-serif; --mono: "DM Mono", "SFMono-Regular", Consolas, monospace; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); -webkit-font-smoothing: antialiased; } body.is-locked { overflow: hidden; } a { color: inherit; } button { color: inherit; font: inherit; } .topbar { position: sticky; top: 0; z-index: 30; height: 56px; padding: 0 24px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; border-bottom: 1px solid var(--line); color: var(--white); background: rgba(5, 4, 7, 0.9); backdrop-filter: blur(16px); } .wordmark { width: max-content; font-size: 20px; font-weight: 800; text-decoration: none; letter-spacing: -0.08em; } .dot { color: var(--accent); } .topnav { display: flex; gap: 26px; } .topnav a, .language button { font-family: var(--mono); font-size: 11px; text-transform: uppercase; text-decoration: none; letter-spacing: 0.04em; } .topnav a:hover { color: var(--accent); } .language { justify-self: end; display: flex; align-items: center; gap: 6px; font-family: var(--mono); font-size: 11px; } .language button { padding: 4px 0; border: 0; background: transparent; opacity: 0.38; cursor: pointer; } .language button.is-active { opacity: 1; color: var(--accent); } main { min-width: 0; } .profile-strip { min-height: 132px; padding: 20px 24px 22px; display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(440px, 1fr); gap: 48px; align-items: end; border-bottom: 1px solid var(--line); background: linear-gradient(112deg, #08060b 0%, #08060b 58%, #341180 58%, #6d24ff 100%); } .eyebrow, .group-label, .project-index, .project-format, .status, .detail-label { margin: 0; font: 10px/1.25 var(--mono); letter-spacing: 0.07em; text-transform: uppercase; } .profile-copy h1 { display: inline; margin: 0 10px 0 0; font-size: clamp(24px, 2.3vw, 38px); line-height: 0.95; letter-spacing: -0.055em; } .profile-copy > p:last-child { display: inline; margin: 0; max-width: 760px; color: #d2ccd9; font-size: 14px; line-height: 1.45; } .profile-copy .eyebrow { margin-bottom: 10px; color: var(--accent); } .profile-metrics { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid rgba(255, 255, 255, .32); background: rgba(5, 4, 7, .24); } .profile-metrics div { padding: 14px 16px; border-right: 1px solid rgba(255, 255, 255, .26); } .profile-metrics div:last-child { border-right: 0; } .profile-metrics strong { display: block; font-size: clamp(24px, 2.5vw, 42px); line-height: 0.95; letter-spacing: -0.06em; color: white; } .profile-metrics span { display: block; margin-top: 8px; color: var(--muted); font: 9px/1.2 var(--mono); letter-spacing: 0.035em; text-transform: uppercase; color: rgba(255,255,255,.72); } .work-section, .avatars-section { padding: 26px 24px 52px; } .work-section { border-bottom: 1px solid var(--line); background: var(--black); } .section-heading { margin-bottom: 16px; display: flex; justify-content: space-between; align-items: end; gap: 24px; } .section-heading h2 { margin: 3px 0 0; font-size: clamp(24px, 2.5vw, 42px); font-weight: 600; line-height: 1; letter-spacing: -0.055em; color: var(--white); } .section-note { max-width: 420px; margin: 0; color: var(--muted); font: 10px/1.45 var(--mono); text-align: right; text-transform: uppercase; } .work-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; } .project-card { position: relative; min-width: 0; height: clamp(290px, 45vw, 470px); padding: 0; overflow: hidden; border: 1px solid rgba(168, 85, 247, .32); background: #0d0a10; color: white; text-align: left; cursor: pointer; } .project-card::after { content: ""; position: absolute; inset: 0; z-index: 3; background: linear-gradient(to bottom, rgba(0,0,0,.1) 35%, rgba(0,0,0,.88)); transition: background .3s ease; } .project-card:hover::after, .project-card:focus-visible::after { background: linear-gradient(to bottom, rgba(83,35,120,.28) 4%, rgba(0,0,0,.9)); } .project-card:hover, .project-card:focus-visible { border-color: var(--accent-bright); } .project-card__blur, .project-card__media { position: absolute; inset: 0; width: 100%; height: 100%; } .project-card__blur { object-fit: cover; filter: blur(20px) brightness(.58); transform: scale(1.14); } .project-card__media { z-index: 1; object-fit: contain; transition: transform .5s cubic-bezier(.2,.7,.2,1), opacity .25s ease; } .project-card:hover .project-card__media { transform: scale(1.025); } .project-card__video { opacity: 0; z-index: 2; } .project-card.is-playing .project-card__video { opacity: 1; } .project-card.is-playing .project-card__poster { opacity: 0; } .project-top, .project-bottom, .project-hover { position: absolute; z-index: 5; left: 14px; right: 14px; } .project-top { top: 14px; display: flex; justify-content: flex-start; } .project-bottom { bottom: 14px; } .project-bottom h3 { margin: 5px 0 0; font-size: clamp(21px, 1.8vw, 31px); line-height: .95; letter-spacing: -0.055em; opacity: 1; transform: none; } .project-hover { top: 50%; transform: translateY(-40%); opacity: 0; transition: opacity .2s ease, transform .25s ease; } .project-card:hover .project-hover, .project-card:focus-visible .project-hover { opacity: 1; transform: translateY(-50%); } .project-hover span { display: inline-flex; align-items: center; justify-content: center; font: 10px/1.3 var(--mono); text-transform: uppercase; } .project-open { padding: 12px 14px; border: 1px solid rgba(255,255,255,.5); color: white; background: rgba(82, 31, 126, .78); backdrop-filter: blur(10px); } .avatars-section { padding-top: 30px; background: linear-gradient(180deg, #140b20, #0a070e 72%); } .avatar-group { margin-top: 22px; } .group-label { margin-bottom: 8px; color: var(--muted); } .avatar-group--stylized { margin-top: 36px; } .avatar-grid { display: grid; gap: 8px; } .avatar-grid--humans { grid-template-columns: repeat(4, 1fr); } .avatar-grid--stylized { grid-template-columns: repeat(2, minmax(0, 1fr)); width: 50%; } .avatar-card { position: relative; aspect-ratio: 4 / 5; padding: 0; overflow: hidden; border: 1px solid rgba(192, 132, 252, .34); background: #0d0a10; cursor: pointer; } .avatar-card img { width: 100%; height: 100%; object-fit: contain; transition: transform .4s ease; } .avatar-card:hover img { transform: scale(1.025); } .avatar-card__label { position: absolute; inset: auto 10px 10px; display: flex; justify-content: space-between; align-items: end; gap: 12px; color: white; text-align: left; text-shadow: 0 1px 12px rgba(0,0,0,.55); } .avatar-card::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(0,0,0,.68)); } .avatar-card__label { z-index: 2; } .avatar-card__label strong { font-size: 20px; letter-spacing: -.04em; } .avatar-card__label span { font: 9px/1.2 var(--mono); text-transform: uppercase; } footer { min-height: 190px; padding: 34px 24px 22px; display: grid; grid-template-columns: 1fr auto; align-items: start; gap: 24px; color: white; border-top: 1px solid rgba(192, 132, 252, .4); background: linear-gradient(105deg, #050407 0%, #050407 68%, #42136d 68%, #6d28a8 100%); } footer a { text-decoration: none; } footer > div:first-child > a { display: block; margin-top: 10px; font-size: clamp(26px, 4vw, 64px); letter-spacing: -.06em; } .footer-links { display: flex; gap: 20px; font: 10px/1.2 var(--mono); text-transform: uppercase; } footer small { align-self: end; color: #777; font: 9px/1.2 var(--mono); } .modal, .lightbox { position: fixed; inset: 0; z-index: 80; background: var(--black); color: var(--white); } .modal[hidden], .lightbox[hidden] { display: none; } .modal-close { position: fixed; z-index: 100; top: 14px; right: 18px; width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.28); border-radius: 50%; color: white; background: rgba(0,0,0,.48); font-size: 30px; font-weight: 200; line-height: 1; cursor: pointer; backdrop-filter: blur(8px); } .modal-close:hover { background: var(--accent); border-color: var(--accent); } .case-layout { height: 100dvh; display: grid; grid-template-columns: minmax(420px, 58vw) minmax(410px, 1fr); } .case-media-shell { position: sticky; top: 0; height: 100dvh; min-height: 0; min-width: 0; display: grid; grid-template-rows: minmax(0, 1fr) auto; overflow: hidden; border-right: 1px solid rgba(167, 139, 250, .34); background: #08060b; outline: none; } .case-media { position: relative; min-width: 0; min-height: 0; display: grid; place-items: center; overflow: hidden; padding: clamp(22px, 3.2vw, 58px); background: radial-gradient(circle at 50% 45%, #251039 0%, #100819 48%, #060408 100%); touch-action: pan-y; } .case-slide, .avatar-slide { grid-area: 1 / 1; width: 100%; height: 100%; min-width: 0; min-height: 0; margin: 0; display: grid; place-items: center; opacity: 0; visibility: hidden; transform: translateX(26px) scale(.992); transition: opacity .3s ease, transform .38s cubic-bezier(.2,.75,.2,1), visibility 0s linear .38s; } .case-slide[data-position="before"], .avatar-slide[data-position="before"] { transform: translateX(-26px) scale(.992); } .case-slide.is-active, .avatar-slide.is-active { opacity: 1; visibility: visible; transform: translateX(0) scale(1); transition-delay: 0s; } .case-slide img, .case-slide video, .avatar-slide img, .avatar-slide video { display: block; width: 100%; height: 100%; object-fit: contain; min-width: 0; min-height: 0; box-shadow: 0 24px 80px rgba(0,0,0,.48); } .case-slide video, .avatar-slide video { background: #000; } .carousel-controls { min-height: 58px; padding: 9px 14px; display: flex; align-items: center; gap: 10px; border-top: 1px solid rgba(167,139,250,.28); background: #08060b; } .carousel-controls > button, .carousel-tabs button { border: 1px solid rgba(255,255,255,.2); color: #aaa2b5; background: transparent; font: 9px/1 var(--mono); text-transform: uppercase; cursor: pointer; } .carousel-controls > button { width: 34px; height: 34px; flex: none; } .carousel-controls > button:hover, .carousel-tabs button:hover, .carousel-tabs button.is-active { color: white; border-color: var(--accent); background: rgba(109,36,255,.22); } .carousel-tabs { min-width: 0; flex: 1; display: flex; gap: 6px; } .carousel-tabs { overflow-x: auto; scrollbar-width: none; } .carousel-tabs::-webkit-scrollbar { display: none; } .carousel-tabs button { padding: 8px 9px; white-space: nowrap; } .carousel-count { color: #8f879a; font: 9px/1 var(--mono); white-space: nowrap; } .is-dragging [data-carousel-stage] { cursor: grabbing; } .case-details { height: 100dvh; padding: 58px 28px 56px; overflow-y: auto; background: #070609; } .case-kicker { display: flex; align-items: center; gap: 9px; color: #aaa; } .status { padding-left: 9px; border-left: 1px solid #555; color: #777; font-size: 8px; } .case-details h2 { margin: 12px 0 12px; font-size: clamp(40px, 3.5vw, 66px); line-height: .9; letter-spacing: -.07em; overflow-wrap: anywhere; } .case-summary { margin: 0; color: #c9c7c1; font-size: 16px; line-height: 1.4; } .metrics { margin: 25px 0 26px; display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid rgba(192,132,252,.28); border-left: 1px solid rgba(192,132,252,.28); } .metric { padding: 13px; border-right: 1px solid rgba(192,132,252,.28); border-bottom: 1px solid rgba(192,132,252,.28); } .metric strong { display: block; font-size: 27px; line-height: 1; letter-spacing: -.055em; } .metric span { display: block; margin-top: 7px; color: #888; font: 8px/1.2 var(--mono); text-transform: uppercase; } .source-block { margin: 0 0 26px; padding: 14px; border: 1px solid rgba(192,132,252,.32); background: #110a19; } .source-block .detail-label { margin-bottom: 10px; color: var(--accent); } .source-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; } .source-grid--single { grid-template-columns: 1fr; } .source-grid--portrait .source-button { aspect-ratio: 9 / 16; } .source-button { position: relative; aspect-ratio: 16 / 10; padding: 0; display: grid; place-items: center; overflow: hidden; border: 1px solid rgba(192,132,252,.28); background: #050505; cursor: zoom-in; } .source-button img { display: block; width: 100%; height: 100%; object-fit: contain; } .source-button span { position: absolute; right: 5px; bottom: 5px; padding: 3px 5px; color: #bbb; background: rgba(0,0,0,.72); font: 8px/1 var(--mono); text-transform: uppercase; } .detail-block { padding: 20px 0; border-top: 1px solid rgba(192,132,252,.22); } .detail-block .detail-label { margin-bottom: 9px; color: #777; } .detail-block p { margin: 0; color: #d6d3cc; font-size: 14px; line-height: 1.55; } .detail-pairs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } .tech-list { display: flex; flex-wrap: wrap; gap: 6px; } .tech-list span { padding: 7px 9px; border: 1px solid rgba(192,132,252,.3); color: #bbb; font: 9px/1 var(--mono); text-transform: uppercase; } .case-link { display: flex; justify-content: space-between; margin-top: 24px; padding: 16px 0; border-top: 1px solid #555; border-bottom: 1px solid #555; color: white; font: 10px/1 var(--mono); text-decoration: none; text-transform: uppercase; } .case-link:hover { color: var(--accent); } .avatar-viewer { height: 100dvh; display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(320px, .7fr); } .avatar-stage-shell { height: 100dvh; min-width: 0; min-height: 0; display: grid; grid-template-rows: minmax(0, 1fr) auto; overflow: hidden; outline: none; background: #08060b; } .avatar-stage { position: relative; min-height: 0; display: grid; place-items: center; min-width: 0; overflow: hidden; padding: clamp(16px, 2.5vw, 44px); background: radial-gradient(circle, #26113a, #09060e 68%); touch-action: pan-y; } .carousel-controls--avatar { justify-content: center; } .carousel-controls--avatar .carousel-count { min-width: 58px; text-align: center; } .avatar-sidebar { height: 100dvh; padding: 58px 22px 24px; overflow-y: auto; border-left: 1px solid rgba(192,132,252,.3); background: #08060b; } .avatar-sidebar h2 { margin: 5px 0 25px; font-size: 54px; line-height: .92; letter-spacing: -.065em; } .avatar-thumbnails { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 7px; } .avatar-thumb { aspect-ratio: 16 / 10; padding: 0; overflow: hidden; border: 1px solid #333; background: #090909; cursor: pointer; } .avatar-thumb.is-active { border-color: var(--accent); } .avatar-thumb img, .avatar-thumb video { width: 100%; height: 100%; object-fit: contain; pointer-events: none; } .lightbox { width: 100dvw; height: 100dvh; display: grid; place-items: center; padding: 32px; overflow: hidden; } .lightbox img { display: block; width: 100%; height: 100%; min-width: 0; min-height: 0; object-fit: contain; } @media (max-width: 1100px) { .topnav { gap: 14px; } .profile-strip { grid-template-columns: 1.25fr 1fr; gap: 20px; } .work-grid { grid-template-columns: repeat(3, 1fr); } .project-card { height: 420px; } .project-card:nth-child(n+4) { height: 360px; } .case-layout { grid-template-columns: minmax(0, 1.35fr) minmax(360px, 1fr); } } @media (max-width: 760px) { .topbar { padding: 0 14px; grid-template-columns: 1fr auto; } .topnav { display: none; } .profile-strip { padding: 18px 14px; grid-template-columns: 1fr; gap: 20px; } .profile-copy h1, .profile-copy > p:last-child { display: block; } .profile-copy > p:last-child { margin-top: 8px; } .profile-metrics { border-left: 0; border-top: 1px solid var(--line); padding-top: 14px; } .profile-metrics div { padding-left: 0; } .work-section, .avatars-section { padding: 22px 14px 38px; } .section-note { display: none; } .work-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } .project-card, .project-card:nth-child(n+4) { height: 330px; } .project-card:last-child { grid-column: 1 / -1; height: 280px; } .avatar-grid--humans { grid-template-columns: repeat(2, 1fr); } .avatar-grid--stylized { width: 100%; grid-template-columns: repeat(2, 1fr); } footer { grid-template-columns: 1fr; } .footer-links { grid-row: 2; } .case-layout { display: block; height: 100dvh; overflow-y: auto; } .case-media-shell { position: relative; height: 70dvh; border-right: 0; border-bottom: 1px solid #333; } .case-media { height: auto; padding: 18px; } .case-details { height: auto; min-height: 46vh; padding: 28px 14px 48px; overflow: visible; } .case-details h2 { font-size: 48px; } .modal-close { top: 10px; right: 10px; } .avatar-viewer { display: block; height: 100dvh; overflow-y: auto; } .avatar-stage-shell { height: 70dvh; } .avatar-stage { height: auto; padding: 18px; } .avatar-sidebar { height: auto; padding: 24px 14px 44px; border-left: 0; border-top: 1px solid #333; } } @media (max-width: 450px) { .work-grid { grid-template-columns: 1fr; } .project-card, .project-card:nth-child(n+4), .project-card:last-child { grid-column: auto; height: 430px; } .detail-pairs { grid-template-columns: 1fr; } .source-grid:not(.source-grid--portrait) { grid-template-columns: 1fr; } } @media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition-duration: 0.01ms !important; } } @media (hover: none) { .project-bottom h3 { opacity: 1; transform: none; } }