/* Shared page composition. Oat owns the controls and their visual states. */
.container, .site-shell-inner { width:min(1120px,calc(100% - 64px)); margin-inline:auto; }
.site-shell-header { position:sticky; top:0; z-index:50; background:var(--background); border-bottom:1px solid var(--border); }
.site-shell-header .site-shell-inner { min-height:76px; display:flex; align-items:center; gap:24px; }
.site-shell-brand { font-size:20px; font-weight:600; letter-spacing:-.4px; text-decoration:none; color:var(--foreground); }
.site-shell-note { display:none; font-size:14px; line-height:1.6; color:var(--muted-foreground); margin:0; }
.site-shell-nav { display:none; }
.site-shell-header a:not(.button), .site-shell-footer a { color:var(--foreground); text-decoration:none; }
.site-shell-header a[aria-current="page"] { color:var(--primary); text-decoration:underline; text-underline-offset:5px; }
.site-shell-cv { margin-left:auto; }
.site-shell-mobile { display:block; }
.site-shell-mobile menu a { display:block; }
.site-shell-footer { padding-block:24px; margin-top:32px; border-top:1px solid var(--border); }
.site-shell-footer .site-shell-inner { display:flex; justify-content:space-between; gap:24px; align-items:center; }
.site-shell-footer p { margin:0; font-size:14px; font-weight:500; }
.site-shell-footer p span { color:var(--muted-foreground); font-weight:400; }
.site-shell-footer nav { display:flex; flex-wrap:wrap; gap:16px; }
.site-shell-footer nav a { font-size:14px; }
.site-page { min-height:calc(100dvh - 200px); padding-block:40px 24px; }
.site-page-intro { max-width:680px; margin-bottom:36px; }
.site-page-intro h1 { font-size:var(--type-title); line-height:1.15; letter-spacing:-.8px; margin-bottom:18px; }
.site-page-intro > p:last-child { color:var(--muted-foreground); font-size:var(--type-lead); line-height:1.65; }
.site-page .projects-section { padding-top:0; border-bottom:0; }
.cv-section-links { display:flex; flex-wrap:wrap; gap:20px; margin-top:24px; }
.cv-section-links a { color:var(--primary); font-size:14px; }
.site-tool-grid { display:grid; grid-template-columns:1fr; gap:0; }
.site-tool-card { padding:28px 0; border-top:1px solid var(--border); display:grid; grid-template-columns:minmax(180px,1fr) minmax(0,2fr); gap:16px 32px; align-items:start; }
.site-tool-card h2 { grid-column:1; font-size:26px; }
.site-tool-card p, .site-tool-card h2 { margin:0; }
.site-tool-card > p:not(.tool-flow), .site-tool-card > a { grid-column:2; }
.site-tool-card p { color:var(--muted-foreground); }
.site-tool-card .tool-flow { grid-column:1 / -1; color:var(--primary); font-family:var(--font-mono); font-size:14px; }
.site-tool-card .site-tool-note { font-size:14px; }
.site-tool-card .button { justify-self:start; white-space:normal; text-align:left; }
.site-photo-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:40px 24px; align-items:start; }
.site-photo-grid figure { margin:0; }
.site-photo-grid figure:nth-child(1) { grid-column:1 / 10; }
.site-photo-grid figure:nth-child(2) { grid-column:5 / 13; }
.site-photo-grid figure:nth-child(3) { grid-column:1 / 8; }
.site-photo-grid figure:nth-child(4) { grid-column:8 / 13; padding-top:80px; }
.site-photo-grid img { display:block; width:100%; height:auto; }
.site-photo-grid figcaption { font-size:14px; font-family:var(--font-mono); color:var(--muted-foreground); padding-top:10px; }
.site-photo-link { margin-top:32px; }
.site-charging-main { width:min(1120px,calc(100% - 64px)); margin-inline:auto; padding-block:24px; }
.site-smartdrive-body .app { max-width:1184px; padding:24px 32px 48px; }
.site-smartdrive-body #sdGate { position:relative; inset:auto; z-index:auto; min-height:calc(100dvh - 200px); background:var(--background); }
html.sd-locked .site-smartdrive-body > .app { display:none; }
html.sd-embed .site-shell-header, html.sd-embed .site-shell-footer { display:none; }
.landing-page .hero { padding-block:40px 28px; grid-template-columns:minmax(0,1fr) 128px; gap:32px; border-bottom:1px solid var(--border); }
.landing-page .hero h1 { font-size:var(--type-title); }
.landing-page .hero-role { font-size:20px; font-weight:400; color:var(--primary); }
.landing-page .hero-summary { font-size:16px; line-height:1.65; max-width:62ch; }
.landing-page .profile-panel { padding:0; align-self:start; padding-top:8px; }
.landing-page .portrait-wrap { width:128px; height:128px; margin:0; }
.landing-page .hero-actions { margin-top:20px; }
.landing-page .projects-section { padding-block:28px; }
.landing-page .section-bar { margin-bottom:16px; align-items:center; }
.landing-page .section-bar h2 { font-size:24px; }
.landing-page .section-bar .button { min-height:44px; }
.landing-page .contact-section { padding:24px 0; gap:24px; margin:0; border-top:1px solid var(--border); }
.landing-page .contact-section h2 { font-size:24px; }
.cv-detail-main .site-page-intro { margin-bottom:8px; }
@media(min-width:1100px) {
 body:has(> .site-shell-header):not(.editorial-archive) { margin-left:232px; }
 html.sd-embed body.site-smartdrive-body { margin-left:0; }
 .site-shell-header { position:fixed; inset:0 auto 0 0; width:232px; height:100dvh; border-bottom:0; border-right:1px solid var(--border); }
 .site-shell-header .site-shell-inner { width:100%; height:100%; min-height:0; padding:40px 24px 28px; display:flex; flex-direction:column; align-items:stretch; gap:0; }
 .site-shell-brand { font-size:20px; }
 .site-shell-note { display:block; margin-top:10px; }
 .site-shell-nav { display:flex; flex-direction:column; margin-top:40px; gap:4px; }
 .site-shell-nav a { font-size:16px; padding-block:10px; }
 .site-shell-cv { margin: auto 0 0; align-self:start; }
 .site-shell-mobile { display:none; }
 html { scroll-padding-top:24px; }
}
@media(max-width:700px) {
 .container, .site-shell-inner, .site-charging-main { width:calc(100% - 40px); }
 .site-shell-header .site-shell-inner { gap:12px; }
 .site-shell-brand { font-size:18px; line-height:1.25; max-width:140px; }
 .site-page { padding-block:28px 16px; }
 .site-page-intro > p:last-child { font-size:16px; }
 .site-shell-footer .site-shell-inner { flex-direction:column; align-items:start; gap:16px; }
 .site-shell-footer nav { gap:12px 18px; }
 .site-tool-card { grid-template-columns:1fr; gap:12px; padding-block:24px; }
 .site-tool-card > p:not(.tool-flow), .site-tool-card > a { grid-column:1; }
 .site-photo-grid { grid-template-columns:1fr; gap:28px; }
 .site-photo-grid figure:nth-child(n) { grid-column:1; padding-top:0; }
 .site-charging-main { padding-block:16px; }
 .site-smartdrive-body .app { padding-inline:20px; }
 .landing-page .hero { grid-template-columns:minmax(0,1fr) 88px; gap:12px; padding-block:28px 24px; align-items:start; }
 .landing-page .portrait-wrap { width:88px; height:88px; }
 .landing-page .hero-copy { display:contents; }
 .landing-page .hero h1 { grid-column:1; grid-row:1; margin:0; font-size:32px; }
 .landing-page .profile-panel { grid-column:2; grid-row:1 / 3; padding:0; }
 .landing-page .hero-role { grid-column:1; grid-row:2; font-size:18px; margin:0; }
 .landing-page .hero-summary { grid-column:1 / -1; grid-row:3; margin-top:12px; }
 .landing-page .hero-actions { grid-column:1 / -1; grid-row:4; margin-top:8px; }
 .landing-page .section-bar { align-items:start; gap:12px; }
 .landing-page .contact-section { grid-template-columns:1fr; gap:16px; }
}
@media print { body:has(> .site-shell-header) { margin-left:0; } .site-shell-header,.site-shell-footer,.cv-section-links { display:none; } }
