/* Shared structure. Themes set the variables + look in theme.css */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font:400 16px/1.6 var(--font,Inter,system-ui,sans-serif);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{line-height:1.1;margin:0}
p{margin:0 0 1em}
:focus-visible{outline:2px solid var(--accent,#fff);outline-offset:3px;border-radius:6px}
.wrap{width:min(1200px,100% - 40px);margin-inline:auto}
.skip{position:absolute;left:-999px;top:8px;z-index:99;background:var(--fg);color:var(--bg);padding:8px 12px;border-radius:8px}
.skip:focus{left:8px}
.muted{color:var(--muted)}
.eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 .8rem}
/* header / footer */
.site-header{position:sticky;top:0;z-index:20}
.site-header__in{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700}
.brand__mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;font-size:.8rem;letter-spacing:.02em}
.nav{display:flex;gap:4px;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.nav a{display:block;padding:8px 12px;border-radius:999px;text-decoration:none;font-size:.92rem;color:var(--muted)}
.nav a:hover,.nav a[aria-current]{color:var(--fg)}
.site-footer{margin-top:96px;padding:32px 0;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
.site-footer__in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}
.site-footer a{text-decoration:none}.site-footer a:hover{color:var(--fg)}
.site-footer__links{display:flex;flex-wrap:wrap;gap:16px}
/* atoms */
.tag{display:inline-block;font-size:.78rem;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted);margin:0 6px 6px 0}
.chip{display:inline-flex;align-items:center;font:inherit;font-size:.88rem;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--fg);text-decoration:none;cursor:pointer}
.chip.is-on{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.btn{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.92rem;padding:11px 18px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:var(--fg);margin:0 8px 8px 0;transition:transform .2s,background .2s}
.btn:hover{transform:translateY(-1px)}
.btn--primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.rating{font-size:.82rem;color:var(--muted);white-space:nowrap}
.app-icon{width:64px;height:64px;border-radius:22%;flex:none}
/* cards (work grid) */
.grid{display:grid;gap:20px}
.grid--work{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.card{display:flex;flex-direction:column;text-decoration:none;overflow:hidden}
.card__media{display:block;overflow:hidden;aspect-ratio:4/3;background:var(--card)}
.card__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.card:hover .card__media img{transform:scale(1.04)}
.card--app .card__media img{object-fit:cover;object-position:top}
.card__body{display:flex;flex-direction:column;gap:6px;padding:16px 4px}
.card__meta{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.card__title{font-weight:700;font-size:1.15rem}
.card__text{color:var(--muted);font-size:.93rem}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px}
.card.is-hidden{display:none}
.page-title{font-size:clamp(2rem,5vw,3.4rem);margin:48px 0 16px;letter-spacing:-.02em}
.page-sub{color:var(--muted);font-size:1.1rem;margin-bottom:40px}
/* project page */
.crumbs{margin:32px 0 24px;font-size:.9rem}.crumbs a{text-decoration:none;color:var(--muted)}
.project__title-row{display:flex;align-items:center;gap:18px}
.project__icon{width:72px;height:72px;border-radius:22%}
.project__title{font-size:clamp(2.2rem,6vw,4.4rem);letter-spacing:-.03em}
.project__lead{font-size:clamp(1.1rem,2vw,1.4rem);max-width:760px;margin:20px 0;color:var(--fg2,var(--fg))}
.project__cover{margin:32px 0;overflow:hidden;border-radius:var(--radius,16px)}
.project__cover img{width:100%}
.project__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:40px;margin:40px 0}
.project__meta{margin:0;display:grid;gap:18px;align-content:start}
.project__meta dt{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.project__meta dd{margin:4px 0 0}
.project__text h2{font-size:1.1rem;margin-bottom:14px}
.highlights{margin:0 0 28px;padding:0;list-style:none;display:grid;gap:10px}
.highlights li{padding-left:22px;position:relative}
.highlights li::before{content:"";position:absolute;left:0;top:.65em;width:8px;height:8px;border-radius:50%;background:var(--accent,var(--fg))}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin:24px 0}
.gallery figure{margin:0;overflow:hidden;border-radius:var(--radius,16px);background:var(--card)}
.gallery--phones{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.gallery--phones figure{border-radius:28px}
.pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:64px 0 0}
.pager a{display:flex;flex-direction:column;gap:4px;padding:20px;border:1px solid var(--line);border-radius:var(--radius,16px);text-decoration:none}
.pager a:last-child{text-align:right}
.pager span{font-size:.8rem;color:var(--muted)}
/* apps page */
.app-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:32px;align-items:center;padding:32px 0;border-top:1px solid var(--line)}
.app-row__head{display:flex;gap:16px;align-items:center;margin-bottom:16px}
.app-row__head h2{font-size:1.6rem}.app-row__head h2 a{text-decoration:none}
.app-row__head p{margin:4px 0 0;font-size:.9rem}
.app-row__text{font-size:1.1rem}
.app-row__shots{display:flex;gap:12px;justify-content:flex-end}
.phone__img{width:min(31%,180px);border-radius:22px;border:1px solid var(--line)}
/* about / contact */
.about{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:48px;align-items:start;margin-top:48px}
.about__photo{border-radius:var(--radius,16px);width:100%}
.about .page-title{margin-top:0}
.about__intro{font-size:1.15rem;color:var(--fg2,var(--fg));max-width:720px}
.contact{margin:96px 0 0;padding:clamp(28px,5vw,64px);border-radius:var(--radius,16px);background:var(--card);border:1px solid var(--line)}
.contact__title{font-size:clamp(1.8rem,4.5vw,3.2rem);letter-spacing:-.02em;margin-bottom:12px}
.contact__text{color:var(--muted);font-size:1.1rem}
.contact__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:24px 0 0}
.contact__actions .btn{margin:0}
/* reveal animation (only when JS + motion allowed) */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.js .reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media (max-width:760px){
  .project__body,.app-row,.about{grid-template-columns:1fr;gap:24px}
  .app-row__shots{justify-content:flex-start;overflow-x:auto}
  .nav a{padding:6px 8px;font-size:.85rem}
  .brand__name{display:none}
  .pager{grid-template-columns:1fr}
  .pager a:last-child{text-align:left}
}

/* career block (experience, talks, discreet contact + CV slot) */
.career{margin:96px 0 0;padding:clamp(24px,4vw,48px);border-radius:var(--radius,16px);background:var(--card);border:1px solid var(--line)}
.career__title{font-size:clamp(1.6rem,3.4vw,2.4rem);letter-spacing:-.02em;margin-bottom:28px}
.career__cols{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.exp{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.exp__item{display:grid;grid-template-columns:136px 1fr;gap:14px}
.exp__period{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.92rem;padding-top:2px}
.exp small{color:var(--muted);font-size:.9rem}
.exp a{text-decoration:none}.exp a:hover{text-decoration:underline}
.career__foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:32px;padding-top:20px;border-top:1px solid var(--line)}
.career__foot p{margin:0}
.contact-line{color:var(--muted)}.contact-line a{color:var(--fg);text-decoration:none}.contact-line a:hover{text-decoration:underline}
.contact-line .eyebrow{display:inline;margin-right:8px}
.btn.is-disabled{opacity:.55;cursor:default;border-style:dashed}.btn.is-disabled:hover{transform:none}
@media (max-width:760px){.career__cols{grid-template-columns:1fr;gap:28px}}
