/* ==========================================================================
   Mateusz Ostopinko — personal site
   Design system: "The Slash" · Salesforce blue
   One stylesheet for the whole site. Edit tokens below to retheme everything.
   ========================================================================== */

/* --- tokens ------------------------------------------------------------- */
:root{
  --bg:#090D11; --surface:#10161C; --surface-2:#151C24;
  --text:#F2F5F8; --text-2:#8B94A0; --muted:#79818B;
  --accent:#00A1E0; --accent-strong:#2BBCF5; --accent-on:#002B3D;
  --danger:#F2635C;
  --border:rgba(255,255,255,0.08);
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ease-out:cubic-bezier(0.16,1,0.3,1);
  --ease-cut:cubic-bezier(0.8,0,0.2,1);
}

/* --- reset -------------------------------------------------------------- */
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);overflow-x:hidden;}
a{color:inherit;text-decoration:none;}
section{scroll-margin-top:20px;}
h1,h2,h3{text-wrap:balance;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}

/* --- skip link ------------------------------------------------------------ */
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--accent);color:var(--accent-on);font-family:var(--mono);font-size:12px;padding:10px 16px;}
.skip:focus{left:0;}

/* --- nav ------------------------------------------------------------------ */
nav{padding:16px 24px;display:flex;justify-content:space-between;align-items:center;position:relative;z-index:5;flex-wrap:wrap;gap:10px;}
.logo{font-family:var(--mono);font-size:13px;padding:8px 0;transition:color 160ms ease;}
.logo i{font-style:normal;color:var(--accent);transition:color 160ms ease,opacity 160ms ease;opacity:0.75;}
.logo:hover i{opacity:1;color:var(--accent-strong);}
.logo:hover{color:var(--text);}
.links{display:flex;gap:18px;font-family:var(--mono);font-size:12px;color:var(--text-2);align-items:center;}
.links a:not(.cta){transition:color 160ms ease;padding:9px 2px;}
.links a:not(.cta):hover{color:var(--text);}
.links a.active{color:var(--text);}

/* --- buttons --------------------------------------------------------------- */
.cta{background:var(--accent);color:var(--accent-on);padding:6px 14px;transform:skewX(-8deg);display:inline-block;font-family:var(--mono);font-size:12px;border:none;cursor:pointer;transition:transform 180ms var(--ease-out),background-color 180ms ease,box-shadow 180ms var(--ease-out);}
.cta span{display:inline-block;transform:skewX(8deg);}
.cta:hover{background:var(--accent-strong);transform:skewX(-8deg) translate(2px,-2px);box-shadow:-4px 4px 0 color-mix(in srgb, var(--accent) 35%, transparent);}
.cta:active{transform:skewX(-8deg);box-shadow:-1px 1px 0 color-mix(in srgb, var(--accent) 35%, transparent);}
.cta.mail{font-size:15px;}
.ghostbtn{font-family:var(--mono);font-size:12px;color:var(--text-2);border:1px solid var(--border);padding:6px 14px;transform:skewX(-8deg);display:inline-block;transition:color 180ms ease,border-color 180ms ease;}
.ghostbtn span{display:inline-block;transform:skewX(8deg);}
.ghostbtn:hover{color:var(--accent-strong);border-color:var(--accent);}

/* --- home hero ------------------------------------------------------------- */
.hero{position:relative;min-height:360px;}
.hero .plate{position:absolute;inset:0;background:var(--surface);clip-path:polygon(0 0, 100% 0, 100% 34%, 0 88%);}
.hero .slash{position:absolute;left:-5%;right:-5%;top:52%;height:2px;background:transparent;transform:rotate(-16deg);}
.hero .slash-label{position:absolute;left:5%;top:68%;font-family:var(--mono);font-size:11px;letter-spacing:3px;color:var(--accent);transform:rotate(-16deg);}
.hero-inner{position:relative;z-index:2;padding:42px 24px 0;}
.hero h1{font-size:clamp(34px,9vw,76px);font-weight:500;line-height:0.93;letter-spacing:-2px;text-transform:uppercase;}
.hero h1 .line1{display:block;}
.hero h1 .line2{display:block;margin-left:11%;}
.hero h1 .line3{display:block;margin-left:24%;color:var(--accent);}
.hero-note{position:relative;z-index:2;margin:120px 24px 0 auto;max-width:300px;text-align:right;font-size:13px;color:var(--text-2);line-height:1.6;padding-bottom:30px;}

