:root{--bg: #0b1020;--surface: rgba(255, 255, 255, .06);--surface2: rgba(255, 255, 255, .1);--text: #e9ecf1;--muted: rgba(233, 236, 241, .72);--border: rgba(255, 255, 255, .12);--paper: #fbf6ea;--paper2: #f2ead6;--cover: #241c17;--cover2: #16110e;--ink: #14151a;--primary: #7c5cff;--primary2: #5eead4;--shadow: 0 18px 60px rgba(0, 0, 0, .35);--radius: 16px;--radiusSm: 12px;--container: 1040px}html[data-theme=light]{--bg: #f6f7fb;--surface: rgba(12, 18, 36, .06);--surface2: rgba(12, 18, 36, .1);--text: #0c1224;--muted: rgba(12, 18, 36, .72);--border: rgba(12, 18, 36, .12);--paper: #fffaf0;--paper2: #f3ecd9;--cover: #241c17;--cover2: #16110e;--ink: #14151a;--primary: #5b4bff;--primary2: #0ea5e9;--shadow: 0 18px 60px rgba(12, 18, 36, .15)}html[data-theme=dark]{--paper: #f6efdb;--paper2: #e9dec1;--ink: #14151a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";color:var(--text);background:radial-gradient(900px 560px at 50% 0%,rgba(0,0,0,.14),transparent 60%),linear-gradient(180deg,color-mix(in srgb,var(--bg) 86%,#d7cbb0),var(--bg))}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.container{width:min(var(--container),calc(100% - 40px));margin:0 auto;flex:1;display:flex;align-items:center;justify-content:center}.header{position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb,var(--bg) 72%,transparent);border-bottom:1px solid var(--border)}.headerInner{width:min(var(--container),calc(100% - 40px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;min-height:64px;gap:16px}.brand{font-weight:700;letter-spacing:-.02em}.menuBtn{display:none;background:transparent;border:1px solid var(--border);padding:8px 12px;border-radius:999px}.nav{display:flex;align-items:center;gap:14px}.navLink{color:var(--muted);padding:8px 10px;border-radius:999px}.navLink:hover{background:var(--surface);color:var(--text)}.navActions{display:flex;align-items:center;gap:10px;margin-left:8px}.iconLink{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;border:1px solid var(--border);background:var(--surface)}.iconLink:hover{background:var(--surface2)}.section{padding:30px 0}.sectionHead{display:grid;gap:8px;margin-bottom:16px}.sectionTitle{margin:0;font-size:26px;letter-spacing:-.02em}.sectionSubtitle{margin:0;color:var(--muted);max-width:70ch}.twoCol{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}.pageGrid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start}.prose p{margin:0 0 12px;color:var(--muted);line-height:1.7}.grid{display:grid;gap:14px;grid-template-columns:repeat(12,1fr)}.grid>*{grid-column:span 6}.projectsGrid>*{grid-column:span 6}.contactGrid>*{grid-column:span 6}.stack{display:grid;gap:14px}.card{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.cardTitle{margin:0;font-size:16px;letter-spacing:-.01em}.muted{margin:8px 0 0;color:var(--muted);line-height:1.6}.list{margin:12px 0 0;padding-left:18px;color:var(--muted);line-height:1.7}.tagWrap{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.tag{border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 60%,transparent);color:var(--text);padding:6px 10px;border-radius:999px;font-size:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);background:var(--surface);padding:10px 14px;border-radius:999px;cursor:pointer}.btn:hover{background:var(--surface2)}.btn.primary{background:linear-gradient(135deg,var(--primary),var(--primary2));border-color:transparent;color:#0b1020;font-weight:700}html[data-theme=light] .btn.primary{color:#fff}.btn.small{padding:8px 12px;font-size:13px}.badge{display:inline-flex;align-items:center;padding:8px 12px;border:1px dashed var(--border);border-radius:999px;color:var(--muted);font-size:13px}.cardActions{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}.projectTop{display:grid;gap:8px}.expHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.expMeta{color:var(--muted);font-size:13px;padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface) 60%,transparent);white-space:nowrap}.contactActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.kv{margin-top:12px;display:grid;gap:10px}.kvRow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radiusSm);background:color-mix(in srgb,var(--surface) 65%,transparent)}.kvKey{color:var(--muted);font-size:13px}.kvVal{color:var(--text);font-weight:600;text-align:right}.link{border-bottom:1px solid transparent}.link:hover{border-bottom-color:var(--border)}.footer{border-top:1px solid var(--border);padding:22px 0;background:color-mix(in srgb,var(--bg) 85%,transparent)}.footerInner{width:min(var(--container),calc(100% - 40px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.footerLinks{display:flex;gap:12px;flex-wrap:wrap}@media (max-width: 980px){.twoCol,.pageGrid{grid-template-columns:1fr}}@media (max-width: 860px){.menuBtn{display:inline-flex}.nav{position:absolute;left:0;right:0;top:64px;display:none;flex-direction:column;gap:10px;padding:12px 20px 18px;background:color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:1px solid var(--border)}.nav.open{display:flex}.navActions{margin-left:0;width:100%;justify-content:flex-start;flex-wrap:wrap}.grid>*,.projectsGrid>*,.contactGrid>*{grid-column:span 12}}.bookWrap{width:100%;padding:34px 0 44px;display:grid;place-items:center}.bookScale{position:relative;width:calc(980px * var(--bookScale, 1));height:calc(612.5px * var(--bookScale, 1))}.bookShell{position:absolute;top:0;left:0;width:980px;height:612.5px;perspective:1800px;filter:drop-shadow(0 38px 80px rgba(0,0,0,.28));cursor:pointer;--dragProgress: 0;transform:scale(var(--bookScale, 1));transform-origin:top left}.bookShell.open{cursor:grab}.bookShell.dragging,.bookShell.open:active{cursor:grabbing}.bookShell:before{content:"";position:absolute;left:-16px;top:10px;bottom:10px;width:34px;border-radius:calc(var(--radius) + 6px);background:radial-gradient(40px 160px at 70% 30%,rgba(255,255,255,.12),transparent 65%),linear-gradient(180deg,rgba(255,255,255,.06),transparent 40%),linear-gradient(135deg,var(--cover),var(--cover2));box-shadow:0 18px 50px #00000038,inset -10px 0 18px #00000080;pointer-events:none}.bookShell:after{content:"";position:absolute;right:-14px;top:12px;bottom:12px;width:18px;border-radius:calc(var(--radius) + 4px);background:repeating-linear-gradient(180deg,#0000000d 0,#0000000d 2px,#00000005 2px,#00000005 6px,#ffffff0d 6px,#ffffff0d 8px),linear-gradient(90deg,#0000002e,#ffffff2e);box-shadow:0 12px 40px #0000002e,inset 1px 0 #ffffff47;pointer-events:none}.book{position:relative;width:100%;height:100%;transform-style:preserve-3d}.book:before,.book:after{content:"";position:absolute;top:0;bottom:0;width:50%;opacity:0;transition:opacity .16s ease;pointer-events:none}.book:before{left:0;border-radius:var(--radius) 0 0 var(--radius);background:linear-gradient(90deg,rgba(20,21,26,.12),transparent)}.book:after{right:0;border-radius:0 var(--radius) var(--radius) 0;background:linear-gradient(270deg,rgba(20,21,26,.12),transparent)}.bookShell.open:hover .book:before,.bookShell.open:hover .book:after{opacity:1}.page{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transform-origin:left center;transition:transform 1.2s cubic-bezier(.2,.8,.2,1);border-radius:var(--radius)}.page.flipped{transform:rotateY(-180deg)}.bookShell.draggingNext .page.active{transition:transform .26s cubic-bezier(.2,.8,.2,1);transform:rotateY(calc(-180deg * var(--dragProgress)))}.bookShell.draggingPrev .page.prevSheet{transition:transform .26s cubic-bezier(.2,.8,.2,1);transform:rotateY(calc(-180deg + (180deg * var(--dragProgress))))}.pageFace{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid color-mix(in srgb,var(--paper) 82%,#000);border-radius:var(--radius);overflow:hidden;color:var(--ink);box-shadow:0 26px 70px #0000002e,inset 0 0 0 1px #ffffff59,inset -22px 0 26px #00000014;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.012) 0 1px,transparent 1px 7px),radial-gradient(420px 260px at 30% 20%,rgba(255,255,255,.55),transparent 70%),linear-gradient(135deg,var(--paper),var(--paper2))}.pageFace.back{transform:rotateY(180deg);border-color:color-mix(in srgb,var(--paper2) 80%,#000);background-color:var(--paper2);background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.014) 0 1px,transparent 1px 7px),radial-gradient(420px 260px at 30% 20%,rgba(255,255,255,.45),transparent 70%),linear-gradient(135deg,var(--paper2),color-mix(in srgb,var(--paper2) 86%,#ffffff))}.pageFace.front{transform:none}.pageInner{height:100%;padding:18px;display:grid;grid-template-rows:1fr;gap:14px}.pageFace .muted{color:#14151ab8}.pageFace .prose p{color:#14151ac7}.pageFace .list,.pageFace .pageCount{color:#14151ab8}.pageFace .badge{color:#14151aa8;border-color:#14151a38}.pageFace .kvVal{color:#14151aeb}.pageFace .card{background:#ffffff94;border-color:#14151a24;box-shadow:none}.pageFace .tag{background:#14151a0a;border-color:#14151a29;color:#14151adb}.pageFace .btn:not(.primary){background:#ffffff8c;border-color:#14151a2e}.pageFace .btn:not(.primary):hover{background:#ffffffbf}.pageFace .btn.primary{background:#14151a14;border-color:#14151a38;color:#14151aeb;font-weight:700}.pageFace .btn.primary:hover{background:#14151a1f}html[data-theme=light] .pageFace .btn.primary{color:#14151aeb}.pageFace .kvKey{color:#14151aa8}.cover{transform-origin:left center}.cover .pageFace.front{border-color:color-mix(in srgb,var(--cover) 75%,#000);color:#f6f1e6;box-shadow:0 30px 86px #00000042,inset 0 1px #ffffff14,inset -28px 0 34px #0000006b;background-color:var(--cover);background-image:radial-gradient(520px 260px at 30% 20%,rgba(255,255,255,.12),transparent 70%),repeating-linear-gradient(45deg,#ffffff09 0,#ffffff09 2px,#00000005 2px,#00000005 4px),linear-gradient(135deg,var(--cover),var(--cover2))}.coverContent{height:100%;display:grid;align-content:center;gap:12px;padding:10px}.coverEyebrow{margin:0;color:#f6f1e6b8;letter-spacing:.08em;text-transform:uppercase;font-size:12px}.coverTitle{margin:0;font-size:clamp(40px,6vw,64px);letter-spacing:-.04em;line-height:1.02}.coverSubtitle{margin:0;color:#f6f1e6bd;max-width:64ch;font-size:18px;line-height:1.6}.coverActions{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}.coverMeta{margin-top:10px;color:#f6f1e6b8}.cover .btn{background:#ffffff14;border-color:#ffffff38;color:#f6f1e6eb}.cover .btn:hover{background:#ffffff1f}.cover .btn.primary{background:#f6f1e6eb;border-color:#f6f1e62e;color:#14151aeb;font-weight:700}html[data-theme=light] .cover .btn.primary{color:#14151aeb}.pageTop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.pageTitle{margin:0;font-size:24px;letter-spacing:-.02em}.pageNav{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.pageContent{min-height:0;overflow:auto;padding-right:4px}.pageContent::-webkit-scrollbar{width:10px}.pageContent::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--border) 70%,transparent);border-radius:999px}.pageBottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.pageDots{display:flex;gap:8px;flex-wrap:wrap}.dot{width:10px;height:10px;border-radius:999px;border:1px solid var(--border);background:transparent;cursor:pointer;padding:0}.dot.active{background:#14151aa6;border-color:#14151a33}.pageCount{color:var(--muted);font-size:13px}.endPage{display:grid;place-items:center;height:100%;text-align:center;padding:18px}.endTitle{margin:0;font-size:28px;letter-spacing:-.02em}@media (max-width: 860px){.container{align-items:flex-start}.bookWrap{padding:18px 0 28px}}
