.page{position:relative;z-index:1}.shell{max-width:1180px;margin:0 auto;padding:0 6vw;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.18fr);gap:4vw}.rail{position:sticky;top:0;height:100vh;max-height:100vh;display:flex;flex-direction:column;padding:clamp(56px,9vh,104px) 0 40px}.rail-top{flex:0 0 auto}.brand-name{font-size:clamp(34px,4vw,52px);letter-spacing:-.025em;line-height:1.02}.brand-role{margin-top:14px;font-size:clamp(15px,1.5vw,18px);font-weight:600;color:var(--ink)}.brand-tag{margin-top:16px;max-width:34ch;color:var(--ink-soft);font-size:14.5px;line-height:1.65}.brand-loc{margin-top:18px;font-size:12.5px;color:var(--ink-mute);display:flex;align-items:center;gap:8px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--olive);box-shadow:0 0 0 3px #6e743f2e}.nav{margin-top:clamp(30px,5vh,52px);display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:14px;padding:7px 0;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);font-weight:600;transition:color .18s}.nav .bar{width:26px;height:1.5px;background:var(--line);transition:width .22s,background .22s}.nav a:hover{color:var(--ink)}.nav a:hover .bar{background:var(--ink-soft)}.nav a.active{color:var(--accent-ink)}.nav a.active .bar{width:50px;background:var(--accent)}.rail-foot{margin-top:auto;padding-top:30px}.socials{display:flex;gap:18px;align-items:center}.socials a{color:var(--ink-mute);transition:color .18s,transform .18s;display:inline-flex}.socials a:hover{color:var(--accent-ink);transform:translateY(-2px)}.socials svg{width:21px;height:21px;display:block}.content{padding:clamp(56px,9vh,104px) 0 12vh;min-width:0}section.block{margin-bottom:clamp(56px,9vh,96px);scroll-margin-top:80px}section.block:last-child{margin-bottom:0}.block-head{margin-bottom:26px}.block-head h2{margin-top:12px;font-size:clamp(22px,2.4vw,27px)}.lede p{color:var(--ink-soft);font-size:16px;line-height:1.72;margin:0 0 16px;max-width:60ch}.lede p:last-child{margin-bottom:0}.lede strong{color:var(--ink);font-weight:600}.xp{display:flex;flex-direction:column}.xp-item{display:grid;grid-template-columns:130px 1fr;gap:22px;padding:22px;margin:0 -22px;border-radius:12px;border:1px solid transparent;transition:background .2s,border-color .2s,transform .2s}.xp-item:hover{background:var(--surface);border-color:var(--line);transform:translateY(-1px)}.xp-when{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);padding-top:4px;line-height:1.5}.xp-role{font-size:16px;font-weight:700}.xp-co{color:var(--accent-ink)}.xp-place{font-size:12.5px;color:var(--ink-mute);margin-top:3px}.xp-desc{color:var(--ink-soft);font-size:14px;line-height:1.62;margin:12px 0 0}.xp-stack{margin-top:14px;display:flex;flex-wrap:wrap;gap:7px}@media(max-width:540px){.xp-item{grid-template-columns:1fr;gap:8px}}.proj-grid{display:grid;gap:16px}.proj{position:relative;padding:22px;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:border-color .2s,transform .2s,box-shadow .2s}.proj:hover{border-color:var(--accent-line);transform:translateY(-3px);box-shadow:0 14px 30px -18px #3c281459}.proj-top{display:flex;align-items:center;justify-content:space-between;gap:14px}.proj-ico{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-ink);flex:0 0 auto}.proj-ico svg{width:19px;height:19px}.proj-h{font-size:16px;font-weight:700;margin-top:16px}.proj-p{color:var(--ink-soft);font-size:13.5px;line-height:1.6;margin:9px 0 0}.proj-stack{margin-top:14px;display:flex;flex-wrap:wrap;gap:7px}.proj-metric{font-size:12px;color:var(--olive);font-weight:600;letter-spacing:.02em}.skills{display:grid;gap:18px}.skill-row{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:start}.skill-cat{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);font-weight:600;padding-top:7px}.skill-tags{display:flex;flex-wrap:wrap;gap:7px}@media(max-width:540px){.skill-row{grid-template-columns:1fr;gap:8px}}.notes-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}.notes-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--bg-2);border-bottom:1px solid var(--line)}.notes-bar-left{display:flex;align-items:center;gap:12px}.notes-bar .dots{display:flex;gap:7px}.notes-bar .dots i{width:11px;height:11px;border-radius:50%;display:block}.notes-bar .dots i:nth-child(1){background:#d98a6a}.notes-bar .dots i:nth-child(2){background:#e0c07a}.notes-bar .dots i:nth-child(3){background:#9fae74}.notes-path{font-size:12.5px;color:var(--ink-mute)}.notes-count{font-size:12px;color:var(--ink-mute)}.notes-inner{padding:clamp(22px,3vw,36px) clamp(22px,3vw,36px)}.notes-head{margin-bottom:24px}.notes-head h2{margin-top:12px;font-size:clamp(22px,2.4vw,27px)}.notes-list{display:flex;flex-direction:column}.notes-entry{display:grid;grid-template-columns:130px 1fr auto;align-items:start;gap:20px;padding:20px 0;border-top:1px solid var(--line);transition:background .16s;text-decoration:none;color:inherit}.notes-entry:first-child{border-top:none;padding-top:0}.notes-date{font-size:12px;color:var(--ink-mute);letter-spacing:.03em;padding-top:3px;white-space:nowrap}.notes-title{font-size:15px;font-weight:600;line-height:1.5;transition:color .16s}.notes-entry:hover .notes-title{color:var(--accent-ink)}.notes-arrow{color:var(--ink-mute);flex-shrink:0;padding-top:2px;transition:transform .18s,color .18s}.notes-entry:hover .notes-arrow{transform:translate(3px,-3px);color:var(--accent)}.notes-foot{margin-top:22px;border-top:1px solid var(--line);padding-top:20px}@media(max-width:560px){.notes-entry{grid-template-columns:1fr auto}.notes-date{grid-column:1 / -1;padding-top:0}}.hobbies{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.hobby{padding:18px;border:1px solid var(--line);border-radius:12px;background:var(--surface);transition:border-color .2s,transform .2s}.hobby:hover{border-color:var(--accent-line);transform:translateY(-2px)}.hobby-h{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px}.hobby-h svg{width:18px;height:18px;color:var(--accent-ink)}.hobby-p{color:var(--ink-soft);font-size:13px;line-height:1.58;margin:10px 0 0}.hobby-p .mut{color:var(--ink-mute)}@media(max-width:560px){.hobbies{grid-template-columns:1fr}}.contact-card{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:clamp(26px,4vw,40px);text-align:left}.contact-card h2{font-size:clamp(24px,3vw,32px)}.contact-card p{color:var(--ink-soft);font-size:15px;max-width:48ch;margin:14px 0 24px;line-height:1.65}.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:14px;font-weight:600;padding:12px 20px;border-radius:10px;background:var(--accent);color:#fff8f2;border:1px solid var(--accent);transition:transform .16s,box-shadow .16s,filter .16s}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px -12px var(--accent-line);filter:saturate(1.08)}.btn.ghost{background:transparent;color:var(--accent-ink)}.btn.ghost:hover{background:var(--accent-soft)}.btn-row{display:flex;flex-wrap:wrap;gap:12px}.foot{margin-top:clamp(40px,7vh,72px);padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--ink-mute)}html.layout-centered .shell{display:block;max-width:var(--maxw);padding:0 24px}html.layout-centered .rail{position:static;height:auto;max-height:none;padding:clamp(60px,11vh,120px) 0 0;text-align:left}html.layout-centered .nav{display:none}html.layout-centered .brand-tag{max-width:56ch}html.layout-centered .rail-foot{margin-top:26px;padding-top:0}html.layout-centered .content{padding-top:clamp(40px,7vh,72px)}html.layout-centered .hobbies{grid-template-columns:repeat(2,1fr)}@media(max-width:900px){.shell{grid-template-columns:1fr;gap:0;padding:0 26px}.rail{position:static;height:auto;max-height:none;padding:clamp(48px,8vh,80px) 0 0}.nav{display:none}.content{padding-top:clamp(40px,6vh,64px)}}.tbar{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:16px 6vw 0;display:flex;align-items:center;gap:14px}.tbar .dots{display:flex;gap:7px}.tbar .dots i{width:11px;height:11px;border-radius:50%;display:block}.tbar .dots i:nth-child(1){background:#d98a6a}.tbar .dots i:nth-child(2){background:#e0c07a}.tbar .dots i:nth-child(3){background:#9fae74}.tbar .path{font-size:12.5px;color:var(--ink-mute)}@media(max-width:900px){.tbar{padding:16px 26px 0}}