/* --- subpage header --------------------------------------------------------- */
.bhead{position:relative;padding:52px 24px 34px;border-bottom:1px solid var(--border);overflow:hidden;}
.bhead .kick{font-family:var(--mono);font-size:11px;letter-spacing:3px;color:var(--accent);margin-bottom:14px;}
.bhead h1{font-size:clamp(36px,8vw,52px);font-weight:500;letter-spacing:-2px;line-height:1;text-transform:uppercase;}
.bhead h1 i{font-style:normal;color:var(--accent);}
.bhead p{margin-top:14px;font-size:14px;color:var(--text-2);max-width:460px;line-height:1.65;}
.bhead .bslash{position:absolute;right:-4%;bottom:-10px;width:40%;height:2px;background:var(--accent);transform:rotate(-16deg);transform-origin:right bottom;}

/* --- section labels ---------------------------------------------------------- */
.sec-label{font-family:var(--mono);font-size:11px;letter-spacing:3px;color:var(--muted);margin:44px 24px 18px;}

/* --- flagship case + slots ----------------------------------------------------- */
.flagship{margin:0 24px;display:grid;grid-template-columns:1.5fr 1fr;gap:16px;}
.case{--tf:skewX(-3deg);display:block;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);padding:24px;transform:var(--tf);transition:transform 260ms var(--ease-out),background-color 260ms ease,box-shadow 260ms var(--ease-out);}
.case > div{transform:skewX(3deg);}
.case:hover{transform:var(--tf) translate(4px,-4px);background:var(--surface-2);box-shadow:-8px 8px 0 color-mix(in srgb, var(--accent) 12%, transparent);}
.case .kick{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:2px;margin-bottom:12px;}
.case h2{font-size:26px;font-weight:500;margin-bottom:10px;}
.case p{font-size:13px;color:var(--text-2);line-height:1.65;margin-bottom:16px;max-width:440px;}
.facts{display:flex;gap:20px;margin-bottom:18px;flex-wrap:wrap;}
.facts .fact .n{font-size:19px;font-weight:500;color:var(--text);}
.facts .fact .l{font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:1px;}
.case .go{display:inline-block;font-family:var(--mono);font-size:12px;color:var(--accent);padding-bottom:2px;background:linear-gradient(currentColor,currentColor) bottom left/0% 1px no-repeat;transition:transform 220ms var(--ease-out),background-size 260ms var(--ease-out);}
.case:hover .go{transform:translateX(6px);background-size:100% 1px;}
.side{display:flex;flex-direction:column;gap:12px;}
.slot{--tf:skewX(-3deg);flex:1;border:1px dashed rgba(255,255,255,0.2);padding:16px;transform:var(--tf);display:flex;flex-direction:column;justify-content:center;transition:transform 220ms var(--ease-out),border-color 220ms ease,background-color 220ms ease;}
.slot > div{transform:skewX(3deg);}
.slot:hover{transform:var(--tf) translate(2px,-2px);border-color:rgba(255,255,255,0.45);background-color:rgba(255,255,255,0.02);}
.slot .k{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:6px;}
.slot .t{font-size:14px;color:var(--text-2);line-height:1.5;}
.slot.hot{border-color:transparent;cursor:pointer;background-image:repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px);background-size:100% 1px,100% 1px,1px 100%,1px 100%;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;animation:march 1.6s linear infinite;}
.slot.hot .t{color:var(--text);}
.slot.hot .t b{color:var(--accent);font-weight:500;}
.slot.hot:hover{transform:var(--tf) translate(3px,-3px);background-color:color-mix(in srgb, var(--accent) 6%, transparent);animation-duration:0.6s;}

