:root{color-scheme:light;--color-primary:#1976d2;--color-primary-dark:#0d47a1;--color-accent:#00897b;--color-danger:#c62828;--color-warning:#ef6c00;--color-success:#2e7d32;--color-text:#1f2937;--color-text-muted:#5f6b7a;--color-text-disabled:#9aa4b2;--color-border:#d8dee8;--color-background:#f6f8fb;--color-surface:#fff;--color-surface-muted:#edf2f7;--shadow-1:0 1px 2px #0f172a14;--shadow-2:0 8px 24px #0f172a1f;--font-body:"Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", "Helvetica Neue", Arial, sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--container:1120px;--container-narrow:880px}:root[data-theme=dark]{color-scheme:dark;--color-primary:#64b5f6;--color-primary-dark:#90caf9;--color-accent:#4db6ac;--color-danger:#ef9a9a;--color-warning:#ffb74d;--color-success:#81c784;--color-text:#eef2f7;--color-text-muted:#b8c2d1;--color-text-disabled:#7f8a99;--color-border:#344154;--color-background:#101722;--color-surface:#172131;--color-surface-muted:#1f2b3c;--shadow-1:0 1px 2px #0000003d;--shadow-2:0 8px 24px #00000052}*{box-sizing:border-box}html{background:var(--color-background)}body{color:var(--color-text);background:var(--color-background);font-family:var(--font-body);letter-spacing:0;overflow-wrap:break-word;line-break:strict;margin:0;font-size:16px;line-height:1.75}body,button,input,textarea{font-family:var(--font-body)}a{color:inherit}img{max-width:100%;height:auto;display:block}button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.35}h1{margin-bottom:16px;font-size:clamp(2.3rem,1.8rem + 2vw,3.5rem)}h2{margin-bottom:14px;font-size:1.75rem}h3{margin-bottom:12px;font-size:1.1rem}p{color:var(--color-text-muted);margin-bottom:0}.phrase-text{word-break:keep-all;overflow-wrap:anywhere}.phrase-chunk{display:inline-block}.container{width:min(100% - 32px, var(--container));margin-inline:auto}.narrow{max-width:var(--container-narrow)}.centered{text-align:center}.site-header{z-index:10;background:color-mix(in srgb, var(--color-surface) 92%, transparent);border-bottom:1px solid var(--color-border);backdrop-filter:blur(14px);position:sticky;top:0}.header-inner{grid-template-columns:auto 1fr auto;align-items:center;gap:16px;min-height:64px;display:grid}.brand{min-height:44px;color:var(--color-primary);align-items:center;gap:10px;font-weight:700;text-decoration:none;display:inline-flex}.brand img{border-radius:999px}.nav-links{justify-content:flex-end;gap:6px;display:flex}.nav-link{min-height:44px;color:var(--color-text-muted);border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-weight:600;text-decoration:none;display:inline-flex}.nav-link:hover,.nav-link.active{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 12%, transparent)}.nav-external-mark{color:var(--color-text-muted);font-size:.8rem;line-height:1}.nav-link-external:hover .nav-external-mark{color:var(--color-primary)}.theme-toggle{width:44px;height:44px;color:var(--color-primary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;place-items:center;display:inline-grid}.theme-toggle:hover{background:color-mix(in srgb, var(--color-primary) 12%, transparent)}.theme-icon{font-size:1.1rem}:root[data-theme=dark] .theme-icon-dark,:root:not([data-theme=dark]) .theme-icon-light{display:none}.section{padding:72px 0}.section-muted{background:var(--color-surface-muted)}.hero{background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 9%, transparent), transparent 64%), var(--color-background);align-items:center;min-height:560px;display:grid}.hero-inner{text-align:center}.profile-image{border:4px solid var(--color-surface);width:120px;height:120px;box-shadow:var(--shadow-2);border-radius:999px;margin:0 auto 24px}.eyebrow{color:var(--color-primary);margin-bottom:10px;font-size:.88rem;font-weight:700}.hero-copy{max-width:620px;margin:0 auto 28px;font-size:1.05rem}.page-hero{padding-bottom:36px}.page-hero p{font-size:1.05rem}.action-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.button{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;min-height:44px;padding:10px 18px;font-size:.95rem;font-weight:700;line-height:1.4;text-decoration:none;display:inline-flex}.button-primary{color:#fff;background:var(--color-primary)}.button-primary:hover{background:var(--color-primary-dark)}.button-secondary,.button-ghost{color:var(--color-primary);border-color:var(--color-border);background:0 0}.button-secondary:hover,.button-ghost:hover{border-color:var(--color-primary)}.section-heading{margin-bottom:28px}.two-column,.skill-grid,.contact-grid{gap:20px;display:grid}.two-column,.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.contact-hero{padding-bottom:20px}.contact-links-section{padding-top:20px;padding-bottom:40px}.contact-links-section .section-heading{margin-bottom:18px}.contact-security-section{padding-top:40px}.card{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-1);border-radius:8px;padding:24px}.chip-list,.tech-list{flex-wrap:wrap;gap:8px;display:flex}.chip{min-height:28px;color:var(--color-text);background:var(--color-surface-muted);border:1px solid #0000;border-radius:999px;align-items:center;padding:3px 10px;font-size:.82rem;font-weight:600;line-height:1.5;display:inline-flex}.chip-outline{color:var(--color-primary);border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border));background:0 0}.chip-primary{color:#fff;background:var(--color-primary)}.chip-blue{color:#fff;background:#1976d2}.chip-green{color:#fff;background:#2e7d32}.chip-purple{color:#fff;background:#6a1b9a}.chip-orange{color:#fff;background:#ef6c00}.chip-red{color:#fff;background:#c62828}.cta-panel{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-1);border-radius:8px;padding:32px}.cta-panel h2{margin-bottom:20px}.work-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.work-card{flex-direction:column;padding:0;display:flex;overflow:hidden}.work-media{aspect-ratio:16/9;background:var(--color-surface-muted);position:relative;overflow:hidden}.work-image-button{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:grid;position:absolute;inset:0;overflow:hidden}.work-media img,.work-media-placeholder{width:100%;height:100%;display:block}.work-image-button img{object-fit:cover;object-position:top center;background:var(--color-surface-muted);transition:transform .2s}.work-image-button:hover img,.work-image-button:focus-visible img{transform:scale(1.04)}.work-image-button:focus-visible{outline:3px solid var(--color-primary);outline-offset:-3px}.work-media-hint{color:#fff;opacity:0;background:#0f172ab8;border-radius:999px;min-height:28px;padding:3px 10px;font-size:.82rem;font-weight:700;line-height:1.5;transition:opacity .2s,transform .2s;position:absolute;bottom:12px;right:12px;transform:translateY(4px)}.work-image-button:hover .work-media-hint,.work-image-button:focus-visible .work-media-hint{opacity:1;transform:translateY(0)}.work-media-placeholder{color:var(--color-text-disabled);place-items:center;font-weight:700;display:grid}.work-badges{justify-content:space-between;gap:8px;display:flex;position:absolute;inset:12px 12px auto}.work-body{flex:1;padding:20px}.work-body h2{margin-bottom:10px;font-size:1.15rem}.work-body p{margin-bottom:18px}.work-actions{justify-content:flex-end;padding:0 20px 20px;display:flex}.image-lightbox{width:min(100% - 32px,1080px);max-height:min(100% - 32px,820px);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-2);border-radius:8px;padding:0}.image-lightbox::backdrop{background:#0f172ab8}.image-lightbox-inner{grid-template-rows:auto minmax(0,1fr);max-height:min(100vh - 32px,820px);display:grid}.image-lightbox-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;display:flex}.image-lightbox-title{color:var(--color-text);margin:0;font-weight:700}.image-lightbox-close{width:44px;height:44px;color:var(--color-text);border:1px solid var(--color-border);cursor:pointer;background:0 0;border-radius:999px;flex:none;place-items:center;font-size:1.4rem;line-height:1;display:inline-grid}.image-lightbox-close:hover,.image-lightbox-close:focus-visible{color:var(--color-primary);border-color:var(--color-primary)}.image-lightbox-image{aspect-ratio:16/9;object-fit:contain;background:var(--color-surface-muted);width:100%;height:min(70vh,608px)}.contact-card{min-height:148px;color:inherit;align-content:start;gap:12px;text-decoration:none;display:grid}.contact-card:hover{border-color:var(--color-primary);transform:translateY(-2px)}.contact-card-heading{align-items:center;gap:12px;display:flex}.contact-card-heading h3{margin-bottom:0}.contact-icon{width:36px;height:36px;color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 10%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-primary) 24%, var(--color-border));border-radius:8px;flex:none;place-items:center;display:inline-grid}.contact-icon svg{fill:currentColor;width:20px;height:20px}.gpg-panel summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;font-size:1.1rem;font-weight:700;display:flex}.gpg-panel p{margin:22px 0}.copy-field{gap:8px;margin-top:20px;display:grid}.copy-field label{font-weight:700}.copy-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}input,textarea{width:100%;color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:8px;font-size:.9rem;line-height:1.6}input{min-height:44px;padding:8px 12px}textarea{font-family:var(--font-mono);resize:vertical;padding:12px}.site-footer{border-top:1px solid var(--color-border)}.footer-inner{color:var(--color-text-muted);padding:24px 0}@media (width<=840px){.header-inner{grid-template-columns:1fr auto;gap:8px 12px;padding-top:8px}.brand{grid-area:1/1}.theme-toggle{grid-area:1/2;place-self:center end}.nav-links{grid-area:2/1/auto/-1;justify-content:flex-start;padding-bottom:10px;overflow-x:auto}.section{padding:52px 0}.hero{min-height:520px}.two-column,.skill-grid,.contact-grid,.work-grid,.copy-row{grid-template-columns:1fr}.image-lightbox-image{height:min(58vh,420px)}}@media (width<=520px){.container{width:min(100% - 24px, var(--container))}body{font-size:15px}h1{font-size:2.05rem}.card,.cta-panel{padding:20px}}
