:root{--bg:#F3F2EC;--bg-rgb:243,242,236;--card:#FFFFFF;--panel:#FBFAF5;--ink:#161A14;--ink-dim:#5A6156;--ink-dimmer:#7C8277;--border:#E2E0D3;--border-soft:#EBE9DD;--lime:#C8F135;--lime-ink:#4C7A0B;--lime-glow:rgba(76,122,11,.1);--inset:#F7F6F0;--inset-rgb:247,246,240;--raise:#E9E8DE;--raise-2:#F0EFE6;--track:#E4E2D6;--bar:#E4E2D6;--line:#D6D4C6;--line-strong:#C6C4B5;--line-x:#B8B6A6;--chip:#ECEBE1;--ink-soft:#3D4339;--ink-faint:#7A8075;--ink-ghost:#A3A89B;--paper-ink:#3D4339;--amber-ink:#94600E;--red-ink:#B23A28;--code-bg:#F7F6F0;--sk-line:#EBE9DD;--sk-panel:#F7F6F0;--sk-a:#ECEBE2;--sk-b:#E2E0D5;--hover:#ECEBE1}:root[data-theme=dark]{--bg:#0F130E;--bg-rgb:15,19,14;--card:#151A13;--panel:#1D231B;--ink:#E9EDE2;--ink-dim:#AEB7A8;--ink-dimmer:#8E978A;--border:#222A20;--border-soft:#263023;--lime:#C8F135;--lime-ink:#C8F135;--lime-glow:rgba(200,241,53,.12);--inset:#121710;--inset-rgb:18,23,16;--raise:#1D251A;--raise-2:#1A2117;--track:#232B20;--bar:#1E251C;--line:#2E382A;--line-strong:#3A4436;--line-x:#4A5446;--chip:#2A3127;--ink-soft:#C9D0C2;--ink-faint:#6E776A;--ink-ghost:#5F685B;--paper-ink:#E4E7DA;--amber-ink:#E0A44A;--red-ink:#E46B5A;--code-bg:#0B0E0A;--sk-line:#1F271D;--sk-panel:#1A2017;--sk-a:#171C15;--sk-b:#222A1F;--hover:#192017}body{margin:0;background:#0F130E}a{color:#C8F135}a:hover{color:#E2FF7A}.sh-landing a{color:var(--lime-ink)}.sh-landing a:hover{color:var(--lime)}:root:not([data-theme=dark]) .sh-app a{color:var(--lime-ink)}:root:not([data-theme=dark]) .sh-app a:hover{color:var(--ink)}.sh *{box-sizing:border-box}.sh ::selection{background:#C8F135;color:#0F130E}.sh a:focus-visible,.sh button:focus-visible{outline:2px solid #C8F135;outline-offset:3px}.sh .btn-lime{transition:background-color .2s,transform .2s}.sh .btn-lime:hover{background:#DBFF5C;color:#0F130E}.sh .btn-ghost{transition:border-color .2s}.sh .btn-ghost:hover{border-color:var(--ink);color:var(--ink)}.sh .navlink{color:var(--ink-dim);text-decoration:none}.sh .navlink:hover{color:var(--ink)}@keyframes rise{0%{transform:translateY(108%)}to{transform:translateY(0)}}@keyframes fade{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes cardIn{0%{transform:translateY(-180px) rotate(-4deg);opacity:0}55%{opacity:1}to{transform:translateY(0) rotate(-4deg);opacity:1}}@keyframes stamp{0%{transform:scale(2.4) rotate(-16deg);opacity:0}60%{transform:scale(.94) rotate(-9deg);opacity:1}to{transform:scale(1) rotate(-9deg);opacity:1}}@keyframes sway{0%,to{transform:rotate(-2.2deg)}50%{transform:rotate(2.2deg)}}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(200,241,53,.6)}to{box-shadow:0 0 0 10px rgba(200,241,53,0)}}@keyframes marquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes scan{0%{transform:translateY(-100%)}to{transform:translateY(400%)}}.sh .ln{display:inline-block;animation:rise 1s cubic-bezier(.2,.8,.2,1) both}.sh .fd{animation:fade .9s cubic-bezier(.2,.8,.2,1) both}.sh .card-in{animation:cardIn 1.1s cubic-bezier(.2,.9,.25,1) .55s both}.sh .stamp{animation:stamp .5s cubic-bezier(.3,1.4,.5,1) 1.7s both}.sh .stamp-now{animation:stamp .45s cubic-bezier(.3,1.4,.5,1) both}.sh .badge-in{animation:badgeIn 1.2s cubic-bezier(.2,.9,.25,1.12) 1s both}.sh .sway{transform-origin:50% 0;animation:sway 6s ease-in-out 2.2s infinite}.sh .live{animation:pulse 1.6s ease-out infinite}.sh .mq{animation:marquee 46s linear infinite}.sh .mqwrap:hover .mq{animation-play-state:paused}.sh .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.6s ease .4s forwards}.sh .flash{animation:flash 1.4s ease-out both}.sh .scan{animation:scan 3.2s linear infinite}.sh .tr{transition:background-color .5s,color .5s,border-color .4s,height .7s cubic-bezier(.2,.8,.2,1),width .95s linear,opacity .4s}.sh .desk{transition:border-color .25s,background-color .25s}.sh .wbar{transform-origin:left center}@supports (animation-timeline:view()){.sh .wbar{animation:grow linear both;animation-timeline:view();animation-range:entry 5% cover 35%}}.sh .btnl{transition:background-color .2s}.sh .btnl:hover{background:#DBFF5C;color:#0F130E}.sh .btng{transition:border-color .2s}.sh .btng:hover{border-color:#E9EDE2;color:#E9EDE2}.sh .wopt{transition:border-color .2s}.sh .wopt:hover{border-color:#C8F135}@keyframes viewIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes badgeIn{0%{transform:translateY(-140px) rotate(-6deg);opacity:0}to{transform:none;opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes stamp0{0%{transform:scale(2) rotate(-6deg);opacity:0}60%{transform:scale(.96) rotate(-2deg);opacity:1}to{transform:scale(1) rotate(-2deg);opacity:1}}.sh .vin{animation:viewIn .5s cubic-bezier(.2,.8,.2,1) both}.sh .bin{animation:badgeIn .9s cubic-bezier(.2,.9,.25,1.12) both}.sh .spin{animation:spin .8s linear infinite}.sh .stamp0{animation:stamp0 .5s cubic-bezier(.3,1.4,.5,1) .2s both}@media (prefers-reduced-motion:reduce){.sh *{animation:none!important;transition:none!important}}.sh .nav{transition:background-color .2s,color .2s}.sh .nav:hover{background:#192017;color:#E9EDE2}.sh .desk{transition:border-color .25s}.sh .desk:hover{border-color:#5C6857;color:#E9EDE2}.sh .segb:hover,.sh .tab:hover{color:#E9EDE2}@keyframes stamp2{0%{transform:scale(2) rotate(-6deg);opacity:0}60%{transform:scale(.96) rotate(-1.5deg);opacity:1}to{transform:scale(1) rotate(-1.5deg);opacity:1}}@keyframes fall{0%{transform:translateY(-20px) rotate(0)}to{transform:translateY(640px) rotate(540deg);opacity:0}}@keyframes backdrop{0%{opacity:0}to{opacity:1}}@keyframes ring{0%,to{r:5}50%{r:8}}.sh .stamp2{animation:stamp2 .5s cubic-bezier(.3,1.4,.5,1) .15s both}.sh .fall{animation:fall 2.4s linear forwards}.sh .bd{animation:backdrop .3s ease both}.sh .lrow{transition:background-color .2s}.sh .lrow:hover{background:#192017;color:#E9EDE2}@keyframes rowIn{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}.sh .rin{animation:rowIn .4s cubic-bezier(.2,.8,.2,1) both}@keyframes stamp4{0%{transform:scale(2.2) rotate(-14deg);opacity:0}60%{transform:scale(.95) rotate(-8deg);opacity:1}to{transform:scale(1) rotate(-8deg);opacity:1}}.sh .stamp4{animation:stamp4 .5s cubic-bezier(.3,1.4,.5,1) both}.sh .grow{transform-origin:left center;animation:grow 1.2s cubic-bezier(.2,.8,.2,1) .3s both}.sh .ev{transition:background-color .2s}.sh .ev:hover{background:#151B13}@keyframes type{0%{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}@keyframes flash{0%{background:rgba(200,241,53,.2)}to{background:rgba(200,241,53,0)}}.sh .typ{animation:type .3s ease both}.sh .tr{transition:background-color .5s,color .5s,border-color .4s,transform .4s,width .95s linear,height .7s cubic-bezier(.2,.8,.2,1),opacity .4s}@keyframes skl{0%{background-position:100% 50%}to{background-position:0 50%}}.sh .sk{background:linear-gradient(90deg,#171C15 25%,#222A1F 37%,#171C15 63%);background-size:400% 100%}.sh .hero-sk,.sh .sk{animation:skl 1.5s ease infinite;border-radius:8px}.sh .hero-sk{background:linear-gradient(90deg,var(--border-soft) 25%,var(--border) 37%,var(--border-soft) 63%);background-size:400% 100%}@media (min-width:900px){.sh .appside{position:-webkit-sticky;position:sticky;top:0;height:100vh;align-self:flex-start;overflow-y:auto}}@media (min-width:1100px){.sh .o3-grid{grid-template-columns:minmax(0,1fr) 380px!important}}@keyframes o3pop{0%{transform:translateY(8px) scale(.8);opacity:0}60%{transform:translateY(-2px) scale(1.05);opacity:1}to{transform:none;opacity:1}}.o3-badge{animation:o3pop .45s cubic-bezier(.3,1.4,.5,1) both}@media (prefers-reduced-motion:reduce){.o3-badge{animation:none}}body,html{background:var(--bg)}:root:not([data-theme=dark]) .sh-app .btng:hover{border-color:var(--ink);color:var(--ink)}:root:not([data-theme=dark]) .sh-app .wopt:hover{border-color:var(--lime-ink)}:root:not([data-theme=dark]) .sh-app .nav:hover{background:var(--hover);color:var(--ink)}:root:not([data-theme=dark]) .sh-app .desk:hover{border-color:var(--line-x);color:var(--ink)}:root:not([data-theme=dark]) .sh-app .segb:hover,:root:not([data-theme=dark]) .sh-app .tab:hover{color:var(--ink)}:root:not([data-theme=dark]) .sh-app .lrow:hover{background:var(--hover);color:var(--ink)}:root:not([data-theme=dark]) .sh-app .ev:hover{background:var(--hover)}:root:not([data-theme=dark]) .sh-app .sk{background:linear-gradient(90deg,var(--sk-a) 25%,var(--sk-b) 37%,var(--sk-a) 63%);background-size:400% 100%}:root:not([data-theme=dark]) .sh-app a:focus-visible,:root:not([data-theme=dark]) .sh-app button:focus-visible{outline-color:var(--lime-ink)}