/* --- service / step / principle tiles (staircase) ------------------------------- */
.svc-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 24px;}
.svc-row.cols4{grid-template-columns:repeat(4,minmax(0,1fr));}
.svc{--tf:skewX(-6deg);background:var(--surface);border:1px solid var(--border);padding:18px 16px;transform:var(--tf);transition:transform 240ms var(--ease-out),border-color 240ms ease,background-color 240ms ease;}
.svc:nth-child(2){--tf:skewX(-6deg) translateY(12px);transform:var(--tf);}
.svc:nth-child(3){--tf:skewX(-6deg) translateY(24px);transform:var(--tf);}
.svc:nth-child(4){--tf:skewX(-6deg) translateY(36px);transform:var(--tf);}
.svc > div{transform:skewX(6deg);}
.svc:hover{transform:var(--tf) translate(3px,-6px);border-color:color-mix(in srgb, var(--accent) 55%, transparent);background:var(--surface-2);}
.svc .num{font-family:var(--mono);font-size:11px;color:var(--accent);margin-bottom:10px;transition:color 240ms ease;}
.svc:hover .num{color:var(--accent-strong);}
.svc h3{font-size:15px;font-weight:500;margin-bottom:6px;}
.svc p{font-size:12px;color:var(--text-2);line-height:1.55;}
.svc .dur{font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:10px;letter-spacing:1px;}

/* --- service offers (services page) ---------------------------------------------- */
.offer{--tf:skewX(-3deg);margin:0 24px 16px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);padding:24px;transform:var(--tf);display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:24px;transition:transform 240ms var(--ease-out),background-color 240ms ease,box-shadow 240ms var(--ease-out);}
.offer + .offer{margin-left:42px;}
.offer + .offer + .offer{margin-left:60px;}
.offer > div{transform:skewX(3deg);}
.offer:hover{transform:var(--tf) translate(3px,-4px);background:var(--surface-2);box-shadow:-8px 8px 0 color-mix(in srgb, var(--accent) 12%, transparent);}
.offer .num{font-family:var(--mono);font-size:11px;color:var(--accent);margin-bottom:10px;}
.offer h2{font-size:20px;font-weight:500;margin-bottom:8px;}
.offer .desc{font-size:13px;color:var(--text-2);line-height:1.65;}
.offer .lh{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:10px;}
.offer ul{list-style:none;}
.offer li{font-size:12.5px;color:var(--text-2);line-height:1.5;margin-bottom:8px;padding-left:16px;position:relative;}
.offer li::before{content:"↘";position:absolute;left:0;color:var(--accent);font-size:11px;}
.offer li.no::before{content:"✕";color:var(--muted);}
.offer li.no{color:var(--muted);}

/* --- engagement models (services page) -------------------------------------------- */
.models{margin:0 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
.model{--tf:skewX(-3deg);background:var(--surface);border:1px solid var(--border);padding:22px 20px;transform:var(--tf);display:flex;flex-direction:column;transition:transform 240ms var(--ease-out),border-color 240ms ease,background-color 240ms ease;}
.model > div{transform:skewX(3deg);display:flex;flex-direction:column;height:100%;}
.model:hover{transform:var(--tf) translate(3px,-4px);border-color:color-mix(in srgb, var(--accent) 55%, transparent);background:var(--surface-2);}
.model.hi{border-color:transparent;background-image:repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px);background-size:100% 1px,100% 1px,1px 100%,1px 100%;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;animation:march 1.6s linear infinite;}
.model .k{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:10px;}
.model.hi .k{color:var(--accent);}
.model h3{font-size:17px;font-weight:500;margin-bottom:8px;}
.model p{font-size:12.5px;color:var(--text-2);line-height:1.6;margin-bottom:14px;flex:1;}
.model .price{font-family:var(--mono);font-size:13px;color:var(--text);margin-bottom:4px;}
.model .price em{font-style:normal;color:var(--accent);}
.model .fine{font-family:var(--mono);font-size:10px;color:var(--muted);}

/* --- about: portrait + bio --------------------------------------------------------- */
.about{margin:44px 24px 0;display:grid;grid-template-columns:290px 1fr;gap:30px;align-items:start;}
.portrait{--tf:skewX(-3deg) rotate(-1deg);transform:var(--tf);background:var(--surface);border:1px solid var(--border);height:360px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--muted);position:relative;}
.portrait::after{content:"";position:absolute;inset:12px;border:1px dashed rgba(255,255,255,0.15);}
.portrait img{width:100%;height:100%;object-fit:cover;display:block;}
.portrait .cap{position:absolute;left:6px;bottom:-28px;font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);}
.bio .short{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--accent);margin-bottom:16px;}
.bio p{font-size:14.5px;color:var(--text-2);line-height:1.8;margin-bottom:14px;max-width:600px;}
.bio p b{color:var(--text);font-weight:500;}
.bio a{color:var(--accent);}

/* home about-hook: smaller portrait, vertically centered next to the short bio */
#about .about{grid-template-columns:240px 1fr;align-items:center;}
#about .portrait{height:250px;}

