:root{color-scheme:dark;--bg:#090d12;--panel:#11171e;--line:#27303a;--muted:#a6afb9;--text:#f1f4f7;--accent:#55e6cc;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--bg)}.wrap{width:min(1280px,calc(100% - 112px));margin:auto}header{height:88px;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:0 56px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;background:rgba(9,13,18,.94);backdrop-filter:blur(18px)}.logo{font-size:25px;font-weight:850;letter-spacing:-2px}.logo span{color:var(--accent);margin-left:4px}nav{display:flex;gap:32px;font-size:14px;color:#bac3cb}nav a{transition:color .2s}nav a:hover,nav a.active{color:var(--accent)}#language{border:1px solid var(--line);border-radius:5px;background:transparent;color:var(--muted);padding:7px 13px;cursor:pointer;white-space:nowrap;font:14px var(--mono)}.lang-active{color:var(--text)}.lang-divider{margin:0 10px;color:#53606d}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center;padding-top:70px;padding-bottom:72px;min-height:750px}.eyebrow,.mono{font-family:var(--mono);font-size:12px;letter-spacing:1.8px}.eyebrow{color:var(--accent);margin:0 0 30px;display:flex;align-items:center;gap:12px}.short-line{display:inline-block;width:25px;height:1px;background:var(--accent)}.hello{font-size:18px;color:var(--muted);margin:0 0 4px}h1{font-size:30px;letter-spacing:4px;margin:0;font-weight:550;line-height:1.4}h1>span{display:block;font-size:clamp(72px,7.8vw,112px);font-weight:850;letter-spacing:-6px;line-height:.96;margin-top:20px}.period{color:var(--accent)}.hero-description{color:var(--muted);font-size:17px;line-height:1.9;margin:27px 0;max-width:490px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.button{font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;padding:12px 23px;border:1px solid var(--line);border-radius:4px;transition:background .2s,border-color .2s}.primary{background:var(--accent);color:#08241f;border-color:var(--accent)}.primary:hover{background:#8ef3e1}.secondary:hover{border-color:var(--accent);background:#14201f}.hero-meta{display:flex;gap:22px;flex-wrap:wrap;margin-top:30px;color:var(--muted);font-size:12px;letter-spacing:.4px}.hero-meta>span+span{border-left:1px solid var(--line);padding-left:22px}.hero-photo{position:relative;margin:0;height:570px;background:var(--panel);border:1px solid #38464e;border-radius:4px;overflow:hidden}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:27% center;filter:saturate(.62)}.hero-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,14,20,.38),transparent 30%,rgba(7,14,20,.2) 60%,#070e14 100%);pointer-events:none}.photo-top{position:absolute;top:22px;left:22px;right:22px;z-index:2;display:flex;justify-content:space-between;gap:12px;font:12px var(--mono);letter-spacing:1.3px}.hero-photo figcaption{position:absolute;bottom:42px;left:28px;right:28px;z-index:2}.photo-caption{display:block;font-size:21px;font-weight:600;margin-bottom:10px}.hero-photo figcaption .mono{font-size:10px;color:#b1c4c9;letter-spacing:1.5px}.photo-index{position:absolute;right:20px;bottom:12px;color:var(--accent);font:12px var(--mono);z-index:2}.interest-strip{border-block:1px solid var(--line);background:#0d1218}.interest-strip .wrap{display:flex;justify-content:space-between;gap:18px;align-items:center;padding-block:23px;font:14px var(--mono);letter-spacing:3px;color:#adb7c2}.interest-strip i{font-size:18px;color:var(--accent);font-style:normal}.section{padding-block:100px}.about,.journey{display:grid;grid-template-columns:1fr 1.5fr;gap:100px}.section .eyebrow{margin-bottom:20px}h2{font-size:clamp(28px,3vw,42px);font-weight:650;letter-spacing:-1px;line-height:1.4;margin:0}h3{font-size:22px;line-height:1.5;margin:0 0 14px;font-weight:600}p{margin-top:0}.about-content>p{color:var(--muted);font-size:16px;margin-bottom:20px;line-height:1.9}.about-content .lead{color:#e4eaf0;font-size:20px;line-height:1.8}.tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}.tags span{font-size:14px;padding:5px 14px;background:#131b23;border:1px solid #293743;border-radius:3px}.work{border-block:1px solid var(--line);background:#0d1218}.section-top{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:40px}.section-note{font-size:14px;color:var(--muted);margin:0 0 5px;max-width:350px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.project{background:var(--panel);padding:25px 25px 20px;border:1px solid var(--line);border-radius:5px;display:flex;flex-direction:column;transition:border-color .2s,transform .2s}.project:hover{border-color:#4b706b;transform:translateY(-3px)}.project.featured{background:linear-gradient(150deg,#122922,#11171e 65%);border-color:#2d5148}.project-top{display:flex;align-items:start;justify-content:space-between;gap:10px}.project-top .mono{font-size:10px;letter-spacing:.4px;color:var(--muted);padding-top:4px}.category{font-size:12px;color:var(--accent);white-space:nowrap;border:1px solid #31504a;border-radius:3px;padding:2px 6px}.award-display{height:158px;display:flex;align-items:center;gap:24px}.award-number{font-size:83px;font-weight:700;line-height:1;color:var(--accent);letter-spacing:-5px}.award-number span{font-size:15px;letter-spacing:0;padding-left:5px}.award-display>div{display:flex;flex-direction:column;font-size:14px;color:var(--muted)}.award-display strong{font-size:16px;color:var(--text);font-weight:500;margin-top:9px}.project p{font-size:15px;line-height:1.85;color:var(--muted);margin-bottom:20px}.project-word{height:158px;display:flex;flex-direction:column;justify-content:center;font-family:var(--mono);font-size:35px;line-height:1.15;letter-spacing:-1px;color:#dce7ee}.project-word span{color:#637588}.project h3{font-size:21px}.project details{margin-top:auto;border-top:1px solid var(--line);padding-top:16px}.project summary{font-size:14px;cursor:pointer;color:#dce6ed;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px}.project summary::-webkit-details-marker{display:none}.project summary:after{content:'+';font:20px var(--mono);color:var(--accent)}.project details[open] summary:after{content:'−'}.project details p{font-size:14px;margin:12px 0 0}.project-tags{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px;color:#9ba9b6;font:10px var(--mono)}.journey .section-heading>p:last-child{color:var(--muted);margin-top:24px;font-size:15px}.timeline{margin:0;list-style:none;padding:0 0 0 28px;border-left:1px solid #35424e}.timeline li{position:relative;padding:0 0 38px 16px}.timeline li:last-child{padding-bottom:0}.timeline li:before{position:absolute;content:'';width:9px;height:9px;background:var(--bg);border:1px solid #697b8c;left:-33px;top:8px}.timeline li:first-child:before{background:var(--accent);border-color:var(--accent)}.timeline-label{font:12px var(--mono);color:var(--accent);letter-spacing:1.3px;display:block;margin-bottom:12px}.timeline h3{font-size:22px;margin-bottom:10px}.timeline p{color:var(--muted);font-size:16px;margin-bottom:0}.life{border-top:1px solid var(--line)}.life-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:54px}.life-photo{position:relative;margin:0;min-height:450px;border-radius:5px;overflow:hidden}.life-photo img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}.life-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 25%,rgba(5,10,15,.88))}.life-photo figcaption{position:absolute;left:30px;right:30px;bottom:24px;z-index:2}.life-photo .mono{color:#d6c3b2;font-size:11px}.life-photo h3{font-size:24px;margin:12px 0}.life-photo p{font-size:14px;color:#d1c8bf;margin:0}.life-notes{display:flex;flex-direction:column;justify-content:space-between}.life-notes article{display:flex;gap:22px;padding:22px 0;border-bottom:1px solid var(--line)}.life-notes article:first-child{padding-top:3px}.life-notes article:last-child{border:0;padding-bottom:0}.note-number{color:var(--accent);font:12px var(--mono);padding-top:8px}.life-notes h3{font-size:21px;margin-bottom:12px}.life-notes p{font-size:15px;color:var(--muted);margin:0;line-height:1.9}.closing{padding-block:78px;text-align:center;border-top:1px solid var(--line)}.closing .eyebrow{justify-content:center;margin-bottom:22px}.closing h2{font-size:clamp(30px,4.2vw,58px);line-height:1.45;margin-bottom:27px}.closing h2 span{color:var(--accent)}footer{display:flex;justify-content:space-between;align-items:center;gap:25px;padding-block:27px;border-top:1px solid var(--line)}footer p{font-size:13px;color:var(--muted);margin:0}footer .mono{font-size:10px;color:#8e9ca9}.skip{position:absolute;top:-100px;left:20px;z-index:40;background:var(--accent);color:#090d12;padding:10px 15px}.skip:focus{top:10px}html[lang=en] h1{font-size:26px}html[lang=en] h1>span{font-size:clamp(72px,7.8vw,112px)}html[lang=en] .photo-caption{font-size:20px}@media(min-width:1600px){.hero{gap:100px}.hero-photo{height:620px}.hero{min-height:830px}}@media(max-width:1100px){.wrap{width:calc(100% - 64px)}header{padding-inline:32px}nav{gap:20px}.hero{gap:34px;min-height:700px}.hero-photo{height:520px}h1>span{font-size:84px}.about,.journey{gap:45px}.project-grid{grid-template-columns:1fr 1fr}.project.featured{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0 35px}.featured .project-top{grid-column:1/-1}.featured .award-display{grid-row:2/5}.featured h3{margin-top:30px}.featured .project-tags{grid-column:2}.life-grid{gap:30px}.section{padding-block:75px}}@media(max-width:720px){.wrap{width:calc(100% - 40px)}header{height:auto;min-height:76px;padding:14px 20px;gap:15px;flex-wrap:wrap}.logo{font-size:23px}nav{order:3;width:100%;justify-content:space-between;gap:12px;font-size:12px;border-top:1px solid var(--line);padding-top:10px;overflow-x:auto;white-space:nowrap}#language{margin-left:auto}.hero{grid-template-columns:1fr;padding-top:42px;padding-bottom:40px;gap:35px;min-height:0}.hero .eyebrow{margin-bottom:24px;font-size:10px}.hero h1>span,html[lang=en] h1>span{font-size:clamp(67px,19vw,110px);letter-spacing:-4px}.hero h1{font-size:26px}.hero-description{font-size:16px}.hero-meta{font-size:11px;gap:14px}.hero-meta>span+span{padding-left:14px}.hero-photo{height:450px}.hero-photo img{object-position:30% center}.interest-strip .wrap{font-size:10px;letter-spacing:1px;padding-block:18px;gap:10px}.interest-strip i{font-size:14px}.section{padding-block:58px}.about,.journey{grid-template-columns:1fr;gap:30px}.about h2 br,.journey h2 br{display:none}.about-content .lead{font-size:18px}.section-top{display:block;margin-bottom:28px}.section-note{margin-top:17px;font-size:14px}.project-grid{grid-template-columns:1fr}.project.featured{display:flex;grid-column:auto;gap:0}.featured h3{margin-top:0}.award-display{height:145px}.project-word{height:138px}.life-grid{grid-template-columns:1fr;gap:34px}.life-photo{min-height:400px}.life-notes article{padding-block:25px}.life-photo figcaption{left:23px;right:23px}.life-photo h3{font-size:23px}.closing{padding-block:55px}.closing .eyebrow{font-size:10px;letter-spacing:1px}footer{flex-wrap:wrap;gap:18px}footer>.mono{width:100%;text-align:center;font-size:10px}.photo-top{font-size:10px}.photo-caption{font-size:19px}.timeline{margin-left:5px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

/* Frank's personal profile */
.hero h1>span.frank-name,html[lang=en] .hero h1>span.frank-name{font-size:clamp(62px,7.5vw,108px);letter-spacing:-5px;line-height:1.08;margin-top:12px;white-space:nowrap}.real-name{font-size:18px;color:#b7c4cf;margin:20px 0 0;letter-spacing:1px}.hero-description{margin-top:23px}.profile-facts{display:grid;grid-template-columns:1fr 1fr;gap:30px 36px;margin:0}.profile-facts>div{padding-bottom:20px;border-bottom:1px solid var(--line)}.profile-facts dt{font:12px var(--mono);letter-spacing:1.5px;color:var(--muted);margin-bottom:10px}.profile-facts dd{margin:0;font-size:19px;line-height:1.65}.about{border-top:1px solid var(--line)}.life-empty{min-height:220px}.project-tags{margin-top:auto;padding-top:20px}.work{border-bottom:0}footer{margin-top:0}@media(max-width:720px){.hero h1>span.frank-name,html[lang=en] .hero h1>span.frank-name{font-size:clamp(53px,15.8vw,100px);letter-spacing:-3px}.profile-facts{gap:24px}.profile-facts dd{font-size:16px}.real-name{font-size:16px}.life-empty{min-height:150px}}@media(max-width:390px){.profile-facts{grid-template-columns:1fr}}

.awards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.award-card{padding:30px}.prize-rank{font-size:76px;line-height:1.2;letter-spacing:-4px;color:var(--accent);font-weight:650;margin:35px 0 25px}.prize-rank span{font:12px var(--mono);letter-spacing:1px;color:var(--muted);margin-left:14px}.award-card h3{font-size:25px}.award-card p{margin-bottom:20px}.award-event{border-top:1px solid var(--line);padding-top:18px;margin-top:auto;font-size:14px;color:var(--muted)}@media(max-width:720px){.awards-grid{grid-template-columns:1fr}.award-card{padding:25px}.prize-rank{font-size:68px}}

/* Photo album */
.carousel{isolation:isolate}.carousel-track{display:flex;height:100%;transition:transform .65s cubic-bezier(.2,.7,.25,1);touch-action:pan-y}.carousel-slide{flex:0 0 100%;height:100%;min-width:0}.carousel-slide img{display:block;user-select:none}.carousel:after{z-index:1;pointer-events:none}.carousel-description{position:absolute;left:28px;right:28px;bottom:88px;z-index:2;pointer-events:none}.carousel-description .photo-caption{margin-bottom:5px}.photo-count{color:#c6d0d7;font-size:12px}.carousel-controls{display:flex;align-items:center;gap:10px;position:absolute;left:20px;right:20px;bottom:20px;z-index:3}.carousel-controls[hidden]{display:none}.carousel-controls button{min-height:40px;border:1px solid #74838c;background:#091017dc;color:#f1f4f7;border-radius:4px;font-size:12px;padding:7px 10px;cursor:pointer;white-space:nowrap}.carousel-controls button:hover{background:#263d3e;border-color:var(--accent)}.carousel-dots{display:flex;gap:0;margin-right:auto}.carousel-controls .carousel-dot{padding:0;border:0;background:transparent;min-width:30px;width:30px;min-height:40px;position:relative}.carousel-dot:before{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:#88979f;left:12px;top:17px}.carousel-dot[aria-pressed=true]:before{background:var(--accent);width:16px;border-radius:3px;left:7px}.carousel-toggle{margin-left:3px}@media(max-width:390px){.carousel-controls{left:12px;right:12px;gap:5px}.carousel-controls button{padding-inline:7px}.carousel-controls .carousel-dot{min-width:24px;width:24px}.carousel-dot:before{left:9px}.carousel-dot[aria-pressed=true]:before{left:4px}.carousel-description{left:20px;right:20px}}
/* Keep albums with many photos usable on narrow screens. */
.carousel-dots{min-width:0;flex:1;overflow-x:auto;scrollbar-width:thin}.carousel-controls .carousel-dot{flex-shrink:0}

/* Upcoming plans */
.plans{border-top:1px solid var(--line)}.plans-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;min-height:160px}.plan-card{min-width:0;padding:28px;border:1px solid var(--line);border-radius:5px;background:var(--panel);overflow-wrap:anywhere}.plan-top{display:flex;justify-content:space-between;gap:16px;margin-bottom:22px;font-size:14px;color:var(--accent)}.plan-card h3{font-size:24px;margin-bottom:20px}.plan-code{font:16px var(--mono);color:var(--muted)}.plan-route{display:grid;grid-template-columns:1fr 1fr;gap:20px}.plan-stop{min-width:0}.plan-stop small{display:block;font-size:14px;color:var(--muted);margin-bottom:6px}.plan-stop strong{display:block;font-size:20px;font-weight:550}.plan-time{display:block;color:var(--muted);font-size:14px;margin-top:6px}.plan-zone{display:block;font-size:12px;color:var(--muted)}.plan-notes{white-space:pre-wrap;font-size:16px;color:var(--muted);border-top:1px solid var(--line);padding-top:18px;margin:20px 0 0}.plan-location{font-size:16px;color:var(--muted);margin-bottom:12px}@media(max-width:720px){.plans-grid{grid-template-columns:1fr;min-height:120px}.plan-card{padding:22px}.plan-route{gap:16px}}
