MyPortfolio/css/style.css

187 lines
8.9 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* =========================================
Obai Albek Portfolio Styles (Dark)
Palette: Onyx + Jade | v3
========================================= */
:root{
--bg:#0E1116; --surface:#101721; --surface-2:#0B111A;
--text:#E6E9EF; --muted:#A8B0BF; --line:rgba(255,255,255,.08);
--accent:#12B3A4; --accent-ink:#061014;
--radius:22px;
--shadow:0 16px 40px rgba(0,0,0,.55);
--shadow-sm:0 8px 24px rgba(0,0,0,.45);
--container:1100px;
--space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem;
--space-5:1.25rem; --space-6:1.5rem; --space-7:2rem; --space-8:2.5rem; --space-9:3rem;
}
/* ---------- Reset & Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;scroll-behavior:smooth}
body{
margin:0;font-family:"Roboto",system-ui,-apple-system,Segoe UI,Arial,sans-serif;
color:var(--text);
background:
radial-gradient(900px 600px at 20% -10%, #121925 0%, transparent 55%),
radial-gradient(1100px 700px at 110% -20%, #0F1721 0%, transparent 60%),
var(--bg);
line-height:1.6;
}
:focus-visible{outline:3px solid color-mix(in oklab,var(--accent),white 15%);outline-offset:2px}
.container{max-width:var(--container);margin-inline:auto;padding-inline:var(--space-7)}
/* ---------- Topbar ---------- */
.topbar{
position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
padding:var(--space-4) var(--space-7);
backdrop-filter:saturate(1.05) blur(8px);
background:color-mix(in oklab,var(--bg),black 20% / 65%);
border-bottom:1px solid var(--line);
}
.topbar .brand{display:flex;align-items:center;gap:.6rem;text-decoration:none}
.brand-mark{
display:inline-grid;place-items:center;width:36px;height:36px;border-radius:12px;
background:var(--accent);color:var(--accent-ink);font-weight:800;letter-spacing:.5px;
box-shadow:0 8px 20px color-mix(in oklab,var(--accent),black 65%);
}
.brand-text{color:var(--text);font-weight:800;font-size:1.08rem;letter-spacing:.2px}
.nav{margin-left:auto;display:flex;gap:.6rem;align-items:center}
.nav-link{
--pad-x:1rem;display:inline-block;padding:.55rem var(--pad-x);text-decoration:none;color:var(--text);
background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:999px;
transition:transform .06s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease;
box-shadow:var(--shadow-sm);
}
.nav-link:hover{transform:translateY(-1px);background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}
.nav-link.cta{background:var(--accent);color:var(--accent-ink);border-color:transparent;box-shadow:0 10px 26px color-mix(in oklab,var(--accent),black 58%)}
/* ---------- Hero ---------- */
.hero{ padding: clamp(2rem, 3.6vw, 3rem) var(--space-7); }
.hero-card{
position:relative;display:grid;grid-template-columns:1.05fr 1.6fr;gap:var(--space-8);align-items:center;
max-width:var(--container);margin:0 auto;background:linear-gradient(180deg,var(--surface) 0%,color-mix(in oklab,var(--surface),black 8%) 100%);
border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.2rem,2.4vw,1.9rem);box-shadow:var(--shadow);
}
.hero-media{position:relative;min-height:clamp(220px, 24vw, 300px)}
.hero-photo{
position:absolute;inset:auto 0 0 50%;transform:translate(-50%,6%) scale(1);
width:clamp(185px, 24vw, 300px);aspect-ratio:1/1;object-fit:cover;border-radius:50%;
border:12px solid var(--surface);
box-shadow:0 0 0 12px color-mix(in oklab,var(--accent),transparent 85%),0 26px 60px color-mix(in oklab,var(--accent),black 70%);
background:#111;
}
.kicker{margin:0 0 .25rem;color:var(--muted);letter-spacing:.4px}
.title{margin:0 0 .35rem;font-size:clamp(2rem,5vw,3.1rem);line-height:1.15;color:var(--text)}
.subtitle{margin:0 0 var(--space-7);color:var(--muted)}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:var(--space-6)}
.btn{
--px:1.1rem;display:inline-block;padding:.75rem var(--px);border-radius:999px;text-decoration:none;font-weight:800;line-height:1;
border:1px solid transparent;transition:transform .06s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease;cursor:pointer;
}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 26px color-mix(in oklab,var(--accent),black 58%)}
.btn.ghost{background:rgba(255,255,255,.04);color:var(--text);border-color:var(--line)}
.btn.small{padding:.55rem .9rem;font-weight:700}
/* ---------- Social ---------- */
.social{display:flex;gap:.5rem;margin:0;padding:0;list-style:none}
.hero .social{margin-top:var(--space-7)}
a.iconlink{
display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;border:1px solid var(--line);
background:rgba(255,255,255,.03);color:var(--text);text-decoration:none;box-shadow:var(--shadow-sm);
transition:background .2s ease,border-color .2s ease,transform .06s ease;
}
a.iconlink:hover{transform:translateY(-1px);background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14)}
a.iconlink svg{display:block}
/* ---------- Sections ---------- */
.section{padding:clamp(2.5rem,5vw,4rem) 0;scroll-margin-top:90px}
.section h2{font-size:clamp(1.6rem,3.4vw,2rem);margin:0 0 var(--space-5)}
.about .highlights{display:grid;grid-template-columns:1fr;gap:.5rem;padding:0;margin:var(--space-6) 0 0;list-style:"✓ "}
.about .highlights li{padding-left:.4rem;color:var(--text)}
/* ---------- Skills ---------- */
.skills .skill-grid{display:grid;gap:var(--space-6);grid-template-columns:repeat(4,1fr)}
.skill{background:var(--surface-2);border:1px solid var(--line);border-radius:calc(var(--radius) - 6px);padding:var(--space-7);box-shadow:var(--shadow-sm)}
.skill h3{margin:0 0 .35rem}
.skill p{color:var(--muted);margin:0}
/* ---------- Projekte ---------- */
.project-list{display:grid;gap:var(--space-6);grid-template-columns:repeat(3,1fr)}
.project-card{
background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) - 6px);
padding:var(--space-7);display:grid;gap:.9rem;box-shadow:var(--shadow-sm);
}
.project-card .meta{color:var(--muted);margin:.25rem 0 0}
.project-actions{display:flex;gap:.5rem}
/* Filter/Search/Tags */
.project-controls{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-bottom:var(--space-6)}
.project-search{
flex:1 1 280px;min-width:260px;border:1px solid var(--line);border-radius:999px;padding:.8rem 1rem;background:#0A0F16;color:var(--text)
}
.filter-chips{display:flex;gap:.5rem;flex-wrap:wrap}
.chip{
padding:.55rem .9rem;border-radius:999px;background:rgba(255,255,255,.04);color:var(--text);border:1px solid var(--line);cursor:pointer
}
.chip.is-active{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.tags{display:flex;gap:.4rem;flex-wrap:wrap;list-style:none;padding:0;margin:.25rem 0 0}
.tags li{
display:inline-flex;align-items:center;justify-content:center;
height:30px;padding:0 .65rem;width:auto;border-radius:999px;
font-size:.85rem;line-height:1;background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--muted)
}
.project-card[hidden]{display:none !important}
/* ---------- Kontakt ---------- */
.contact .contact-form{
margin-top:var(--space-6);
display:grid;
gap:var(--space-5);
grid-template-columns:1fr 1fr;
align-items:start;
}
.field{display:grid;gap:.35rem}
label{font-weight:700;color:var(--text)}
/* Nachricht über zwei Spalten robust gegen Honeypot */
.contact .contact-form > .field:nth-of-type(3){ grid-column:1 / -1; }
input,textarea{
width:100%;border:1px solid var(--line);border-radius:14px;padding:.85rem 1rem;font:inherit;background:#0A0F16;color:var(--text);
transition:border-color .2s,box-shadow .2s,background .2s;
}
input::placeholder,textarea::placeholder{color:#8A93A5}
input:focus,textarea:focus{
border-color:color-mix(in oklab,var(--accent),white 15%);
box-shadow:0 0 0 3px color-mix(in oklab,var(--accent),black 78%);
}
/* Senden-Button */
.contact .contact-form .btn{
grid-column:1 / -1;
justify-self:start; /* center => mittig, start => links */
width:auto;
display:inline-flex; align-items:center;
padding:.8rem 1.2rem;
}
/* ---------- Footer ---------- */
.footer{border-top:1px solid var(--line);background:#0A0F16;padding:var(--space-6) 0;text-align:center;color:var(--muted)}
.count{font-size:.9rem;color:var(--muted);margin-left:.5rem}
/* ---------- Responsive ---------- */
@media (max-width:1000px){
.hero-card{grid-template-columns:1fr;padding-top:clamp(2rem,6vw,3rem)}
.hero-photo{position:static;display:block;margin:-3.0rem auto 0;transform:none;width:200px}
.skills .skill-grid{grid-template-columns:repeat(2,1fr)}
.project-list{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
.nav{display:none}
.container{padding-inline:var(--space-5)}
.project-list,.skills .skill-grid{grid-template-columns:1fr}
.contact .contact-form{grid-template-columns:1fr}
.contact .contact-form > .field:nth-of-type(3){ grid-column:auto; }
.contact .contact-form .btn{ justify-self:stretch;width:100%; }
}