/* --- experience / track record --------------------------------------------------------- */
.xp{margin:0 24px;}
.xp-row{--tf:skewX(-2deg);display:grid;grid-template-columns:120px 1fr auto;gap:14px;align-items:baseline;padding:15px 16px;border:1px solid var(--border);background:var(--surface);transform:var(--tf);margin-bottom:10px;transition:transform 220ms var(--ease-out),border-color 220ms ease;}
.xp-row > *{transform:skewX(2deg);}
.xp-row:nth-child(2){margin-left:18px;}
.xp-row:nth-child(3){margin-left:36px;}
.xp-row:nth-child(4){margin-left:54px;}
.xp-row:nth-child(5){margin-left:72px;}
.xp-row:hover{transform:var(--tf) translate(3px,-3px);border-color:color-mix(in srgb, var(--accent) 40%, transparent);}
.xp-when{font-family:var(--mono);font-size:11px;color:var(--accent);}
.xp-role{font-size:15px;font-weight:500;}
.xp-role em{font-style:normal;color:var(--text-2);font-weight:400;}
.xp-role .d{display:block;font-size:12px;color:var(--text-2);font-weight:400;margin-top:3px;line-height:1.5;}
.xp-tag{font-family:var(--mono);font-size:10px;color:var(--muted);}

/* --- skills chips -------------------------------------------------------------------- */
.skills{display:flex;flex-wrap:wrap;gap:8px;margin:24px 24px 0;}
.chip{font-family:var(--mono);font-size:11px;color:var(--text-2);border:1px solid var(--border);padding:5px 11px;transform:skewX(-8deg);transition:border-color 180ms ease,color 180ms ease;}
.chip span{display:inline-block;transform:skewX(8deg);}
.chip:hover{border-color:var(--accent);color:var(--accent-strong);}
.cv-btn{margin:26px 24px 0;display:inline-block;}

/* --- off-duty facts (about page) -------------------------------------------------------- */
.off{margin:0 24px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.off .fact{--tf:skewX(-4deg);background:var(--surface);border:1px solid var(--border);padding:16px;transform:var(--tf);transition:transform 220ms var(--ease-out),background-color 220ms ease;}
.off .fact > div{transform:skewX(4deg);}
.off .fact:hover{transform:var(--tf) translate(2px,-3px);background:var(--surface-2);}
.off .fact .k{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--accent);margin-bottom:8px;}
.off .fact .v{font-size:13px;color:var(--text-2);line-height:1.5;}

/* --- work archive rows -------------------------------------------------------------------- */
.archive{margin:0 24px 8px;}
.arch-row{--tf:skewX(-2deg);display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:baseline;padding:16px;border:1px solid var(--border);background:var(--surface);transform:var(--tf);margin-bottom:10px;transition:transform 220ms var(--ease-out),border-color 220ms ease;}
.arch-row > *{transform:skewX(2deg);}
.arch-row:hover{transform:var(--tf) translate(3px,-3px);border-color:color-mix(in srgb, var(--accent) 40%, transparent);}
.arch-row .no{font-family:var(--mono);font-size:11px;color:var(--accent);}
.arch-row .what{font-size:15px;font-weight:500;}
.arch-row .what em{font-style:normal;color:var(--text-2);font-weight:400;}
.arch-row .what .d{display:block;font-size:12px;color:var(--text-2);font-weight:400;margin-top:3px;line-height:1.5;max-width:520px;}
.arch-row .tag{font-family:var(--mono);font-size:10px;color:var(--muted);text-align:right;line-height:1.8;}
.arch-row .tag em{font-style:normal;color:var(--accent);}
.arch-note{margin:18px 24px 0;font-size:12px;color:var(--muted);font-family:var(--mono);}

/* --- post rows (home preview + writing index) ----------------------------------------------- */
.posts{margin:76px 24px 0;}
.list{padding:10px 24px 40px;}
.post-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:15px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:transform 200ms var(--ease-out);}
.post-row .no{font-family:var(--mono);font-size:11px;color:var(--muted);margin-right:12px;}
.post-row .t{font-size:17px;transition:color 200ms ease;}
.post-row .sub{display:block;font-size:12px;color:var(--text-2);margin-top:4px;line-height:1.5;max-width:480px;}
.post-row .meta{font-family:var(--mono);font-size:11px;color:var(--muted);text-align:right;flex-shrink:0;line-height:1.8;}
.post-row .meta em{font-style:normal;color:var(--accent);}
.post-row:hover{transform:translateX(8px);}
.post-row:hover .t{color:var(--accent-strong);}
.posts .all{margin-top:16px;display:inline-block;font-family:var(--mono);font-size:12px;color:var(--accent);}
.list .post-row{animation:rise-in 550ms var(--ease-out) var(--ad,500ms) both;}

