:root{--canvas: #f5f5f5;--ui: #ffffff;--ink: #1e1e1e;--ink-2: #444444;--muted: #8c8c8c;--line: #e6e6e6;--line-2: #d9d9d9;--hover: #f2f2f2;--blue: #0d99ff;--blue-soft: #e5f4ff;--red: #f24822;--top: 48px;--ruler: 20px;--left: 240px;--right: 264px;--ui-font: "Inter", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--ease: cubic-bezier(.16, 1, .3, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--canvas);color:var(--ink);font-family:var(--ui-font);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background-color:var(--canvas);background-image:radial-gradient(#d2d2d2 1px,transparent 1px);background-size:22px 22px;background-attachment:fixed;overflow-x:hidden}::selection{background:var(--blue);color:#fff}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.mono{font-family:var(--mono);font-size:11px;letter-spacing:.02em}.dim{color:var(--muted)}#loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--ui);display:grid;place-content:center;gap:18px}.loader__file{display:flex;align-items:center;gap:14px}.loader__file svg{width:44px;stroke-width:4}.loader__file strong{display:block;font-size:14px;font-weight:600}.loader__file span{font-size:12px;color:var(--muted)}.loader__bar{width:240px;height:3px;border-radius:3px;background:var(--line);overflow:hidden}.loader__bar i{display:block;height:100%;background:var(--blue);transform-origin:left;transform:scaleX(0)}.topbar{position:fixed;top:0;left:0;right:0;height:var(--top);z-index:60;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 8px;background:var(--ui);border-bottom:1px solid var(--line);font-size:13px}.topbar__left,.topbar__right{display:flex;align-items:center;gap:4px}.topbar__right{justify-content:flex-end;gap:10px;padding-right:6px}.tb-logo{width:40px;height:32px;display:grid;place-items:center;border-radius:6px}.tb-logo:hover{background:var(--hover)}.tb-logo svg{width:26px;stroke-width:4.5}.tools{display:flex;gap:2px;margin-left:6px}.tool{width:32px;height:32px;display:grid;place-items:center;border-radius:6px;color:var(--ink-2)}.tool svg{width:17px;height:17px}.tool:hover{background:var(--hover)}.tool.active{background:var(--blue);color:#fff}.topbar__center{display:flex;align-items:center;gap:8px}.topbar__center strong{font-weight:600}.chev{width:14px;color:var(--muted)}.avatars{display:flex}.av{min-width:26px;height:26px;padding:0 7px;border-radius:13px;display:grid;place-items:center;font-size:11px;font-weight:600;background:var(--muted);color:#fff;border:2px solid var(--ui);margin-left:-6px}.av--me{background:var(--ink);margin-left:0}.av--you{background:var(--hover);color:var(--ink-2)}.tb-btn{width:32px;height:32px;border-radius:6px;display:grid;place-items:center}.tb-btn:hover{background:var(--hover)}.tb-btn svg{width:15px;fill:currentColor}.tb-share{background:var(--blue);color:#fff;font-weight:500;font-size:12px;padding:7px 14px;border-radius:6px}.tb-share:hover{background:#0a87e0}.zoom{font-size:12px;color:var(--ink-2);min-width:110px;text-align:right;font-variant-numeric:tabular-nums}.panel{position:fixed;top:var(--top);bottom:0;z-index:50;background:var(--ui);font-size:12px;display:flex;flex-direction:column;overflow:hidden}.panel--left{left:0;width:var(--left);border-right:1px solid var(--line)}.panel--right{right:0;width:var(--right);border-left:1px solid var(--line)}.panel__tabs{display:flex;gap:4px;padding:8px 8px 0;border-bottom:1px solid var(--line)}.panel__tabs button{font-size:12px;font-weight:500;padding:8px 8px 10px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.panel__tabs button.active{color:var(--ink);border-color:var(--ink)}.panel__section{padding:12px 8px;border-bottom:1px solid var(--line)}.panel__section--grow{flex:1;overflow:auto;border:0}.panel__section h4{font-size:11px;font-weight:600;padding:0 8px 8px}.pages li{display:flex;align-items:center;gap:6px;padding:6px 8px 6px 24px;border-radius:5px;color:var(--ink-2)}.pages li svg{width:12px;margin-left:-18px}.pages li.active{font-weight:600;color:var(--ink)}.pages li:hover{background:var(--hover)}.layers ul{display:none}.lyr--frame.open>ul{display:block}.lyr__row{display:flex;align-items:center;gap:7px;height:28px;padding:0 8px;border-radius:5px;cursor:default;white-space:nowrap;overflow:hidden;color:var(--ink-2)}.lyr__row span{overflow:hidden;text-overflow:ellipsis}.lyr__row svg{width:13px;flex:none;color:var(--muted)}.lyr__row[data-depth="0"]{font-weight:600;color:var(--ink)}.lyr__row[data-depth="1"]{padding-left:26px}.lyr__row[data-depth="2"]{padding-left:44px}.lyr__row:hover{outline:1px solid var(--blue);outline-offset:-1px}.lyr__row.selected{background:var(--blue-soft);color:var(--ink)}.lyr__row.selected svg{color:var(--blue)}#inspector{overflow:auto;flex:1}.insp__head{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}.insp__head svg{width:14px;color:var(--blue);flex:none}.insp__head strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insp__head .dim{margin-left:auto;flex:none}.insp__sec{padding:12px 16px 14px;border-bottom:1px solid var(--line);display:grid;gap:8px}.insp__sec h5{font-size:11px;font-weight:600}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.num{display:flex;align-items:center;gap:6px;height:28px;padding:0 8px;border-radius:5px;background:var(--hover);border:1px solid transparent}.num:hover{border-color:var(--line-2)}.num span{color:var(--muted);min-width:14px;font-size:11px}.num input{all:unset;width:100%;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink)}.field{height:28px;padding:0 8px;display:flex;align-items:center;border-radius:5px;background:var(--hover)}.swatch{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:5px;background:var(--hover);font-variant-numeric:tabular-nums}.swatch i{width:14px;height:14px;border-radius:3px;box-shadow:inset 0 0 0 1px #0000001f}.swatch .dim{margin-left:auto}.insp__note{color:var(--muted)}.export{display:block;text-align:center;padding:7px;border-radius:6px;border:1px solid var(--line-2);font-weight:500}.export:hover{background:var(--hover)}.code{font-family:var(--mono);font-size:11px;line-height:1.75;background:var(--hover);border-radius:6px;padding:10px 12px;white-space:pre-wrap;color:var(--ink-2)}.code .k{color:var(--blue)}.ruler{position:fixed;z-index:45;background:var(--ui)}.ruler--x{top:var(--top);left:calc(var(--left) + var(--ruler));height:var(--ruler);width:calc(100vw - var(--left) - var(--right) - var(--ruler));border-bottom:1px solid var(--line)}.ruler--y{top:calc(var(--top) + var(--ruler));left:var(--left);width:var(--ruler);height:calc(100vh - var(--top) - var(--ruler));border-right:1px solid var(--line)}.ruler-corner{position:fixed;z-index:46;top:var(--top);left:var(--left);width:var(--ruler);height:var(--ruler);background:var(--ui);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.viewport{position:fixed;top:calc(var(--top) + var(--ruler));left:calc(var(--left) + var(--ruler));right:var(--right);bottom:0;pointer-events:none}#gl{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:20;pointer-events:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none;clip-path:inset(calc(var(--top) + var(--ruler)) var(--right) 0 calc(var(--left) + var(--ruler)))}.canvas{position:relative;z-index:10;padding:calc(var(--top) + var(--ruler) + 64px) calc(var(--right) + 56px) 120px calc(var(--left) + var(--ruler) + 56px);display:grid;gap:120px;justify-items:center}.frame{width:100%;max-width:1160px}.frame__label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);padding:0 2px 8px}.frame__label span:first-child{color:var(--ink-2);font-weight:500}.frame__size{font-family:var(--mono);font-size:11px}.frame__body{background:var(--ui);border-radius:2px;box-shadow:0 0 0 1px #0000000f,0 1px 3px #0000000a;padding:clamp(28px,5vw,72px)}.sel{position:absolute;left:0;top:0;border:1px solid var(--blue);opacity:0}.sel.on{opacity:1}.sel--hover{border-width:1.5px}.sel__name{position:absolute;bottom:100%;left:-1px;margin-bottom:3px;font-size:11px;color:var(--blue);white-space:nowrap}.sel .h{position:absolute;width:8px;height:8px;background:#fff;border:1px solid var(--blue);margin:-4.5px 0 0 -4.5px}.h.tl{left:0;top:0}.h.tr{left:100%;top:0}.h.bl{left:0;top:100%}.h.br{left:100%;top:100%}.h.tm{left:50%;top:0}.h.bm{left:50%;top:100%}.h.ml{left:0;top:50%}.h.mr{left:100%;top:50%}.sel__size{position:absolute;top:100%;left:50%;transform:translate(-50%,8px);background:var(--blue);color:#fff;font-size:11px;font-weight:500;padding:2px 6px;border-radius:3px;white-space:nowrap;font-variant-numeric:tabular-nums}.sel--peer{border:1px solid var(--ink);transition:opacity .4s}.sel--peer.sel--ink{border-color:var(--muted)}.m{position:absolute;left:0;top:0;background:var(--red)}.m--h{height:1px}.m--v{width:1px}.m:before,.m:after{content:"";position:absolute;background:var(--red)}.m--h:before,.m--h:after{width:1px;height:7px;top:-3px}.m--h:after{right:0}.m--v:before,.m--v:after{height:1px;width:7px;left:-3px}.m--v:after{bottom:0}.m span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--red);color:#fff;font-size:10px;font-weight:600;padding:1px 4px;border-radius:3px;font-variant-numeric:tabular-nums}.peer{position:absolute;left:0;top:0;display:flex;align-items:flex-start}.peer svg{width:20px;height:20px;fill:var(--ink);stroke:#fff;stroke-width:1.4;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}.peer span{margin:16px 0 0 -4px;background:var(--ink);color:#fff;font-size:11px;font-weight:500;padding:2px 7px;border-radius:10px 10px 10px 2px}.peer--ink svg{fill:var(--muted)}.peer--ink span{background:var(--muted)}.stage{position:relative;min-height:300px;cursor:grab;touch-action:pan-y}.stage.grabbing{cursor:grabbing}.stage--hero{min-height:460px}.stage--side{min-height:420px}.stage--small{min-height:240px}.stage--sticky{position:sticky;top:140px;align-self:start}.no-webgl .stage{background:repeating-linear-gradient(45deg,var(--hover) 0 10px,#fff 10px 20px);border-radius:12px}.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:40px;align-items:center}.hero__copy{display:flex;flex-direction:column;gap:28px;align-items:flex-start}.badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);color:var(--ink-2)}.badge i{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}.hero__title{font-size:clamp(48px,7.4vw,104px);font-weight:700;line-height:.95;letter-spacing:-.045em}.hero__lede{font-size:clamp(16px,1.4vw,19px);line-height:1.55;color:var(--ink-2);max-width:460px}.row{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 18px;border-radius:8px;font-size:14px;font-weight:500;border:1px solid var(--line-2);background:#fff;transition:background .2s,border-color .2s}.btn:hover{border-color:var(--ink)}.btn--primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn--primary:hover{background:#000}.btn--big{height:56px;padding:0 24px;font-size:16px}.ico{width:16px;height:16px;transition:transform .3s var(--ease)}a:hover>.ico{transform:translate(2px,-2px)}.meta{margin-top:56px;padding-top:28px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.meta dt{font-size:12px;color:var(--muted);margin-bottom:6px}.meta dd{font-size:14px;font-weight:500}.split{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}.split--rev{grid-template-columns:1.1fr .9fr}.split--head{grid-template-columns:1.2fr .8fr;align-items:end;margin-bottom:8px}.kicker{font-size:12px;font-weight:500;color:var(--muted);margin-bottom:14px}.h2{font-size:clamp(32px,4vw,54px);font-weight:700;line-height:1.02;letter-spacing:-.04em;margin-bottom:22px}.body{font-size:16px;line-height:1.65;color:var(--ink-2);margin-bottom:32px}.list{display:grid;border-top:1px solid var(--line);margin-bottom:32px}.list li{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.list strong{display:block;font-weight:500;font-size:14px}.list .dim{font-size:13px}.cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips li{font-size:13px;padding:6px 11px;border-radius:6px;background:var(--hover)}.plain li{font-size:14px;padding:3px 0}.plain+.mono{margin-top:10px}.group{margin-top:44px}.group__name{display:flex;justify-content:space-between;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--line)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:14px}.card{display:flex;flex-direction:column;gap:12px;min-height:210px;padding:20px;border-radius:12px;border:1px solid var(--line);background:#fff;transition:border-color .25s,box-shadow .25s}.card:hover{border-color:var(--line-2);box-shadow:0 10px 30px -12px #00000024}.card__top{display:flex;justify-content:space-between;align-items:center}.card h3{font-size:19px;font-weight:600;letter-spacing:-.02em}.card h3 .dim{font-weight:400;font-size:15px}.card p{font-size:14px;line-height:1.55;color:var(--ink-2);flex:1}.tags{display:flex;flex-wrap:wrap;gap:5px}.tags li{font-family:var(--mono);font-size:10.5px;padding:3px 7px;border-radius:4px;background:var(--hover);color:var(--ink-2)}.tl{position:relative;display:grid;gap:8px;padding-left:26px}.tl:before{content:"";position:absolute;left:5px;top:10px;bottom:10px;width:1px;background:var(--line-2)}.tl li{position:relative;padding:12px 0 16px}.tl__dot{position:absolute;left:-26px;top:17px;width:11px;height:11px;border-radius:50%;background:#fff;border:1.5px solid var(--ink)}.tl li:last-child .tl__dot{background:var(--blue);border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft)}.tl__head{display:flex;justify-content:space-between;gap:16px;margin-bottom:4px}.tl__head strong{font-weight:600;font-size:16px}.tl p{font-size:14px;line-height:1.6;color:var(--ink-2)}.skillmap{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:36px}.bars{display:grid;gap:12px}.bar{padding:18px;border:1px solid var(--line);border-radius:12px}.bar__head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.bar__head strong{font-weight:600;font-size:15px}.bar__track{height:4px;border-radius:4px;background:var(--hover);overflow:hidden;margin-bottom:12px}.bar__track i{display:block;height:100%;background:var(--ink);transform-origin:left;transform:scaleX(0);transition:transform 1.6s var(--ease)}.bar.on .bar__track i{transform:scaleX(var(--v))}.bar p{font-size:13.5px;line-height:1.55;color:var(--ink-2)}.contact{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center}.contact__title{font-size:clamp(44px,7vw,96px);font-weight:700;line-height:.95;letter-spacing:-.05em;margin-bottom:36px}.links{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:28px;font-size:14px}.links a{border-bottom:1px solid var(--line-2);padding-bottom:2px}.links a:hover{border-color:var(--ink)}.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:64px;padding-top:20px;border-top:1px solid var(--line)}body.present{--left: 0px;--right: 0px;--ruler: 0px}body.present .panel,body.present .ruler,body.present .ruler-corner{display:none}body.present .canvas{padding-left:clamp(16px,4vw,56px);padding-right:clamp(16px,4vw,56px)}@media (max-width: 1000px){.tools,.avatars,.zoom,.topbar__center .dim,#present{display:none}.topbar{grid-template-columns:auto 1fr auto}.topbar__center{justify-content:center}.canvas{gap:64px;padding-top:calc(var(--top) + 32px)}.hero,.split,.split--rev,.split--head,.contact{grid-template-columns:1fr}.split--rev .stage,.contact .stage{order:-1}.stage--sticky{position:relative;top:0}.stage--hero{min-height:340px}.stage--side{min-height:300px}.meta{grid-template-columns:1fr 1fr}.overlay .sel,.overlay #measures,.overlay .peer{display:none}}@media (max-width: 560px){.skillmap,.cols{grid-template-columns:1fr}.list li{grid-template-columns:1fr;gap:2px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important}}
