.page-shell{padding:120px 0 60px;min-height:calc(100vh - 80px)}.page-heading{display:grid;grid-template-columns:1fr minmax(240px,380px);gap:50px;align-items:end;padding-bottom:30px;border-bottom:1px solid var(--line);margin-bottom:30px}.page-heading h1{font-size:clamp(42px,7vw,78px);line-height:1;letter-spacing:-.07em;margin:8px 0 0}.page-heading p:last-child{color:var(--muted);font-size:14px;line-height:1.75;margin:0}.page-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.pdf-frame{height:calc(100vh - 245px);min-height:620px;border:1px solid var(--line);background:var(--surface);width:100%}.pdf-frame object{display:block;width:100%;height:100%;border:0}.projects-page-grid{display:grid;gap:18px}.case-card{display:grid;grid-template-columns:70px 1fr;gap:24px;padding:28px 0;border-top:1px solid var(--line)}.case-index{font:11px var(--mono);color:var(--accent)}.case-head{display:flex;justify-content:space-between;gap:20px;align-items:start}.case-head h2{font-size:clamp(24px,3vw,36px);letter-spacing:-.045em;margin:0}.case-subtitle{color:var(--muted);font-size:13px;margin:5px 0 0}.case-status{border:1px solid var(--line);padding:5px 8px;white-space:nowrap;color:var(--muted);font:10px var(--mono);text-transform:uppercase}.case-tech{display:flex;gap:7px;flex-wrap:wrap;margin:18px 0}.case-tech span{border:1px solid var(--line);background:var(--surface-2);padding:5px 8px;color:var(--muted);font:10px var(--mono)}.case-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:20px}.case-columns section{padding-top:12px;border-top:1px solid var(--line)}.case-columns h3{font:10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 9px}.case-columns p{font-size:13px;line-height:1.65;color:var(--muted);margin:0}.case-links{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:20px}.case-link{display:inline-flex;padding:8px 11px;border:1px solid var(--line);font-size:11px}.case-link:hover{border-color:var(--accent);color:var(--accent)}.case-link.disabled{cursor:default;color:var(--muted);opacity:.72}.page-footer{margin-top:0}
@media(max-width:800px){.page-shell{padding-top:90px}.page-heading{grid-template-columns:1fr;gap:18px}.pdf-frame{height:72vh;min-height:500px}.case-card{grid-template-columns:1fr;gap:8px}.case-head{display:block}.case-status{display:inline-flex;margin-top:12px}.case-columns{grid-template-columns:1fr}.nav.mobile-open .nav-links{display:flex}}
.case-link.live{background:var(--accent);border-color:var(--accent);color:#0d1110;font-weight:700}.case-link.live:hover{background:var(--accent-2);color:#0d1110}

/* Project archive: an editorial system index rather than a card wall. */
.projects-page-grid{
  gap:0;
  border-bottom:1px solid var(--line);
}
.case-card{
  position:relative;
  grid-template-columns:84px minmax(0,1fr);
  gap:28px;
  padding:34px 24px;
  border-top:1px solid var(--line);
  transition:background-color .2s ease,box-shadow .2s ease;
}
.case-card:nth-child(even){background:color-mix(in srgb,var(--surface) 48%,transparent)}
.case-card:hover{
  background:var(--surface);
  box-shadow:inset 3px 0 0 var(--accent);
}
.case-index{
  font-family:var(--mono);
  font-size:clamp(26px,3vw,38px);
  line-height:1;
  letter-spacing:-.08em;
  color:color-mix(in srgb,var(--muted) 42%,transparent);
}
.case-body{min-width:0}
.case-head h2{line-height:1.08}
.case-description{
  max-width:780px;
  margin:14px 0 0;
  color:var(--muted);
  font-size:14px;
  line-height:1.75;
}
.case-status{
  border-radius:999px;
  background:var(--surface-2);
  font-family:inherit;
  font-weight:650;
  letter-spacing:.04em;
}
.case-tech span{
  border:0;
  border-radius:999px;
  font-family:inherit;
  font-size:11px;
  font-weight:600;
}
.case-features{
  margin-top:22px;
  padding:17px 18px 18px;
  border:1px solid var(--line);
  background:var(--surface-2);
}
.case-features h3{
  margin:0 0 13px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:10px;
  font-weight:500;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.case-features ul{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px 18px;
  margin:0;
  padding:0;
  list-style:none;
}
.case-features li{
  position:relative;
  padding-left:16px;
  color:var(--text);
  font-size:12px;
  line-height:1.5;
}
.case-features li::before{
  content:"";
  position:absolute;
  top:.55em;
  left:0;
  width:6px;
  height:6px;
  border:1px solid var(--accent);
}
.case-columns{gap:0;border-top:1px solid var(--line)}
.case-columns section{
  min-width:0;
  padding:15px 18px 0 0;
  border-top:0;
}
.case-columns section+section{
  padding-left:18px;
  border-left:1px solid var(--line);
}
.case-link{transition:border-color .18s ease,color .18s ease,background-color .18s ease}

@media(max-width:800px){
  .case-card{grid-template-columns:1fr;gap:10px;padding:26px 16px}
  .case-index{font-size:22px}
  .case-features ul{grid-template-columns:repeat(2,minmax(0,1fr))}
  .case-columns{grid-template-columns:1fr;border-top:0}
  .case-columns section,.case-columns section+section{padding:13px 0;border-left:0;border-top:1px solid var(--line)}
}
@media(max-width:480px){
  .case-features ul{grid-template-columns:1fr}
  .case-head h2{font-size:27px}
}

/* Traditional CV layout: readable on screen, restrained, and print-ready. */
.cv-page{max-width:1050px}
.resume{background:#fff;color:#172033;border:1px solid #d8dee8;padding:52px 60px;box-shadow:0 18px 55px rgba(0,0,0,.16)}
.resume-header{text-align:center;padding-bottom:22px;border-bottom:3px solid #176b52}
.resume-header h1{margin:0;color:#0f172a;font-size:clamp(34px,5vw,50px);line-height:1;letter-spacing:-.045em}
.resume-role{margin:10px 0 15px;color:#475569;font-size:15px;font-weight:600}
.resume-role span{padding:0 6px;color:#176b52}
.resume-contact{display:flex;justify-content:center;gap:7px 18px;flex-wrap:wrap;font-size:12px;color:#475569}
.resume-contact a{color:#174f85;text-decoration:underline;text-underline-offset:3px}
.resume-section{padding:20px 0 0}
.resume-section h2{margin:0 0 12px;padding-bottom:6px;border-bottom:1px solid #94a3b8;color:#0f172a;font-size:13px;line-height:1.2;letter-spacing:.12em;text-transform:uppercase}
.resume-section>p{margin:0;color:#334155;font-size:13px;line-height:1.65}
.resume-skills{display:grid;gap:6px;margin:0}
.resume-skills div{display:grid;grid-template-columns:170px 1fr;gap:14px}
.resume-skills dt{color:#0f172a;font-size:12px;font-weight:700}
.resume-skills dd{margin:0;color:#334155;font-size:12px;line-height:1.5}
.resume-entry+.resume-entry{margin-top:18px}
.resume-entry-head{display:flex;justify-content:space-between;gap:24px;align-items:start}
.resume-entry h3,.resume-project h3{margin:0;color:#0f172a;font-size:14px;line-height:1.35}
.resume-entry-head p{margin:3px 0 0;color:#475569;font-size:12px}
.resume-entry time{flex:0 0 auto;color:#475569;font-size:11px;font-weight:600}
.resume ul{margin:8px 0 0;padding-left:18px;color:#334155}
.resume li{padding-left:3px;font-size:12px;line-height:1.55}
.resume li+li{margin-top:4px}
.resume-project{padding:0 0 13px}
.resume-project h3 span{display:inline;color:#536174;font-size:11px;font-weight:500}
.resume-project ul{margin-top:5px}
.resume-entry.compact+.resume-entry.compact{margin-top:12px}
@media(max-width:700px){.resume{padding:32px 22px}.resume-skills div{grid-template-columns:1fr;gap:2px}.resume-entry-head{display:block}.resume-entry time{display:block;margin-top:5px}.resume-contact{gap:7px 12px}}
@media print{body{background:#fff}.site-header,.footer,.modal-backdrop,.palette{display:none!important}.page-shell{padding:0!important}.container,.cv-page{width:100%;max-width:none}.resume{border:0;box-shadow:none;padding:0}.resume-section{break-inside:avoid}.resume-project{break-inside:avoid}}