/* --- article (blog post) ------------------------------------------------------------------------ */
.art{max-width:680px;margin:0 auto;padding:36px 24px 40px;}
.back{font-family:var(--mono);font-size:12px;color:var(--text-2);display:inline-block;margin-bottom:26px;transition:color 160ms ease,transform 200ms var(--ease-out);}
.back:hover{color:var(--accent-strong);transform:translateX(-4px);}
.art .kick{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--accent);margin-bottom:14px;}
.art h1{font-size:clamp(28px,6vw,38px);font-weight:500;letter-spacing:-1px;line-height:1.15;margin-bottom:14px;}
.art .lede{font-size:16px;color:var(--text-2);line-height:1.65;margin-bottom:8px;}
.psl{height:2px;width:90px;background:var(--accent);transform:rotate(-8deg);transform-origin:left center;margin:26px 0 30px;}
.prose p{font-size:15px;color:var(--text-2);line-height:1.8;margin-bottom:18px;}
.prose p b{color:var(--text);font-weight:500;}
.prose a{color:var(--accent);}
.prose h2{font-size:20px;font-weight:500;color:var(--text);margin:30px 0 12px;}
.prose h2::before{content:"/ ";color:var(--accent);}
.prose ul{margin:0 0 18px 18px;}
.prose li{font-size:15px;color:var(--text-2);line-height:1.8;}
.prose li::marker{content:"↘ ";color:var(--accent);font-size:12px;}
blockquote{--tf:skewX(-2deg);transform:var(--tf);background:var(--surface);border-left:3px solid var(--accent);padding:16px 20px;margin:24px 0;}
blockquote > p{transform:skewX(2deg);font-size:15px;color:var(--text);font-style:italic;line-height:1.7;margin:0 !important;}
blockquote .who{transform:skewX(2deg);display:block;font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:10px;}
pre{background:var(--surface);border:1px solid var(--border);padding:16px;font-family:var(--mono);font-size:12.5px;color:var(--text-2);line-height:1.7;overflow-x:auto;margin:0 0 18px;}
pre .c{color:var(--muted);}
pre .k{color:var(--accent-strong);}
.endmark{font-family:var(--mono);color:var(--accent);margin:26px 0;}
.postfoot{border-top:1px solid var(--border);margin-top:34px;padding-top:20px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;}
.postfoot .tags{font-family:var(--mono);font-size:11px;color:var(--muted);}
.postfoot .tags em{font-style:normal;color:var(--accent);}
.postfoot .side-note{font-family:var(--mono);font-size:11px;color:var(--muted);}
.postfoot .btns{display:flex;gap:12px;flex-wrap:wrap;}

/* --- case study page ------------------------------------------------------------------------------- */
.chead{position:relative;padding:44px 24px 36px;border-bottom:1px solid var(--border);overflow:hidden;}
.chead .back{margin-bottom:24px;}
.chead .kick{font-family:var(--mono);font-size:11px;letter-spacing:3px;color:var(--accent);margin-bottom:14px;}
.chead h1{font-size:clamp(34px,7vw,50px);font-weight:500;letter-spacing:-2px;line-height:1;}
.chead .lede{margin-top:14px;font-size:15px;color:var(--text-2);max-width:520px;line-height:1.7;}
.chead .bslash{position:absolute;right:-4%;bottom:-10px;width:36%;height:2px;background:var(--accent);transform:rotate(-16deg);transform-origin:right bottom;}
.bigfacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:30px 24px 0;}
.bf{--tf:skewX(-4deg);background:var(--surface);border:1px solid var(--border);border-bottom:2px solid var(--accent);padding:16px;transform:var(--tf);transition:transform 220ms var(--ease-out),background-color 220ms ease;}
.bf > div{transform:skewX(4deg);}
.bf:hover{transform:var(--tf) translate(2px,-3px);background:var(--surface-2);}
.bf .n{font-size:24px;font-weight:500;}
.bf .l{font-family:var(--mono);font-size:10px;letter-spacing:1px;color:var(--muted);margin-top:4px;}
.shot{margin:36px 24px 0;--tf:skewX(-2deg);transform:var(--tf);background:var(--surface);border:1px solid var(--border);height:340px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--muted);position:relative;}
.shot::after{content:"";position:absolute;inset:12px;border:1px dashed rgba(255,255,255,0.15);pointer-events:none;}
.shot img{width:100%;height:100%;object-fit:cover;display:block;}
.shot .cap{position:absolute;left:14px;bottom:-26px;font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);}
.body{max-width:680px;margin:0 auto;padding:56px 24px 20px;}
.stack{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 22px;}

/* --- contact page ------------------------------------------------------------------------------------ */
.contact-grid{margin:44px 24px 0;display:grid;grid-template-columns:1fr 1.1fr;gap:30px;align-items:start;}
.status{--tf:skewX(-3deg);transform:var(--tf);padding:18px 20px;margin-bottom:22px;background-image:repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(90deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px),repeating-linear-gradient(180deg,var(--accent) 0 6px,transparent 6px 12px);background-size:100% 1px,100% 1px,1px 100%,1px 100%;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;animation:march 1.6s linear infinite;}
.status > div{transform:skewX(3deg);}
.status .k{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--accent);margin-bottom:6px;}
.status .t{font-size:14px;color:var(--text);line-height:1.5;}
.status .t b{color:var(--accent);font-weight:500;}
.ways h2{font-size:clamp(24px,4vw,30px);font-weight:500;line-height:1.15;margin-bottom:12px;}
.ways h2 i{font-style:normal;color:var(--accent);}
.ways > p{font-size:14px;color:var(--text-2);line-height:1.7;max-width:400px;margin-bottom:22px;}
.alt{margin-top:24px;font-family:var(--mono);font-size:12px;color:var(--muted);line-height:2;}
.alt a{color:var(--text-2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb, var(--text-2) 45%, transparent);transition:color 160ms ease,text-decoration-color 160ms ease;}
.alt a:hover{color:var(--accent-strong);text-decoration-color:var(--accent);}
.alt em{font-style:normal;color:var(--accent);}

/* --- forms ---------------------------------------------------------------------------------------------- */
.form{--tf:skewX(-2deg);transform:var(--tf);background:var(--surface);border:1px solid var(--border);padding:24px;}
.form > div{transform:skewX(2deg);}
.form .fk{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--accent);margin-bottom:16px;}
.form label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:1px;color:var(--muted);margin:0 0 5px;}
.form input,.form textarea,.form select{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--sans);font-size:13px;padding:10px 12px;margin-bottom:14px;transition:border-color 180ms ease;}
.form input:focus,.form textarea:focus,.form select:focus{border-color:var(--accent);}
.form textarea{min-height:110px;resize:vertical;}
.form .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.form .fine{font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:10px;}
.form .fok{color:var(--accent);}
.form .ferr{display:none;font-family:var(--mono);font-size:10px;letter-spacing:0.5px;color:var(--danger);margin:-8px 0 12px;}
.form .ferr.show{display:block;}
.form input.invalid,.form textarea.invalid{border-color:var(--danger);}

/* --- CTA band + ticker strip + footer ------------------------------------------------------------------------- */
.cta-band{margin:70px 24px 0;padding:30px 26px;--tf:skewX(-2deg);transform:var(--tf);background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;}
.cta-band > *{transform:skewX(2deg);}
.cta-band h2{font-size:22px;font-weight:500;}
.cta-band h2 i{font-style:normal;color:var(--accent);}
.cta-band p{font-size:13px;color:var(--text-2);margin-top:6px;max-width:440px;line-height:1.6;}
/* rotated band paints ~1.82vw below its layout box (50vw·tan2°·1.04) — the
   margin-bottom must scale with viewport width or it collides with the footer */
.strip{margin-top:70px;margin-bottom:2.2vw;background:var(--accent);color:var(--accent-on);transform:rotate(-2deg) scale(1.04);padding:10px 0;overflow:hidden;white-space:nowrap;}
.strip span{font-family:var(--mono);font-size:12px;letter-spacing:2px;display:inline-block;animation:ticker 22s linear infinite;will-change:transform;}
.strip:hover span{animation-play-state:paused;}
.foot{display:flex;justify-content:space-between;padding:26px 24px;margin-top:56px;font-family:var(--mono);font-size:11px;color:var(--muted);border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;}
.foot.bare{border-top:none;}

/* ==========================================================================
   Motion
   ========================================================================== */
@keyframes nav-in{from{opacity:0;transform:translateY(-10px);}to{opacity:1;transform:none;}}
@keyframes plate-cut{from{clip-path:polygon(0 0,100% 0,100% 0%,0 0%);}to{clip-path:polygon(0 0,100% 0,100% 34%,0 88%);}}
@keyframes line-in{from{opacity:0;transform:translate3d(-44px,0,0) skewX(-10deg);}to{opacity:1;transform:translate3d(0,0,0) skewX(0);}}
@keyframes slash-draw{from{transform:scaleX(0);}to{transform:scaleX(1);}}
@keyframes psl-draw{from{transform:rotate(-8deg) scaleX(0);}to{transform:rotate(-8deg) scaleX(1);}}
@keyframes label-wipe{from{clip-path:inset(0 100% 0 0);}to{clip-path:inset(0 0 0 0);}}
@keyframes rise-in{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@keyframes reveal-in{from{opacity:0;transform:var(--tf,translateZ(0)) translate3d(var(--dx,0px),var(--dy,24px),0);}to{opacity:1;transform:var(--tf,translateZ(0));}}
@keyframes inner-rise{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
@keyframes ticker{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@keyframes ast-pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.45;transform:scale(0.92);}}
@keyframes march{to{background-position:24px 0,-24px 100%,0 -24px,100% 24px;}}

/* load choreography — nav + headers */
nav{animation:nav-in 500ms var(--ease-out) both;}
.bhead .kick,.chead .kick{animation:rise-in 550ms 150ms var(--ease-out) both;}
.bhead h1,.chead h1{animation:rise-in 600ms 250ms var(--ease-out) both;}
.bhead p,.chead .lede{animation:rise-in 600ms 380ms var(--ease-out) both;}
.bhead .bslash,.chead .bslash{animation:slash-draw 600ms 500ms var(--ease-cut) both;transform-origin:right bottom;}
.chead .back{animation:rise-in 500ms 100ms var(--ease-out) both;}

/* load choreography — home hero */
.hero .plate{animation:plate-cut 700ms 100ms var(--ease-out) both;}
.hero h1 .line1,.hero h1 .line2,.hero h1 .line3{animation:line-in 650ms var(--ease-out) both;}
.hero h1 .line1{animation-delay:250ms;}
.hero h1 .line2{animation-delay:370ms;}
.hero h1 .line3{animation-delay:490ms;}
.hero .slash::after{content:"";position:absolute;inset:0;background:var(--accent);transform-origin:0 50%;animation:slash-draw 700ms 600ms var(--ease-cut) both;}
.hero .slash-label{animation:label-wipe 500ms 1000ms var(--ease-out) both;}
.hero-note{animation:rise-in 600ms 1150ms var(--ease-out) both;}
.ast{display:inline-block;transform-origin:60% 40%;animation:ast-pulse 2.6s ease-in-out 2s infinite;}

/* load choreography — article pages */
.art .back{animation:rise-in 500ms 100ms var(--ease-out) both;}
.art .kick{animation:rise-in 550ms 180ms var(--ease-out) both;}
.art h1{animation:rise-in 600ms 260ms var(--ease-out) both;}
.art .lede{animation:rise-in 600ms 360ms var(--ease-out) both;}
.art .psl{animation:psl-draw 550ms 480ms var(--ease-cut) both;}
.art .prose{animation:rise-in 650ms 600ms var(--ease-out) both;}
.art .postfoot{animation:rise-in 650ms 700ms var(--ease-out) both;}

/* scroll reveals — elements marked with data-reveal (see main.js) */
.reveal{opacity:0;}
.reveal.in{opacity:1;animation:reveal-in 600ms var(--ease-out) var(--rd,0ms) backwards;}
.slot.hot.in{animation:reveal-in 600ms var(--ease-out) var(--rd,0ms) backwards,march 1.6s linear infinite;}
.model.hi.in{animation:reveal-in 600ms var(--ease-out) var(--rd,0ms) backwards,march 1.6s linear infinite;}
.sec-label{--dx:-16px;--dy:0px;}
.case{--dx:-28px;--dy:18px;}
.slot{--dy:22px;}
.svc{--dx:-20px;--dy:24px;}
.offer{--dx:-28px;--dy:16px;}
.model{--dy:20px;}
.portrait{--dx:-24px;--dy:10px;}
.bio{--dy:20px;}
.xp-row{--dx:-24px;--dy:12px;}
.arch-row{--dx:-24px;--dy:12px;}
.arch-note{--dy:10px;}
.skills{--dy:16px;}
.cv-btn{--dy:12px;}
.off .fact{--dy:18px;}
.bf{--dy:16px;}
.shot{--dy:20px;}
.post-row{--dy:14px;}
.lcol{--dx:-24px;--dy:12px;}
.form{--dx:24px;--dy:12px;}
.cta-band{--dx:-20px;--dy:16px;}
.body .prose,.body .postfoot{--dy:16px;}

/* inner cascade inside the flagship card */
.case.reveal .kick,.case.reveal h2,.case.reveal p,.case.reveal .facts,.case.reveal .go{opacity:0;}
.case.in .kick,.case.in h2,.case.in p,.case.in .facts,.case.in .go{opacity:1;animation:inner-rise 500ms var(--ease-out) backwards;}
.case.in .kick{animation-delay:150ms;}
.case.in h2{animation-delay:230ms;}
.case.in p{animation-delay:310ms;}
.case.in .facts{animation-delay:390ms;}
.case.in .go{animation-delay:470ms;}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:760px){
  .flagship,.about,#about .about,.contact-grid{grid-template-columns:1fr;}
  .svc-row,.svc-row.cols4,.models{grid-template-columns:1fr;}
  .svc,.svc:nth-child(2),.svc:nth-child(3),.svc:nth-child(4){--tf:skewX(-6deg);transform:var(--tf);}
  .offer{grid-template-columns:1fr;gap:16px;}
  .offer + .offer,.offer + .offer + .offer{margin-left:24px;}
  .xp-row{grid-template-columns:1fr;gap:4px;}
  .xp-row:nth-child(2),.xp-row:nth-child(3),.xp-row:nth-child(4),.xp-row:nth-child(5){margin-left:0;}
  .arch-row{grid-template-columns:1fr;gap:4px;}
  .arch-row .tag{text-align:left;}
  .bigfacts{grid-template-columns:repeat(2,minmax(0,1fr));}
  .off{grid-template-columns:repeat(2,minmax(0,1fr));}
  .portrait{height:260px;margin-bottom:22px;}
  .shot{height:220px;}
  .hero .slash-label{display:none;}
  .hero-note{margin-top:48px;}
  .bhead .bslash,.chead .bslash{display:none;}
  .form .row2{grid-template-columns:1fr;gap:0;}
  .reveal.in{--rd:0ms !important;} /* no staggers on mobile — content shows up immediately */
}

/* ==========================================================================
   Reduced motion — keep everything visible and still
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  nav,.bhead .kick,.bhead h1,.bhead p,.chead .kick,.chead h1,.chead .lede,.chead .back,
  .hero .plate,.hero h1 .line1,.hero h1 .line2,.hero h1 .line3,.hero .slash-label,.hero-note,
  .art .back,.art .kick,.art h1,.art .lede,.art .prose,.art .postfoot,.list .post-row{animation:none !important;}
  .bhead .bslash,.chead .bslash{animation:none !important;transform:rotate(-16deg) !important;}
  .art .psl{animation:none !important;transform:rotate(-8deg) !important;}
  .hero .slash::after{animation:none !important;transform:none !important;}
  .strip span{animation:none !important;transform:none !important;}
  .ast{animation:none !important;}
  .slot.hot,.slot.hot.in,.model.hi,.model.hi.in,.status{animation:none !important;}
  .reveal,.reveal.in{opacity:1 !important;animation:none !important;}
  .case.reveal .kick,.case.reveal h2,.case.reveal p,.case.reveal .facts,.case.reveal .go{opacity:1 !important;animation:none !important;}
  .cta:hover,.cta:active{transform:skewX(-8deg);}
  .case:hover,.slot:hover,.slot.hot:hover,.svc:hover,.offer:hover,.model:hover,.xp-row:hover,.arch-row:hover,.bf:hover,.off .fact:hover{transform:var(--tf);}
  .case:hover .go,.post-row:hover,.back:hover{transform:none;}
}
