@font-face{font-family:PTB-IPA;src:url('assets/fonts/DoulosSIL-Regular.ttf') format('truetype');font-display:swap}
:root{--cream:#fffaf0;--ink:#271331;--muted:#6b6074;--yellow:#ffe755;--lavender:#dfd2ff;--line:#e6dccb;--pointer-x:0;--pointer-y:0;color-scheme:light;font-family:'Microsoft YaHei','PingFang SC',sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:120px}main{overflow-x:clip}body{margin:0;overflow-x:clip;background:radial-gradient(ellipse at 90% 17%,#ffefcb45,transparent 28%),var(--cream)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}svg{display:inline-block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}img{max-width:100%;height:auto;display:block}button:focus-visible,a:focus-visible{outline:3px solid #6450aa;outline-offset:6px}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.skip-link{visibility:hidden;position:fixed;top:-80px;left:25px;padding:12px;background:var(--ink);color:white;z-index:100}.skip-link:focus{top:12px;visibility:visible}
.site-header{position:relative;z-index:10;width:min(1120px,calc(100% - 72px));margin:24px auto 0;padding:12px 28px 12px 14px;display:flex;align-items:center;justify-content:space-between;gap:24px;background:#ffffffef;border:1px solid #fff;border-radius:60px;box-shadow:0 9px 22px #69543112,0 2px 4px #69543108;backdrop-filter:blur(12px)}.brand{display:inline-flex;align-items:center;gap:12px;font-family:'Trebuchet MS','Microsoft YaHei',sans-serif;font-size:25px;letter-spacing:-1.1px;font-weight:800;white-space:nowrap}.brand img{width:48px;height:48px;border-radius:13px}.site-header nav{display:flex;align-items:center;gap:30px;font-size:14px;font-weight:600}.site-header nav>a{padding:10px 0;transition:color .2s}.site-header nav>a:hover{color:#8263ba}.github-link{display:flex;align-items:center;gap:7px}.github-link svg{width:19px;height:19px}.github-link .external{width:13px;height:13px}
.hero{position:relative;width:min(1320px,100%);margin:auto;min-height:700px;display:grid;grid-template-columns:48% 52%;align-items:center;padding:32px 40px 64px;isolation:isolate}.hero-copy{position:relative;z-index:4;padding-left:35px;align-self:center}.hero h1{margin:0 0 48px;font:400 clamp(76px,7.4vw,110px)/1.11 KuaiLe,'Microsoft YaHei',sans-serif;letter-spacing:1px}.hero h1>span{display:block}.heading-first{position:relative;width:max-content}.heading-first:after{content:'';position:absolute;z-index:-1;width:37%;height:10px;border-radius:100%;background:var(--yellow);bottom:-5px;left:10px;transform:rotate(-6deg)}.web-release{display:flex;align-items:center;gap:12px;font-size:16px;line-height:1.65;margin:0 0 23px}.web-release svg{width:27px;height:27px;flex:none}.web-release time{white-space:nowrap}.release-break{display:none}.download-actions{display:flex;gap:12px;align-items:center}.download{position:relative;border:2px solid var(--ink);border-radius:50px;min-height:60px;padding:0 20px;display:flex;align-items:center;justify-content:center;gap:16px;font-size:18px;font-weight:700;white-space:nowrap;box-shadow:0 6px 0 var(--ink),inset 0 3px 1px #ffffffac;cursor:pointer;transition:transform .2s,box-shadow .2s}.download.primary{background:linear-gradient(155deg,#fff077,#ffe13e)}.download.secondary{background:linear-gradient(145deg,#f7f0ff,#e5daff)}.download:hover{transform:translateY(-3px);box-shadow:0 9px 0 var(--ink),inset 0 3px 1px #ffffffac}.download:active{transform:translateY(4px);box-shadow:0 2px 0 var(--ink)}.download svg{width:24px;height:24px}.download-note{font-size:12px;color:var(--muted);margin:26px 0 0;text-align:center;max-width:480px}.download-note span{border-left:1px solid #b4a6bf;margin-left:14px;padding-left:14px}
.hero-art{position:relative;height:580px;width:100%;min-width:0;perspective:1200px;transform:translate3d(calc(var(--pointer-x)*6px),calc(var(--pointer-y)*4px),0);transition:transform .35s ease-out;z-index:2}.spectrum-sheet{position:absolute;width:70%;height:96%;left:48%;top:-4%;background:#e9dfff;border-radius:45% 8% 20% 15% / 12% 7% 18% 20%;transform:rotate(6deg) skewY(-8deg);overflow:hidden;opacity:.63;box-shadow:inset 0 0 40px #fff7}.spectrum-sheet canvas{width:100%;height:100%;display:block}.spectrum-scan{position:absolute;left:0;top:0;width:28%;height:100%;background:linear-gradient(90deg,transparent,#fff8,transparent);animation:scan 9s ease-in-out infinite;mix-blend-mode:soft-light}.float-wrap{position:absolute;animation:float 7s ease-in-out infinite;will-change:transform}.phonetic-tile{position:relative;border-radius:30px;aspect-ratio:1.07;display:grid;place-items:center;box-shadow:inset 2px 3px 3px #fff9,inset -5px -9px 13px #3115531a,10px 22px 22px #39243d20;transform:rotate(var(--rotation));isolation:isolate}.phonetic-tile:after,.annotation-card:after{content:'';position:absolute;inset:0;border-radius:inherit;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.68' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23777777' filter='url(%23n)' opacity='.25' d='M0 0h140v140H0z'/%3E%3C/svg%3E");opacity:.18;mix-blend-mode:multiply;pointer-events:none}.phonetic-tile img{width:90%;margin-top:0;position:relative;z-index:1}.violet{background:linear-gradient(135deg,#cdb3ff,#a78ae7);--rotation:12deg}.yellow{background:linear-gradient(135deg,#fff48a,#ffe359);--rotation:14deg}.coral{background:linear-gradient(135deg,#ffb6a6,#fa8c7c);--rotation:12deg}.tile-sh{width:255px;left:10%;top:3%;z-index:5}.tile-r{width:168px;left:72%;top:65%;z-index:7;animation-delay:-2.4s}.tile-x{width:152px;left:77%;top:32%;z-index:4;animation-delay:-4.3s}.tile-r img{filter:none}.annotation-card{position:absolute;top:49%;left:2%;width:78%;height:220px;border:1px solid #eadfcf;border-radius:23px;background:linear-gradient(145deg,#fffef5,#f3e8d8);box-shadow:inset 2px 3px 3px #fff,9px 19px 20px #54442f26;transform:rotate(-9deg);padding:32px 25px 20px;z-index:6}.intervals{display:flex;border:1px solid #d9cdbd;border-radius:15px;height:95px;overflow:hidden}.intervals span{display:grid;place-items:center;flex:1;font:52px/1 PTB-IPA,serif;color:#321843}.intervals span+span{border-left:1px dashed #a89cb0}.annotation-wave{display:block;width:100%;height:70px;color:#50a6a4;stroke-width:2.4;fill:none}.coral-stroke{position:absolute;width:100px;height:90px;left:-7%;top:41%;stroke:#fa9b8c;stroke-width:15;filter:drop-shadow(3px 7px 3px #a14e4630);transform:rotate(-14deg);z-index:5}.spark{position:absolute;width:11px;height:33px;background:var(--yellow);border-radius:12px;transform:rotate(-25deg);left:2%;top:29%}.spark:after{content:'';position:absolute;width:10px;height:30px;background:var(--yellow);border-radius:12px;transform:rotate(-32deg);left:-24px;top:11px}.spark-two{left:95%;top:63%;transform:rotate(40deg) scale(.7)}.scroll-hint{position:absolute;bottom:17px;left:75px;display:flex;gap:20px;font-size:11px;letter-spacing:.08em;color:#76667c}.scroll-hint span:last-child{font-size:18px;margin-top:-6px}
.feature-ribbon{position:relative;z-index:3;display:flex;justify-content:center;align-items:center;gap:42px;background:#ffe96b;min-height:140px;margin:10px 0 30px;padding:32px 40px}.feature-ribbon:before,.feature-ribbon:after{content:'';position:absolute;left:0;right:0;height:42px;background-repeat:repeat-x;background-size:800px 44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 44'%3E%3Cpath d='M0 25Q100 0 200 24T400 25T600 24T800 25V44H0Z' fill='%23ffe96b'/%3E%3C/svg%3E")}.feature-ribbon:before{top:-40px}.feature-ribbon:after{bottom:-40px;transform:rotate(180deg)}.feature-ribbon>div{display:flex;align-items:center;gap:14px;font-size:19px;font-weight:650;white-space:nowrap}.feature-ribbon>div svg{width:42px;height:42px;padding:8px;box-sizing:content-box;background:#fff9;border-radius:50%}.feature-ribbon>i{width:5px;height:5px;border-radius:50%;background:#be9a35}
.showcase{width:min(1280px,calc(100% - 100px));margin:auto;padding:115px 35px;position:relative}.section-heading{text-align:center;margin:0 auto 58px}.eyebrow{display:block;color:#7f7183;font-size:10px;letter-spacing:.2em;margin-bottom:22px}.showcase h2{font:400 clamp(34px,4vw,54px)/1.3 KuaiLe,'Microsoft YaHei',sans-serif;margin:0 0 20px;letter-spacing:.01em}.showcase h2 em{font-style:normal;color:#8c71b5}.showcase p,.guide-section p{font-size:15px;color:var(--muted);line-height:1.95;margin:0;max-width:430px}.section-heading p{margin:auto;max-width:none}.screen-stage{position:relative;perspective:1600px;margin:0;isolation:isolate}.screen-link{display:block;position:relative;z-index:1;border-radius:15px;border:5px solid #fffef5;box-shadow:0 0 0 1px #2c203527,0 9px 0 #d3cbd9,0 35px 60px -18px #35213b50;transform:rotateX(calc(var(--tilt)*var(--angle,1))) rotateY(calc(var(--turn)*var(--angle,1)));transform-style:preserve-3d;transition:transform .6s ease,box-shadow .6s;overflow:hidden;background:#ece6d8}.screen-link:hover{transform:rotateX(0) rotateY(0) translateY(-5px);box-shadow:0 0 0 1px #2c203527,0 5px 0 #d3cbd9,0 30px 50px -16px #35213b50}.screen-link img{width:100%;height:auto;object-fit:contain}.stage-backdrop{position:absolute;z-index:-1;inset:10% -5% -3%;background:#f5e6a6;border-radius:40% 55% 30% 45%;transform:rotate(-7deg);opacity:.8}.violet-backdrop{background:#e0d3fa;transform:rotate(9deg);inset:5% -7% 0 -5%}.coral-backdrop{background:#f8d2c4;transform:rotate(-11deg)}.screen-stage figcaption{display:flex;align-items:center;gap:9px;margin:29px 12px 0;font-size:11px;letter-spacing:.015em;color:var(--muted)}.screen-stage figcaption>span:nth-child(2){padding:2px 6px;border-radius:6px;background:#fff8}.palette-dot{width:9px;height:9px;border-radius:50%}.green{background:#a7c080}.mauve{background:#cba6f7}.rose{background:#b4637a}.blue{background:#7aa2f7}.expand-hint{margin-left:auto}.home-stage{max-width:1000px;margin:0 auto}.split-showcase{display:grid;grid-template-columns:minmax(0,29fr) minmax(0,71fr);align-items:center;gap:26px;padding-top:120px;padding-bottom:130px}.showcase-copy{position:relative;z-index:2}.showcase-copy p{font-size:14px;max-width:270px}.section-label{display:inline-block;margin-top:24px;font-size:11px;padding:7px 11px;background:#efe6fa;border-radius:30px;color:#705387}.small-ipa{display:block;font:36px PTB-IPA,serif;color:#b9a5cd;margin-top:23px}.reverse-showcase{grid-template-columns:minmax(0,71fr) minmax(0,29fr)}.reverse-showcase .showcase-copy{grid-column:2;grid-row:1;padding-left:18px}.reverse-showcase .screen-stage{grid-column:1;grid-row:1}.reverse-showcase h2 em{color:#b26d60}.reverse-showcase .section-label{background:#f8e1d6;color:#995c50}.appearance-showcase{max-width:1150px;padding-bottom:155px}.appearance-showcase h2{font-size:47px}.appearance-showcase .screen-stage{max-width:920px;margin:auto}
.guide-section{width:min(1100px,calc(100% - 80px));margin:0 auto 140px;padding:45px 52px;border:1px solid #e7dcc4;border-radius:25px;background:#fffdf5;display:flex;justify-content:space-between;align-items:center;gap:30px;box-shadow:0 14px 40px #74613708}.guide-section .eyebrow{margin-bottom:12px}.guide-section h2{font:400 34px KuaiLe,sans-serif;margin:0 0 10px}.guide-section p{font-size:13px}.github-button{display:flex;align-items:center;gap:14px;white-space:nowrap;border:1.5px solid var(--ink);border-radius:40px;padding:17px 23px;background:var(--yellow);box-shadow:0 4px 0 var(--ink);font-size:15px;font-weight:600;transition:transform .2s}.github-button:hover{transform:translateY(-3px)}.github-button svg{width:21px;height:21px}
.site-footer{position:relative;background:#ffe96b;padding:42px max(40px,calc((100vw - 1130px)/2)) 35px;display:flex;align-items:center;justify-content:space-between;gap:20px}.site-footer:before{content:'';position:absolute;top:-39px;left:0;right:0;height:40px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 44'%3E%3Cpath d='M0 25Q100 0 200 24T400 25T600 24T800 25V44H0Z' fill='%23ffe96b'/%3E%3C/svg%3E") repeat-x bottom/800px 44px}.site-footer .brand{font-size:20px}.site-footer .brand img{width:40px;height:40px}.site-footer>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 20px;font-size:11px;color:#665532}.site-footer a:hover{text-decoration:underline;text-underline-offset:4px}
#screen-viewer{padding:18px;background:#fffaf0;border:1px solid #f1e3c7;border-radius:16px;width:min(1600px,96vw);max-height:96vh;overflow:auto;box-shadow:0 25px 100px #160b3580}#screen-viewer::backdrop{background:#1c112dc9;backdrop-filter:blur(8px)}.viewer-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 2px 12px}.viewer-toolbar p{margin:0;font-size:14px}.viewer-close{border:1px solid #dfd4c2;border-radius:30px;background:white;padding:7px 15px;font-size:14px;cursor:pointer}.viewer-close span{font-size:23px;margin-left:10px;vertical-align:middle}#viewer-image{width:100%;height:auto;border-radius:7px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,15px);max-width:calc(100vw - 30px);padding:14px 22px;background:var(--ink);color:#fffaf0;border-radius:30px;font-size:13px;opacity:0;visibility:hidden;z-index:30;transition:.2s}.toast.visible{opacity:1;visibility:visible;transform:translate(-50%,0)}
.motion-ready .reveal{opacity:0;translate:0 32px;transition:opacity .65s ease var(--reveal-delay,0ms),translate .85s cubic-bezier(.18,.7,.18,1) var(--reveal-delay,0ms)}.motion-ready .reveal.is-visible{opacity:1;translate:0 0}.motion-ready .screen-stage.reveal .screen-link{transform:rotateX(calc(var(--tilt)*var(--angle,1))) rotateY(calc(var(--turn)*var(--angle,1))) translateZ(0)}.motion-ready .screen-stage.reveal .screen-link:hover{transform:rotateX(0) rotateY(0)}
@keyframes float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(1.5deg)}}@keyframes scan{0%,100%{transform:translateX(-110%)}65%{transform:translateX(460%)}}
@media(min-width:1500px){.hero{min-height:770px}.hero-art{height:620px}.hero-copy{padding-left:10px}.hero h1{font-size:124px}.download{font-size:19px;padding:0 24px;min-height:64px}.web-release{font-size:17px}}
@media(max-width:1150px){.hero{padding:40px 30px 64px;grid-template-columns:49% 51%;min-height:640px}.hero-copy{padding-left:5px}.hero h1{font-size:84px;margin-bottom:38px}.hero-art{height:510px}.tile-sh{width:220px;left:10%}.tile-r{width:145px;left:70%;top:68%}.tile-x{width:125px;left:78%;top:34%}.annotation-card{height:185px;padding:22px 20px;width:87%;left:0}.intervals{height:80px}.intervals span{font-size:43px}.annotation-wave{height:60px}.download{font-size:15px;padding:0 15px;min-height:54px;gap:9px}.web-release{font-size:14px}.feature-ribbon{gap:24px}.feature-ribbon>div{font-size:16px;gap:10px}.feature-ribbon>div svg{width:28px;height:28px}.showcase{width:calc(100% - 70px);padding-left:0;padding-right:0}.split-showcase{gap:25px}.site-header{width:calc(100% - 60px)}.brand{font-size:22px}.showcase h2{font-size:40px}.scroll-hint{left:35px}}
@media(max-width:800px){html{scroll-padding-top:90px}.site-header{width:calc(100% - 32px);margin-top:16px;padding:10px 16px 10px 10px;gap:10px}.brand{font-size:19px;gap:8px;letter-spacing:-.7px}.brand img{width:40px;height:40px;border-radius:11px}.site-header nav{gap:18px;font-size:12px}.github-link .external{display:none}.hero{display:flex;flex-direction:column;min-height:0;padding:55px 24px 40px}.hero-copy{text-align:center;padding:0;width:100%}.hero h1{font-size:80px;line-height:1.12;margin-bottom:32px}.hero h1>span{display:inline-block}.hero h1>span+span{margin-left:9px}.heading-first:after{width:55%;height:7px;left:5px}.web-release{justify-content:center;font-size:14px;margin-bottom:22px}.web-release svg{width:23px;height:23px}.download-actions{justify-content:center}.download{font-size:17px;min-height:55px;gap:14px;padding:0 22px}.download-note{margin:23px auto 0;font-size:11px}.hero-art{width:min(570px,93vw);height:510px;margin-top:32px;margin-left:-40px}.spectrum-sheet{width:63%;left:46%;height:92%;top:0}.tile-sh{width:213px;left:19%;top:4%}.tile-x{width:125px;left:80%;top:30%}.tile-r{width:147px;left:75%;top:64%}.annotation-card{width:76%;height:188px;left:12%;top:48%}.coral-stroke{left:0;top:39%;width:82px}.spark{left:10%;top:25%}.spark-two{left:95%;top:60%}.scroll-hint{display:none}.feature-ribbon{display:grid;grid-template-columns:1fr 1fr;gap:24px 36px;min-height:160px;padding:25px max(25px,calc((100% - 490px)/2));margin-top:0}.feature-ribbon>i{display:none}.feature-ribbon>div{font-size:17px;gap:10px}.feature-ribbon>div svg{width:25px;height:25px;padding:8px}.showcase{width:calc(100% - 48px);padding-top:85px;padding-bottom:55px}.showcase h2{font-size:39px}.section-heading{margin-bottom:36px}.section-heading p{font-size:13px;max-width:320px}.split-showcase,.reverse-showcase{display:flex;flex-direction:column;align-items:stretch;gap:40px}.showcase-copy,.reverse-showcase .showcase-copy{padding-left:8px}.showcase-copy p{max-width:430px}.showcase-copy h2 br{display:none}.showcase-copy h2{font-size:35px}.small-ipa{display:none}.section-label{margin-top:16px}.stage-backdrop{inset:10% -2% 0}.screen-link{border-width:3px;border-radius:10px;box-shadow:0 0 0 1px #2c203527,0 6px 0 #d3cbd9,0 20px 35px -14px #35213b50}.screen-stage figcaption{font-size:10px;margin-top:20px}.appearance-showcase{padding-bottom:80px}.appearance-showcase h2{font-size:36px}.guide-section{width:calc(100% - 48px);margin-bottom:100px;padding:30px;flex-direction:column;align-items:flex-start;gap:25px}.guide-section h2{font-size:30px}.site-footer{padding:35px 25px 30px;flex-direction:column;align-items:flex-start}.site-footer>div{justify-content:flex-start;gap:12px}.site-footer .brand{font-size:21px}}
@media(max-width:500px){.site-header nav{gap:15px}.site-header nav>a:not(.github-link){display:none}.github-link span{display:none}.github-link svg{width:25px;height:25px}.hero{padding:44px 16px 30px}.hero h1{font-size:67px}.hero h1>span{display:block;margin-left:auto;margin-right:auto}.hero h1>span+span{margin:0}.hero h1{margin-bottom:30px}.download{font-size:14px;padding:0 13px;min-height:51px;gap:9px}.download svg{width:19px;height:19px}.download-actions{gap:10px}.web-release{font-size:12px;gap:7px;line-height:1.7}.release-break{display:none}.web-release svg{width:21px;height:21px}.download-note{font-size:10px;white-space:nowrap}.download-note span{padding-left:9px;margin-left:9px}.hero-art{width:350px;height:360px;margin-left:-29px;margin-top:34px}.tile-sh{width:151px;left:19%;top:4%}.phonetic-tile{border-radius:21px;box-shadow:inset 2px 3px 3px #fff9,inset -4px -7px 9px #3115531a,7px 15px 19px #39243d20}.tile-r{width:104px;left:77%;top:63%}.tile-x{width:90px;left:82%;top:30%}.annotation-card{height:141px;left:10%;top:45%;padding:18px 15px 12px;border-radius:17px;width:79%}.intervals{height:63px;border-radius:10px}.intervals span{font-size:37px}.annotation-wave{height:43px}.coral-stroke{width:60px;height:55px;top:35%}.spark{transform:scale(.65) rotate(-25deg);top:22%}.spark-two{top:60%;left:99%;transform:scale(.5) rotate(35deg)}.feature-ribbon{padding:20px 22px;gap:19px 13px;min-height:145px}.feature-ribbon>div{font-size:14px;gap:7px}.feature-ribbon>div svg{width:23px;height:23px;padding:6px}.showcase{width:calc(100% - 40px)}.showcase h2{font-size:32px}.eyebrow{font-size:9px;letter-spacing:.16em;margin-bottom:15px}.showcase p{font-size:12px}.screen-stage figcaption{font-size:9px;gap:5px;margin-left:2px;margin-right:2px}.appearance-showcase h2 em{display:block}.guide-section{width:calc(100% - 40px);padding:25px}.guide-section h2{font-size:27px}.site-footer>div{font-size:10px}.viewer-toolbar p{font-size:11px}.viewer-close{padding:4px 9px}.viewer-close span{margin-left:3px}}
@media(max-width:360px){.hero h1{font-size:60px}.hero-art{transform:scale(.78);margin-left:-15px;margin-top:-5px;margin-bottom:-50px}.download{font-size:12px;padding:0 10px;gap:6px}.web-release{font-size:11px}.site-header .brand{font-size:17px}.feature-ribbon{padding-left:16px;padding-right:16px}.feature-ribbon>div{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero-art{--pointer-x:0!important;--pointer-y:0!important}.motion-ready .reveal{opacity:1;transform:none}.screen-link,.motion-ready .screen-stage.reveal .screen-link{transform:none!important}}

.hero h1{-webkit-text-stroke:3px currentColor;paint-order:stroke fill}

/* Bespoke display lettering with accessible text, independent of installed fonts. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.hero h1.custom-heading{font-size:inherit;line-height:1;margin:0 0 36px;-webkit-text-stroke:0}
.custom-heading img{width:430px;max-width:100%;height:auto}
.showcase h2,.guide-section h2{font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-weight:800;letter-spacing:-.045em;line-height:1.45}
.showcase h2 em{font-weight:700}
@media(max-width:1150px){.custom-heading img{width:360px}}
@media(max-width:800px){.custom-heading img{width:340px;margin:auto}.hero h1.custom-heading{margin-bottom:40px}}
@media(max-width:500px){.custom-heading img{width:274px}.hero h1.custom-heading{margin-bottom:34px}}
@media(max-width:360px){.custom-heading img{width:248px}}

.more-features{width:calc(100% - 40px);margin:0 auto 105px;text-align:center;padding:5px 0 20px}.more-dots{font-family:Arial,sans-serif;font-weight:900;font-size:clamp(64px,8vw,102px);line-height:1;color:#8c71b5;letter-spacing:.1em;padding-left:.1em}.more-features p{margin:24px 0 0;font-size:clamp(18px,2.3vw,28px);font-weight:700;letter-spacing:.04em;color:var(--ink)}

.more-dots{display:flex;justify-content:center;align-items:center;gap:14px;height:90px;padding:0}.more-dots span{width:clamp(13px,1.5vw,21px);height:clamp(13px,1.5vw,21px);border-radius:50%;background:currentColor}.more-dots span:nth-child(4){margin-left:8px}

.screen-stack .stack-deck{position:relative;aspect-ratio:1.25;perspective:1600px}
.screen-stack .stack-card{position:absolute;width:82%;left:calc((2 - var(--card))*9%);top:calc(var(--card)*10%);z-index:var(--z);transform:rotate(calc((var(--card) - 1)*-2deg)) rotateY(calc(var(--turn)*var(--angle,1)));transform-origin:50% 70%;overflow:visible;border-width:4px}
.screen-stack .stack-card img{display:block;border-radius:10px;width:100%;height:auto}
.screen-stack .stack-tab{position:absolute;top:10px;left:12px;background:#fffaf0;color:var(--ink);box-shadow:0 2px 8px #27133122;border:1px solid #d9cbea;border-radius:20px;padding:7px 13px;font-size:12px;font-weight:700}
.screen-stack .stack-card:hover,.screen-stack .stack-card:focus-visible{z-index:8;transform:rotate(0) translateY(-8px);outline:3px solid #ffe147;outline-offset:3px}
.stack-2 .stack-deck{aspect-ratio:1.3}.stack-2 .stack-card{width:86%;left:calc((1 - var(--card))*12%);top:calc(var(--card)*17%)}
.more-lettering{max-width:1050px;margin:10px auto 0!important}.more-lettering img{display:block;width:100%;height:auto}
@media(max-width:800px){.screen-stack .stack-tab{font-size:10px;padding:4px 8px;top:5px;left:6px}.screen-stack figcaption{flex-wrap:wrap;gap:8px}.screen-stack .expand-hint{margin-left:0}.screen-stack .stack-card{border-width:3px}.more-features{margin-bottom:75px}.more-lettering{width:100%}}
@media(prefers-reduced-motion:reduce){.screen-stack .stack-card,.screen-stack .stack-card:hover,.screen-stack .stack-card:focus-visible{transform:none;transition:none}}

.screen-stack .stack-deck{aspect-ratio:1.35}
.screen-stack .stack-card{width:88%;left:var(--left);top:var(--top);transform:rotate(var(--rotation)) rotateY(calc(var(--turn)*var(--angle,1)));transform-origin:50% 65%}
.stack-3 .stack-card:nth-child(1){--left:10%;--top:2%;--rotation:8deg}
.stack-3 .stack-card:nth-child(2){--left:3%;--top:9%;--rotation:-6deg}
.stack-3 .stack-card:nth-child(3){--left:0%;--top:17%;--rotation:2.5deg}
.stack-2 .stack-card:nth-child(1){--left:9%;--top:1%;--rotation:7deg}
.stack-2 .stack-card:nth-child(2){--left:1%;--top:13%;--rotation:-4deg}
.screen-stack .stack-card:hover,.screen-stack .stack-card:focus-visible{z-index:var(--z);transform:rotate(var(--rotation)) rotateY(calc(var(--turn)*var(--angle,1)));outline:2px solid #ffe147;outline-offset:2px;box-shadow:0 0 0 1px #2c203527,0 7px 0 #d3cbd9,0 32px 55px -18px #35213b65}
.motion-ready .screen-stage.screen-stack.reveal .stack-card,.motion-ready .screen-stage.screen-stack.reveal .stack-card:hover{transform:rotate(var(--rotation)) rotateY(calc(var(--turn)*var(--angle,1)))}
@media(prefers-reduced-motion:reduce){.screen-stack .stack-card,.screen-stack .stack-card:hover,.screen-stack .stack-card:focus-visible{transform:rotate(var(--rotation));transition:none}}

@font-face{font-family:PhoneticWhisper;src:url('assets/fonts/PhoneticWhisper-Regular.ttf?v=5cc9cb357e34') format('truetype');font-display:swap}
.author-note{position:relative;display:grid;grid-template-columns:156px minmax(0,1fr);align-items:start;gap:38px;width:min(1180px,calc(100% - 72px));margin:90px auto 145px;font-family:PhoneticWhisper,'Microsoft YaHei',sans-serif;color:var(--ink)}
.author-identity{position:relative;display:flex;flex-direction:column;align-items:center;gap:17px;padding-top:40px}
.author-avatar{display:block;width:132px;height:132px;padding:6px;background:#fff;border:2px solid #32203c;border-radius:43px 48px 40px 47px;box-shadow:4px 7px 0 #ffe76b;transform:rotate(-6deg);transition:transform .25s}
.author-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:34px 39px 32px 38px}
.author-avatar:hover,.author-avatar:focus-visible{transform:rotate(3deg) translateY(-3px)}
#author-name{font-size:31px;transform:rotate(-3deg)}
.author-spark{position:absolute;right:0;top:14px;color:#9a7ac4;font-size:41px;transform:rotate(16deg)}
.speech-bubble{position:relative;padding:45px 54px 40px;background:#fffdf6;border:2px solid #382340;border-radius:45px 55px 48px 24px;box-shadow:9px 12px 0 #e6dbf7,0 22px 50px #6b46600c}
.speech-bubble:before{content:'';position:absolute;left:-30px;top:54px;width:32px;height:48px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 48'%3E%3Cpath d='M32 1C25 15 15 25 3 30Q0 33 4 35C14 39 23 41 32 42' fill='%23fffdf6' stroke='%23382340' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat;pointer-events:none}
.speech-bubble p{position:relative;font-size:clamp(19px,1.7vw,24px);line-height:1.9;letter-spacing:.045em;margin:0 0 25px;overflow-wrap:anywhere}
.speech-bubble .note-opening{font-size:clamp(21px,1.9vw,27px)}
.tiny-whisper{display:inline-block;width:49px;height:49px;object-fit:cover;border:3px solid white;border-radius:9px;transform:rotate(8deg);vertical-align:middle;margin:0 0 0 9px;box-shadow:1px 3px 7px #37213b25}
.speech-bubble .note-promise{background:#fff3ae;padding:17px 22px;border-radius:18px 24px 15px 20px;transform:rotate(-.6deg)}
.speech-bubble .note-wish{margin:31px 0 9px;color:#9675b6;font-size:clamp(24px,2.3vw,33px);transform:rotate(-1deg)}
.speech-bubble .note-cheer{display:inline-block;margin:7px 0 0;font-size:clamp(28px,2.7vw,39px);background:linear-gradient(transparent 66%,#ffe76b 66%,#ffe76b 91%,transparent 91%);transform:rotate(1.2deg)}
.bubble-spark{position:absolute;right:32px;top:-26px;color:#ffce58;font-size:49px;transform:rotate(13deg);-webkit-text-stroke:1.5px #382340}
@media(max-width:800px){.author-note{grid-template-columns:minmax(0,1fr);gap:28px;width:calc(100% - 42px);margin:50px auto 100px}.author-identity{flex-direction:row;gap:22px;padding:0 0 0 22px}.author-avatar{width:91px;height:91px;border-radius:30px}.author-avatar img{border-radius:22px}.author-spark{left:4px;right:auto;top:-17px}.speech-bubble{padding:29px 27px;border-radius:33px 38px 30px 18px;box-shadow:5px 8px 0 #e6dbf7}.speech-bubble:before{left:45px;top:-30px;width:48px;height:32px;transform:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 32'%3E%3Cpath d='M1 32C8 24 15 12 20 3Q22 0 24 4C27 14 29 24 42 32' fill='%23fffdf6' stroke='%23382340' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}.speech-bubble p{line-height:1.8;margin-bottom:22px}.speech-bubble .note-promise{padding:13px 15px}.tiny-whisper{width:42px;height:42px}.bubble-spark{right:22px;top:-23px;font-size:41px}}
@media(prefers-reduced-motion:reduce){.author-avatar{transition:none}}
.author-note{grid-template-columns:112px minmax(0,1fr);gap:30px;width:min(1010px,calc(100% - 72px));margin:65px auto 110px}
.author-avatar{width:102px;height:102px;padding:5px;border-radius:34px 38px 31px 37px;box-shadow:3px 5px 0 #ffe76b}.author-avatar img{border-radius:26px 30px 24px 29px}
.author-identity{gap:14px;padding-top:33px}#author-name{font-size:25px}.author-spark{font-size:32px;right:-8px;top:12px}
.speech-bubble{padding:33px 39px 31px;border-radius:35px 44px 37px 20px;box-shadow:7px 9px 0 #e6dbf7,0 18px 40px #6b46600c}
.speech-bubble p{font-size:18px;line-height:1.8;margin-bottom:20px;letter-spacing:.025em}.speech-bubble .note-opening{font-size:19px}.speech-bubble .note-promise{padding:14px 18px}.speech-bubble .note-wish{font-size:24px;margin-top:24px}.speech-bubble .note-cheer{font-size:28px}.tiny-whisper{width:39px;height:39px}.bubble-spark{font-size:40px;top:-22px}
@media(max-width:800px){.author-note{grid-template-columns:minmax(0,1fr);width:calc(100% - 42px);gap:25px;margin:45px auto 85px}.author-identity{padding:0 0 0 16px;gap:18px}.author-avatar{width:76px;height:76px;border-radius:25px}.author-avatar img{border-radius:18px}#author-name{font-size:24px}.author-spark{left:0;top:-17px}.speech-bubble{padding:25px 23px}.speech-bubble:before{top:-30px}.speech-bubble p{font-size:16px;line-height:1.75}.speech-bubble .note-opening{font-size:17px}.speech-bubble .note-wish{font-size:20px}.speech-bubble .note-cheer{font-size:24px}}

/* Gentle layered tracking; controls travel at most three pixels. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
.hero-copy .custom-heading{transform:translate3d(calc(var(--pointer-x)*-7px),calc(var(--pointer-y)*-5px),0) rotate(calc(var(--pointer-x)*-.45deg));transition:transform .45s ease-out}
.hero-copy .web-release{transform:translate3d(calc(var(--pointer-x)*-4px),calc(var(--pointer-y)*-3px),0);transition:transform .45s ease-out}
.hero-copy .download-actions{transform:translate3d(calc(var(--pointer-x)*-3px),calc(var(--pointer-y)*-2px),0);transition:transform .45s ease-out}
}
.tool-divider{position:relative;width:min(330px,60%);height:50px;margin:-25px auto;transform:rotate(-3deg);color:#b29acb;pointer-events:none}
.tool-divider svg{display:block;width:100%;height:50px;stroke-width:3;stroke-linecap:round;fill:none;overflow:visible}
.tool-divider .divider-star{fill:#ffe76b;stroke:#a288bb;stroke-width:2}
.tool-divider i{position:absolute;width:5px;height:5px;border-radius:50%;background:#edb3a2;top:5px;left:23%}
.tool-divider i+i{left:76%;top:41px;background:#d2bfdf;width:4px;height:4px}
.divider-0{transform:translateX(24px) rotate(3deg);width:min(270px,52%);color:#d9b283}
.divider-2{transform:translateX(-20px) rotate(-1deg);width:min(295px,55%);color:#b4c7b8}
@media(max-width:800px){.tool-divider{margin:0 auto;height:35px;width:190px}.tool-divider svg{height:35px}.tool-divider i+i{top:28px}}

/* Small sound playground and handwritten editorial pages. OFL display face. */
@font-face{font-family:Playful;src:url('assets/fonts/ZCOOLKuaiLe-Regular.ttf') format('truetype');font-display:swap}
.site-header{width:min(1260px,calc(100% - 48px))}.site-header nav{gap:22px}.nav-tip{position:relative;white-space:nowrap}.nav-tooltip,.download-tooltip{position:absolute;z-index:30;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s,transform .18s;background:#fffef8;border:1.5px solid #d9c8ea;box-shadow:0 8px 22px #3e23451c;border-radius:16px;font-weight:400;color:var(--ink);letter-spacing:0;line-height:1.65;text-align:left;white-space:normal}.nav-tooltip{top:calc(100% + 9px);left:50%;width:max-content;max-width:min(240px,calc(100vw - 32px));overflow-wrap:anywhere;padding:12px 15px;transform:translate(-50%,5px);font-size:12px}.nav-tip:hover .nav-tooltip,.nav-tip:focus-visible .nav-tooltip{opacity:1;visibility:visible;transform:translate(-50%,0)}.download-tooltip{bottom:calc(100% + 16px);left:0;width:275px;padding:16px 18px;font-size:13px;transform:translateY(6px)}.download-tooltip small{display:block;margin-top:6px;color:var(--muted);font-size:11px}.download:hover .download-tooltip,.download:focus-visible .download-tooltip{opacity:1;visibility:visible;transform:none}
.content-section{width:min(1160px,calc(100% - 80px));margin:110px auto;position:relative;scroll-margin-top:40px}.content-section h2{font:400 clamp(36px,4.2vw,58px)/1.3 Playful,'Microsoft YaHei',sans-serif;margin:0 0 24px}.content-section h2 em{font-style:normal;color:#9271b6}.content-section h3{font:400 29px/1.3 Playful,'Microsoft YaHei',sans-serif;margin:16px 0}.content-section p{font-size:15px;line-height:1.95;color:var(--muted)}.content-section button,.content-section input,.content-section textarea{font:inherit}.content-section .section-heading p{max-width:650px}.lab-grid{display:grid;grid-template-columns:1fr 1fr;gap:42px 28px}.lab-card{position:relative;border:1.5px solid #d7c2e6;border-radius:36px 24px 40px 24px;padding:30px;background:#f2eafb;box-shadow:5px 7px 0 #dfd1ea;min-width:0}.lab-title{display:flex;align-items:center;justify-content:space-between;gap:15px}.lab-title h3{font-size:33px}.lab-doodle{font:400 68px/1 Playful;color:#a086bf;transform:rotate(-12deg)}.paper-tab{display:inline-block;position:absolute;top:-17px;left:32px;padding:7px 18px;background:#fff4a5;border-radius:6px 12px 5px 9px;transform:rotate(-2deg);font-size:12px;letter-spacing:.1em;box-shadow:0 2px 4px #39243d08}.continuum-card{grid-column:1/-1;padding:35px 45px 25px;transform:rotate(-.4deg)}.continuum-card>p{max-width:720px;margin-top:0}.continuum-labels{display:flex;justify-content:space-between;align-items:center;margin:30px 5px 13px;font-size:12px;color:#7e618e}.continuum-labels span:nth-child(2){font-family:Playful;font-size:17px}.sound-choices{display:grid;gap:12px}.sound-option{min-width:0}.sound-play{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:14px 8px;border:1.5px solid #a98dbb;border-radius:18px;background:#fffefa;color:var(--ink);box-shadow:0 4px 0 #baa1ca;cursor:pointer;transition:transform .2s,background .2s}.sound-play:hover{transform:translateY(-3px)}.sound-play[aria-pressed=true]{background:#ffe966;box-shadow:0 3px 0 #967f38}.sound-symbol{font-size:12px;display:inline-block;min-width:12px}.sound-detail{display:block;font-size:11px;text-align:center;color:var(--muted);margin:11px 0 5px}.mini-wave{height:28px;display:flex;align-items:center;justify-content:center;gap:2px;padding:0 5px;color:#a88abd}.mini-wave i{width:3px;flex:1;max-width:5px;height:var(--bar);min-height:2px;border-radius:3px;background:currentColor}.is-playing .mini-wave{color:#836529}.sound-option audio{display:block;width:100%;height:32px;margin-top:12px}.audio-ready .sound-option audio{display:none}.continuum{grid-template-columns:repeat(var(--continuum-steps,7),minmax(0,1fr))}.continuum .sound-option:nth-child(2){transform:translateY(3px)}.continuum .sound-option:nth-child(4){transform:translateY(-4px)}.continuum .sound-option:nth-child(6){transform:translateY(5px)}.lab-recipe{margin-top:28px;font-size:12px;border-top:1px dashed #c9b4d8;padding-top:15px}.lab-recipe summary{cursor:pointer}.lab-recipe p{font-size:13px}.pitch-card{background:#fff1d6;border-color:#e4cc9c;box-shadow:5px 7px 0 #e8d7b2;transform:rotate(.6deg)}.pitch-card .paper-tab{background:#eedffa;transform:rotate(2deg)}.pitch-card .lab-doodle{color:#bca16c}.pitch-choices{grid-template-columns:1fr 1fr}.pitch-choices .sound-option:first-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:8px;padding-bottom:12px}.pitch-choices .sound-option:first-child .mini-wave{grid-column:2;grid-row:1}.pitch-choices .sound-option:first-child .sound-detail{grid-column:1/-1;margin:0}.vowel-card{background:#e9f1e8;border-color:#b6ceb7;box-shadow:5px 7px 0 #c4d8c7;transform:rotate(-.7deg)}.vowel-card .paper-tab{background:#f5d9cc}.vowel-card .lab-doodle{color:#92ad94}.vowel-choices{grid-template-columns:repeat(3,1fr);margin:40px 0 38px}.vowel-choices .sound-play{font:400 40px/1.4 PTB-IPA,serif;aspect-ratio:1;border-radius:50% 45% 42% 48%;background:#fffdf2;border-color:#94b49b;box-shadow:0 5px 0 #adc7b4}.vowel-choices .sound-play[aria-pressed=true]{background:#ffe966}.vowel-choices .sound-symbol{font:12px sans-serif}.vowel-choices .sound-option:nth-child(2){transform:translateY(15px)}.lab-footnote{font-size:12px!important;margin-bottom:0}.audio-status{text-align:center;min-height:29px;margin-top:24px;font-size:13px!important}.support-heading{position:relative}.faq-section,.feedback-section{display:grid;grid-template-columns:.85fr 1.3fr;gap:70px;align-items:start}.question-doodle{font:210px/1 Playful;color:#d9c6ed;margin:30px 0 0 45px;transform:rotate(-13deg)}.faq-list details{border-bottom:1px solid #e0d4c3;padding:20px 0}.faq-list details:first-child{border-top:1px solid #e0d4c3}.faq-list summary{display:flex;gap:15px;align-items:center;list-style:none;cursor:pointer;font-size:16px;font-weight:600;line-height:1.65}.faq-list summary::-webkit-details-marker{display:none}.question-number{font:22px Playful;color:#a28cb6}.faq-plus{margin-left:auto;color:#9c81b4;font:26px Playful;transition:transform .2s}.faq-list details[open] .faq-plus{transform:rotate(45deg)}.faq-list details p{margin:15px 0 2px 41px;font-size:14px}.release-paper{display:grid;grid-template-columns:165px 1fr;gap:32px;background:#fffef7;padding:46px;border:1px solid #e5d9c4;border-radius:18px 40px 24px 32px;box-shadow:7px 9px 0 #f1e5c7;position:relative}.release-paper:before{content:'';position:absolute;top:-13px;left:35%;width:140px;height:32px;background:#e8dcf9b0;transform:rotate(-3deg)}.release-stamp{display:flex;flex-direction:column;align-items:center;gap:14px;border-right:1px dashed #e4d5bf;padding-right:24px}.release-stamp>span{display:block;background:#ffe870;border:1px solid #e6cd53;border-radius:50%;width:128px;height:128px;text-align:center;font:24px/128px Playful;transform:rotate(-10deg)}.release-stamp time{font-size:12px;color:var(--muted)}.release-stamp i{font:60px Playful;color:#bc9cce;margin-top:30px;font-style:normal}.release-body{min-width:0}.release-body h3{margin-top:0}.release-body p,.release-body li{font-size:14px;line-height:2;color:var(--muted);overflow-wrap:anywhere}.release-body h4{font-size:19px;line-height:1.7;margin:30px 0 10px}.release-body ul{padding-left:22px}.release-body li+li{margin-top:12px}.release-body a{color:#806195;text-decoration:underline;text-underline-offset:4px}.release-body code{font-size:.88em;white-space:nowrap;overflow-wrap:normal;word-break:normal;display:inline-block;max-width:100%;overflow-x:auto;vertical-align:baseline;padding:0 .32em;border:1px solid #dfd1e6;border-radius:5px;background:#f0e8f5;color:#543b65;font-family:Consolas,'Courier New',monospace;line-height:1.5}.release-full{border-top:1px dashed #dbcbbb;margin:25px 0;padding:20px 0 0}.release-full>summary{cursor:pointer;font-size:15px;color:#624574;line-height:1.7}.release-full>summary span{float:right}.release-extra{background:#faf3df;padding:15px;border-radius:14px;margin:20px 0}.text-link{font-size:13px;display:inline-flex;align-items:center;gap:8px;color:#70507f;line-height:1.8;border-bottom:1px solid #bd9fd0;padding-bottom:2px}.reference-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}.reference-card{position:relative;display:flex;flex-direction:column;min-width:0;background:#fffef8;border:1px solid #dfd1e4;border-radius:18px;padding:18px;box-shadow:3px 5px 0 #e8deeb}.reference-card h3{font-size:21px;line-height:1.4;margin:12px 0}.reference-card .section-label{align-self:flex-start;margin:0;padding:5px 10px;font-size:11px}.reference-card:nth-child(2){background:#f1eaf8}.reference-card:nth-child(3){background:#fff3d1}.reference-card:nth-child(4){background:#edf3eb}.reference-card p{font-size:13px;line-height:1.75;margin:10px 0}.reference-card details{margin:10px 0;font-size:12px}.reference-card summary{cursor:pointer;color:#725b81}.reference-card .citation{font-size:12px;overflow-wrap:anywhere}.reference-card .text-link{align-self:flex-start;margin-top:auto;padding-top:8px;font-size:12px}.methods-note{max-width:800px;margin:25px auto;text-align:center;font-size:13px!important}.feedback-paper{background:#f3eafa;border:1.5px solid #d9c7e6;border-radius:35px 22px 34px 25px;padding:32px;box-shadow:6px 7px 0 #e2d2ec;transform:rotate(.6deg)}.feedback-paper label{display:block;margin-bottom:9px;font-size:14px}.feedback-paper input,.feedback-paper textarea{width:100%;border:1px solid #d5c7dc;border-radius:12px;background:#fffdf7;color:var(--ink);padding:13px 16px;margin:0 0 20px;line-height:1.7}.feedback-paper textarea{resize:vertical;min-height:130px}.feedback-paper .feedback-privacy,.feedback-paper .feedback-alternative{font-size:12px;line-height:1.8;margin:0 0 20px}.feedback-paper .feedback-alternative{margin:20px 0 0}.feedback-doodle{display:block;font:140px/1 Playful;color:#ddc6a4;transform:rotate(-15deg);margin:35px 0 0 80px}.pill-link{display:inline-flex;gap:30px;align-items:center;padding:13px 23px;border:1.5px solid var(--ink);border-radius:40px;background:var(--yellow);font-size:14px;font-weight:600;box-shadow:0 4px 0 var(--ink);transition:transform .2s}.pill-link:hover{transform:translateY(-3px)}.contact-section{border:1.5px solid #eadcc4;background:#fff5d9;border-radius:40px 65px 35px 65px;padding:45px 50px;isolation:isolate}.contact-section:before{content:'✧';font:80px/1 Playful;color:#b495c8;position:absolute;right:50px;top:25px;transform:rotate(12deg);z-index:-1}.contact-intro h2{font-size:40px;margin-bottom:12px}.contact-intro p{font-size:14px;margin-bottom:30px}.contact-cards{display:grid;grid-template-columns:1.2fr 1fr;gap:20px}.contact-card{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fffdf7;border:1px solid #dacbb6;border-radius:20px;padding:23px 20px;text-align:left;color:var(--ink);cursor:pointer;box-shadow:0 4px 0 #e7d9bd;transition:transform .2s;min-width:0}.contact-card:hover{transform:translateY(-3px) rotate(-.5deg)}.contact-card small{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.contact-card strong{font-size:17px;font-weight:500;overflow-wrap:anywhere}.contact-icon{font:36px Playful;color:#a387b7}.qq-card{background:#ece6f6}.copy-status{font-size:12px!important;margin-bottom:0;min-height:20px}
@media(min-width:801px) and (max-width:1100px){.site-header{flex-wrap:wrap;justify-content:center}.site-header nav{width:100%;justify-content:center;gap:26px}.faq-section,.feedback-section{gap:30px}.content-section{width:calc(100% - 70px)}}
@media(max-width:800px){.site-header{width:calc(100% - 30px);border-radius:28px;padding:14px 15px;gap:14px;flex-direction:column}.site-header nav{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:0 8px;text-align:center;font-size:12px}.site-header nav>a{padding:9px 0}.site-header .brand{font-size:22px}.site-header .brand img{width:38px;height:38px}.nav-tooltip{display:none}.download-tooltip{width:225px;font-size:12px}.download.secondary .download-tooltip{left:auto;right:0}.content-section{width:calc(100% - 40px);margin:75px auto}.content-section h2{font-size:35px}.content-section .section-heading{margin-bottom:38px}.content-section .section-heading p{font-size:13px}.lab-grid{grid-template-columns:1fr;gap:38px}.lab-card,.continuum-card{padding:27px 20px 23px;transform:none;grid-column:auto;border-radius:28px}.lab-title h3{font-size:27px}.lab-card p{font-size:13px}.lab-doodle{font-size:45px}.continuum-labels{margin-top:22px}.continuum{display:flex;flex-wrap:wrap;justify-content:center;gap:17px 9px}.continuum .sound-option{flex:0 0 calc(25% - 7px);transform:none!important}.continuum .sound-play{padding:12px 3px;font-size:12px;gap:5px;border-radius:14px}.continuum .mini-wave{height:20px;gap:1px}.continuum .sound-detail{font-size:10px}.lab-recipe p{font-size:12px}.vowel-choices{margin:26px 0 32px;gap:15px}.vowel-choices .sound-play{font-size:35px}.faq-section,.feedback-section{grid-template-columns:1fr;gap:25px}.question-doodle,.feedback-doodle{position:absolute;right:8px;bottom:0;font-size:90px;margin:0;opacity:.7;z-index:-1}.faq-list summary{font-size:14px;gap:10px}.faq-list details{padding:17px 0}.faq-list details p{font-size:13px;margin-left:31px}.release-paper{grid-template-columns:1fr;padding:27px 22px;gap:22px}.release-stamp{border:none;padding:0;flex-direction:row;justify-content:space-between}.release-stamp>span{width:76px;height:76px;line-height:76px;font-size:19px}.release-stamp i{font-size:35px;margin:0}.release-body h3{font-size:25px}.release-body p,.release-body li{font-size:13px}.release-body h4{font-size:17px}.methods-note{text-align:left;font-size:12px!important}.feedback-paper{padding:25px 21px;transform:none}.contact-section{padding:30px 22px;border-radius:32px}.contact-section:before{font-size:55px;right:18px;top:18px}.contact-intro h2{font-size:31px}.contact-cards{grid-template-columns:1fr;gap:17px}.contact-card{padding:19px 15px;gap:10px}.contact-card strong{font-size:15px}.contact-icon{font-size:29px}.contact-card small{font-size:11px}}
@media(prefers-reduced-motion:reduce){.lab-card,.reference-card,.feedback-paper{transform:none}.content-section *,.nav-tooltip,.download-tooltip{transition:none!important}}

/* Two real voices introduce the continuum; the listening controls stay visible. */
.lab-card .corpus-source{font-size:13px;line-height:1.7;color:var(--muted);margin-top:12px}
.original-pair{display:grid;grid-template-columns:.7fr 1.3fr;gap:28px;align-items:center;margin:24px 0 12px;padding:20px 24px;background:#fffdf6;border:1px dashed #bea8cf;border-radius:20px 28px 16px 24px}
.original-caption{font:27px/1.4 Playful;color:#806296;max-width:180px;transform:rotate(-3deg)}
.release-selector{display:flex;align-items:center;gap:18px;margin:0 0 25px 18px}.release-selector>span{font:22px Playful;color:#9374aa;transform:rotate(-4deg)}.release-tabs{display:flex;gap:12px;flex-wrap:wrap}.release-tabs button{padding:10px 22px;border:1.5px solid #d9c6b8;border-radius:17px 13px 18px 12px;background:#fffaf0;color:var(--ink);cursor:pointer;box-shadow:0 3px 0 #e4d2b7}.release-tabs button[aria-selected=true]{background:#ffe870;border-color:#b49446;transform:rotate(2deg)}.release-paper[hidden]{display:none}.release-content>h4{padding-top:12px}.release-table{overflow-x:auto;margin:24px 0}.release-table table{width:100%;border-collapse:collapse;font-size:13px;color:var(--muted)}.release-table th,.release-table td{text-align:left;line-height:1.8;border-bottom:1px solid #e6d9c4;padding:12px 10px}.release-table th{background:#fff2c7;color:var(--ink)}.release-table td:first-child{min-width:115px}.release-table code{word-break:normal}.release-extra[open]>summary{margin-bottom:12px}.release-body{overflow-wrap:anywhere}
.endpoint-choices{grid-template-columns:1fr 1fr;gap:24px}.endpoint-choices .sound-play{background:#fff3ba}.endpoint-choices .sound-option:last-child .sound-play{background:#e9eefb}.endpoint-choices .sound-play[aria-pressed=true]{background:#ffe966}.endpoint-choices .mini-wave{height:22px}
/* A private note that shares the application's email-verified feedback inbox. */
.feedback-section{grid-template-columns:.75fr 1.25fr;gap:55px}.feedback-paper{min-width:0;transform:rotate(.35deg)}
.feedback-paper [hidden]{display:none!important}.feedback-paper button{cursor:pointer}.feedback-paper button:disabled{cursor:default;opacity:.55}
.feedback-inline{display:flex;gap:10px;align-items:stretch;margin-bottom:20px}.feedback-inline input{min-width:0;flex:1;margin:0}.note-button{border:1px solid #cbb6d9;border-radius:12px;background:#fffcf4;color:#62456e;padding:10px 13px;white-space:nowrap;font-size:13px!important}.note-button:hover{background:#fff1b0}
.feedback-route{display:flex;flex-wrap:wrap;gap:8px;margin:25px 0 15px}.feedback-route span{font-size:12px;background:#eee3f7;padding:8px 12px;border-radius:8px;transform:rotate(-2deg)}.feedback-route span:nth-child(2){background:#fff0b1;transform:rotate(2deg)}
.feedback-small{font-size:12px!important}.feedback-paper .feedback-small{margin:0 0 18px}.feedback-doodle{font-size:130px}
#feedback-identity{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:18px;margin-bottom:22px;border-bottom:1px dashed #ccb8d8}#feedback-identity>span{min-width:0}#feedback-email-label{font-size:14px;overflow-wrap:anywhere}#feedback-identity small{display:block;font-size:11px;color:#6b8761;margin-top:5px}
.feedback-attachments{margin:0 0 20px}.feedback-attachments input{font-size:12px;margin:0 0 6px;padding:10px}.feedback-attachments small{font-size:11px;color:var(--muted)}.quiet-button{border:0;background:transparent;text-decoration:underline;color:#77548b;font-size:12px!important;padding:4px 8px}
#feedback-previews{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}#feedback-previews img{width:72px;height:60px;object-fit:cover;border-radius:9px;border:1px solid #ccb8d8}
.feedback-paper .feedback-mail-choice{display:flex;align-items:center;gap:9px;font-size:12px;margin:14px 0}.feedback-mail-choice input{width:16px;height:16px;margin:0;accent-color:#9473b0}.feedback-status{font-size:12px!important;margin:16px 0 0;min-height:24px}.feedback-status.is-error{color:#9d3c4b!important}
#feedback-history{border-top:1px dashed #c8b4d6;margin-top:22px;padding-top:17px}#feedback-history summary{cursor:pointer;font-size:14px}.feedback-history-tools{display:flex;justify-content:flex-end;margin:12px 0}#feedback-messages{max-height:420px;overflow:auto;overscroll-behavior:contain}.feedback-message{padding:14px;border-radius:16px;background:#fffdf6;margin-bottom:12px;border:1px solid #dfd1e8}.feedback-message.from-author{background:#fff4c4}.feedback-message header{display:flex;justify-content:space-between;gap:10px;font-size:12px}.feedback-message time{font-size:10px;color:var(--muted)}.feedback-message p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;margin:10px 0 0}.feedback-message img{max-width:100%;max-height:260px;object-fit:contain;border-radius:8px;margin-top:10px}.feedback-empty{font-size:12px!important}
/* A compact letter and a lilac gathering card, instead of two long empty bars. */
.contact-section{display:grid;grid-template-columns:.65fr 1.65fr;gap:38px;align-items:center;background:transparent;border:0;padding:22px 0;margin:110px auto 90px;border-radius:0}
.contact-section:before{display:none}.contact-intro h2{font-size:40px}.contact-intro p{font-size:14px;margin:12px 0}.contact-trail{display:block;font:65px/1 Playful;color:#c2a4d8;transform:rotate(-10deg);padding:12px 25px}
.contact-cards{display:grid;grid-template-columns:1.08fr 1fr;gap:20px;position:relative;margin:0}
.contact-card{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:left;gap:0;padding:23px 24px 21px;min-width:0;border:1px solid #decea9;border-radius:15px 25px 20px 24px;background:#fff8dc;box-shadow:3px 6px 0 #e8dbb8;transform:rotate(-2deg);transition:transform .2s,box-shadow .2s}
.contact-card:hover{transform:rotate(-1deg) translateY(-5px);box-shadow:4px 10px 0 #e8dbb8}.contact-card.qq-card{background:#eee5f8;border-color:#d4bfe4;box-shadow:3px 6px 0 #deceeb;transform:rotate(2deg) translateY(12px)}.contact-card.qq-card:hover{transform:rotate(1deg) translateY(7px)}
.contact-card-top{display:flex;align-items:center;gap:10px;border-bottom:1px dashed #d9c8a3;padding-bottom:14px}.qq-card .contact-card-top{border-color:#cbb6da}.contact-icon{font-size:30px;line-height:1;color:#ab91be}.contact-card-top small{font-size:10px;letter-spacing:.1em}.contact-arrow{margin-left:auto;color:#8f729f}.contact-card h3{font-size:25px;margin:18px 0 8px}.contact-card p{font-size:12px;line-height:1.85;margin:0 0 19px}.contact-card strong{font-size:15px;overflow-wrap:anywhere;line-height:1.6}.qq-card strong{font-weight:600;font-family:inherit;font-size:27px;line-height:1.4;letter-spacing:.04em;font-variant-numeric:tabular-nums}.contact-action{display:block;font-size:11px;margin-top:14px;padding-top:12px;border-top:1px solid #dacaac}.qq-card .contact-action{border-color:#d3bfdf}.contact-cards .copy-status{grid-column:1/-1;font-size:12px;min-height:24px;margin:2px 0 0;text-align:center}
@media(max-width:900px){.contact-section{grid-template-columns:1fr;gap:20px}.contact-intro h2 br{display:none}.contact-intro p br{display:none}.contact-trail{display:none}.contact-cards{max-width:700px}.feedback-section{gap:30px}}
@media(max-width:650px){.original-pair{grid-template-columns:1fr;gap:12px;padding:17px}.original-caption{font-size:21px;max-width:none;transform:none}.endpoint-choices{gap:14px}.feedback-section{grid-template-columns:1fr}.feedback-inline{flex-wrap:wrap}.feedback-inline input{flex-basis:100%}.feedback-inline .note-button{width:100%}.feedback-paper{padding:24px 20px}.feedback-route{margin-top:18px}.feedback-doodle{display:none}#feedback-identity{align-items:flex-start;flex-direction:column}.contact-section{padding:0}.contact-intro h2{font-size:32px}.contact-cards{grid-template-columns:1fr;gap:25px;padding:0 5px}.contact-card{padding:20px 23px}.contact-card.qq-card{transform:rotate(1.5deg)}.contact-card h3{margin-top:14px}.contact-card p br{display:none}.contact-card p{margin-bottom:12px}.contact-card strong{font-size:16px}.qq-card strong{font-size:26px}.contact-cards .copy-status{margin-top:0}}
@media(prefers-reduced-motion:reduce){.contact-card,.contact-card.qq-card,.contact-card:hover,.contact-card.qq-card:hover{transform:none}}
@media(max-width:500px){.site-header nav>a:not(.github-link){display:block}}

.endpoint-choices{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1rem}

/* A small bookmark follows the reader; the page itself keeps its breathing room. */
.site-header{max-width:1380px;padding:17px 22px;border:1px solid #e9dfd1;border-radius:25px 34px 26px 32px;background:#fffef9;box-shadow:0 5px 0 #ede4d5,0 12px 32px #38234406;gap:22px;margin-top:24px}.site-header .brand{font-size:25px;gap:12px}.site-header .brand img{width:43px;height:43px;border-radius:14px;transform:rotate(-5deg)}.site-header nav{gap:3px;font-size:13px;font-weight:500}.site-header nav>a{padding:12px 14px;border-radius:14px;transition:background .2s,transform .2s}.site-header nav>a:nth-child(1){background:#fff2ab;transform:rotate(-2deg)}.site-header nav>a:nth-child(3){background:#f0e6f8;transform:rotate(1.5deg)}.site-header nav>a:hover,.site-header nav>a:focus-visible{background:#f1e6f8;transform:translateY(-2px) rotate(-1deg)}.site-header nav>a:nth-child(1):hover{background:#ffe96b}.site-header nav>a:before{content:'';display:inline-block;width:5px;height:5px;margin:0 7px 2px 0;border-radius:50%;background:#ae95bf}.site-header nav>a:nth-child(even):before{background:#d9ac78}.site-header .nav-tooltip{font-weight:400;white-space:normal}
.reading-dock{position:fixed;right:20px;bottom:28px;z-index:22;display:flex;flex-direction:column;gap:10px;align-items:center}.reading-dock[hidden],.reading-menu[hidden]{display:none}.reading-dock button{font:inherit;color:var(--ink);cursor:pointer}.reading-toggle{width:58px;padding:10px 5px 8px;background:#fffdf6;border:1px solid #d1bfe0;border-radius:18px 18px 13px 18px;box-shadow:3px 4px 0 #e5d8f0;font-size:11px!important;display:grid;justify-items:center;gap:4px}.reading-toggle svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}.reading-toggle[aria-expanded=true]{background:#eee0fa}.reading-top{width:58px;height:66px;position:relative;border:0;background:transparent;padding:0}.reading-ring{position:absolute;inset:0 5px auto;width:48px;height:48px;fill:#fff3a9;stroke-width:2}.ring-track{stroke:#eadbb4}.ring-fill{fill:none;stroke:#9674b0;stroke-dasharray:var(--reading-progress,0) 100;transform:rotate(-90deg);transform-origin:center}.reading-face{position:absolute;top:4px;left:0;right:0;font-size:29px;line-height:36px;transition:transform .2s}.reading-top:hover .reading-face{transform:translateY(-3px)}.reading-top-label{position:absolute;bottom:0;left:0;right:0;font-size:10px;letter-spacing:.1em;color:#76627d}.reading-menu{position:absolute;bottom:0;right:77px;width:250px;max-height:min(650px,calc(100dvh - 50px));overflow-y:auto;padding:21px;background:#fffdf6;border:1.5px solid #b7a0c5;border-radius:24px 22px 8px 25px;box-shadow:6px 7px 0 #e9ddf1,0 12px 35px #33223a12}.reading-menu-title{font:23px Playful;margin:0 0 17px}.reading-menu-title>span{float:right;color:#bea06c}.reading-menu nav{display:grid;gap:3px}.reading-menu nav a{display:flex;gap:14px;padding:9px 11px;border-radius:12px;font-size:13px}.reading-menu nav a>span{font:12px Georgia,serif;color:#a58bb2}.reading-menu nav a:hover,.reading-menu nav a[aria-current=location]{background:#f0e5f8}.reading-menu nav a[aria-current=location]{box-shadow:inset 3px 0 #a78abc}
@media(max-width:1150px){.site-header .brand{font-size:21px}.site-header nav>a{padding:10px 9px}.site-header nav>a:before{display:none}}
@media(max-width:800px){.site-header{width:calc(100% - 32px);padding:16px;gap:12px;border-radius:25px;margin-top:16px}.site-header .brand{font-size:23px}.site-header nav{gap:5px;width:100%}.site-header nav>a{font-size:12px;padding:10px 3px}.site-header nav>a:nth-child(1),.site-header nav>a:nth-child(3){transform:none}.reading-dock{right:10px;bottom:max(15px,env(safe-area-inset-bottom));gap:6px}.reading-toggle{width:45px;padding:8px 3px;font-size:10px!important}.reading-toggle svg{width:18px;height:18px}.reading-top{width:45px;height:53px}.reading-ring{width:42px;height:42px;left:1.5px}.reading-face{top:1px;font-size:26px}.reading-top-label{font-size:9px}.reading-menu{right:57px;width:min(245px,calc(100vw - 82px));padding:17px}.reading-menu nav a{padding:8px 9px}}
@media(prefers-reduced-motion:reduce){.reading-dock *{transition:none!important}.site-header nav>a{transform:none!important}}
@media print{.reading-dock{display:none!important}}

.reconstruction-card{grid-column:1/-1;background:#f9ecdf;border-color:#dcc2aa;box-shadow:5px 7px 0 #ead4c0;padding:35px}.reconstruction-card>.lab-title .lab-doodle{color:#b88c79;transform:rotate(13deg)}.reconstruction-card>.paper-tab{background:#e1ecd9;transform:rotate(1deg)}.reconstruction-card>p{max-width:780px}.reconstruction-examples{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:26px 0}.reconstruction-example{min-width:0;padding:19px;background:#fffdf7;border:1px solid #e4d4c4;border-radius:21px 15px 23px 16px;position:relative;display:flex;flex-direction:column}.reconstruction-example:nth-child(2){transform:translateY(5px)}.example-index{font:italic 18px Georgia,serif;color:#ae8d79}.reconstruction-example h4{font:23px/1.4 Playful;margin:8px 0 17px}.reconstruction-example figure{margin:0}.reconstruction-example figure img{display:block;width:100%;height:225px;object-fit:contain;background:white;border-radius:8px}.reconstruction-example figcaption{font-size:10px;line-height:1.6;color:#8e796f;margin-top:10px}.reconstruction-example>p{font-size:12px;line-height:1.85;min-height:67px}.reconstruction-player{margin-top:auto}.reconstruction-player .sound-play{background:#f9edcf;border-color:#bca17d;box-shadow:0 4px 0 #d4bc9d}.reconstruction-player .mini-wave{color:#b2947c}.example-source{border-top:1px dashed #e4d5c6;padding-top:12px;margin-top:16px;font-size:11px;line-height:1.7}.example-source summary{cursor:pointer;color:#866b80}.example-source p{font-size:11px;line-height:1.8;overflow-wrap:anywhere}.example-source a{text-decoration:underline;text-underline-offset:4px}
@media(max-width:800px){.reconstruction-card{padding:27px 20px}.reconstruction-examples{grid-template-columns:1fr;gap:20px}.reconstruction-example:nth-child(2){transform:none}.reconstruction-example figure img{height:auto;max-height:300px}.reconstruction-example>p{min-height:0}.reconstruction-example h4{font-size:23px}}

.note-wish>span{white-space:nowrap}
@media(max-width:400px){.speech-bubble .note-wish{margin-left:-17px;margin-right:-17px;letter-spacing:0}}

.example-credit{font-size:10px;color:#8e6b85;margin-top:7px;text-decoration:underline;text-underline-offset:3px}

/* Clear, readable navigation with the repository shortcut restored. */
.site-header nav{font-size:20px;font-weight:600;gap:4px}.site-header nav>a{padding:12px 12px}.site-header .header-github{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1.5px solid #ccb5de;background:#f1e5f8;border-radius:15px 18px 14px 17px;box-shadow:0 3px 0 #e3d3ed;margin-left:6px}.site-header nav>.header-github:before{display:none}.header-github svg{width:21px;height:21px;fill:currentColor}.site-header .nav-tooltip{font-size:13px}
@media(max-width:1250px) and (min-width:801px){.site-header{flex-wrap:wrap;justify-content:center;gap:13px}.site-header nav{width:100%;justify-content:center;font-size:19px}.site-header nav>a{padding:11px 12px}.site-header .brand{font-size:25px}}
@media(max-width:800px){.site-header nav{font-size:16px;gap:7px 4px}.site-header nav>a{font-size:16px;padding:11px 6px}.site-header nav>.header-github{grid-column:1/-1;justify-self:center;padding:10px 19px;margin:3px 0 0;font-size:17px}.site-header .header-github svg{width:19px;height:19px}}
@media(max-width:360px){.site-header nav>a{font-size:15px;padding:11px 3px}}

/* Keep edge navigation hints inside the viewport, including enlarged text. */
.site-header nav>a:first-child .nav-tooltip{left:0;transform:translateY(5px)}
.site-header nav>a:last-child .nav-tooltip{left:auto;right:0;transform:translateY(5px)}
.site-header nav>a:first-child:hover .nav-tooltip,.site-header nav>a:first-child:focus-visible .nav-tooltip,.site-header nav>a:last-child:hover .nav-tooltip,.site-header nav>a:last-child:focus-visible .nav-tooltip{transform:translateY(0)}

.article-button{display:flex;width:max-content;align-items:center;gap:14px;margin-top:24px;max-width:100%;padding:13px 18px;border:1.5px solid #271331;border-radius:24px;background:#ffe86b;color:#271331;box-shadow:0 4px 0 #271331;font-size:15px;font-weight:700;text-decoration:none;transition:transform .2s,box-shadow .2s}.article-button:hover{transform:translateY(-2px);box-shadow:0 6px 0 #271331}.article-button:active{transform:translateY(2px);box-shadow:0 2px 0 #271331}.article-button:focus-visible{outline:3px solid #8c71b5;outline-offset:5px}.audio-origin{font-size:13px!important;color:#826194;margin:16px 0 0!important}@media(prefers-reduced-motion:reduce){.article-button{transition:none}}

.stack-4 .stack-deck{aspect-ratio:1.25}
.stack-4 .stack-card{width:82%}
.stack-4 .stack-card:nth-child(1){--left:15%;--top:1%;--rotation:8deg}
.stack-4 .stack-card:nth-child(2){--left:8%;--top:7%;--rotation:-6deg}
.stack-4 .stack-card:nth-child(3){--left:4%;--top:15%;--rotation:4deg}
.stack-4 .stack-card:nth-child(4){--left:0%;--top:23%;--rotation:-3deg}

/* The next experiment, on a warm notebook page. */
.upcoming-section{padding-top:26px}
.site-header{width:min(1480px,calc(100% - 72px));max-width:1480px}
.site-header nav>a:nth-child(3){background:transparent;transform:none}
.site-header nav>a[href="#updates"]{background:#f0e6f8;transform:rotate(1.5deg)}
.site-header nav>a[href="#next"]{background:#e8efe2;transform:rotate(1deg)}
.site-header nav>a:hover,.site-header nav>a:focus-visible{background:#f1e6f8;transform:translateY(-2px) rotate(-1deg)}
.upcoming-paper{position:relative;padding:48px 50px 26px;background:#fffdf6;border:1.5px solid #c9b6d5;border-radius:32px 42px 29px 38px;box-shadow:7px 9px 0 #e9dff1;font-family:Playful,'Microsoft YaHei',sans-serif}
.upcoming-tab{position:absolute;top:-21px;left:43px;padding:9px 23px;background:#e8efe2;border:1px solid #bcccae;border-radius:8px 13px 7px 11px;transform:rotate(-3deg);font-size:22px;color:#526248}
.upcoming-intro{display:flex;justify-content:space-between;align-items:center;gap:24px}
.upcoming-section h2{font-family:Playful,'Microsoft YaHei',sans-serif;font-size:clamp(34px,3.6vw,49px);line-height:1.4;margin-bottom:24px}
.upcoming-stamp{position:relative;flex-shrink:0;padding:19px 27px;background:#fff2b2;border:1px solid #e3cf85;border-radius:21px 27px 17px 24px;transform:rotate(5deg);font-size:25px;text-align:center;line-height:1.6;color:#66512e}
.upcoming-stamp small{font-size:16px}.upcoming-stamp i{position:absolute;right:-12px;top:-23px;font-size:39px;font-style:normal;color:#a68bbb}
.upcoming-copy p{font-size:20px;line-height:1.85;color:var(--ink);margin:0 0 15px}
.upcoming-pipeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;list-style:none;margin:31px 0 23px;padding:0}
.upcoming-pipeline li{position:relative;padding:23px 24px 16px;background:#efe7f5;border:1px solid #d5c2e1;border-radius:19px 24px 17px 22px;min-width:0}
.upcoming-pipeline li:nth-child(2){background:#f6edda;border-color:#e1cfaa}.upcoming-pipeline li:nth-child(3){background:#eaf0e4;border-color:#c6d3ba}
.upcoming-step{font-size:16px;color:#7b658a}.upcoming-section .upcoming-pipeline h3{font:25px/1.5 Playful,'Microsoft YaHei',sans-serif;margin:10px 0 7px}
.upcoming-model{font:600 16px/1.7 'Trebuchet MS','Microsoft YaHei',sans-serif;color:#71588c}.upcoming-pipeline p{font-size:17px;line-height:1.8;margin:12px 0 0;color:#655c6a}
.upcoming-arrow{position:absolute;right:-20px;top:42%;z-index:1;font:30px Playful;color:#90769d}
.upcoming-section .upcoming-training{font-size:17px;line-height:1.85;margin:0;color:#7c6988}.upcoming-training>span{margin:0 7px;color:#b79b60}.upcoming-training strong{font-weight:400;color:#645073}
.upcoming-section .upcoming-wish{font-size:21px;line-height:1.9;margin:25px 0 30px;padding:19px 24px;background:#fff5c9;border-radius:15px 21px 16px 19px;color:#665738}
.upcoming-results{display:grid;grid-template-columns:1fr 1fr;gap:22px}.upcoming-results>div{position:relative;padding:17px 23px;border:1.5px dashed #cdbbd9;border-radius:16px 21px 18px 14px;background:#fcf8ff}
.upcoming-results>div>span{position:absolute;right:19px;top:12px;font-size:33px;color:#b89bc5}.upcoming-section .upcoming-results h3{font:23px/1.6 Playful,'Microsoft YaHei',sans-serif;margin:0 32px 4px 0}.upcoming-results p{font-size:17px;margin:0;color:#7c6988}
.upcoming-section .upcoming-signoff{text-align:right;font-size:18px;color:#9271a3;margin:22px 0 0}.upcoming-signoff span{margin-left:10px;font-size:26px}
@media(max-width:1400px) and (min-width:801px){.site-header{flex-wrap:wrap;justify-content:center;gap:13px}.site-header nav{width:100%;justify-content:center}.site-header .brand{font-size:25px}}
@media(max-width:1000px) and (min-width:801px){.site-header nav>a{padding:11px 7px}.site-header nav>a:before{display:none}}
@media(max-width:800px){.site-header{width:calc(100% - 32px)}.site-header nav>.header-github{grid-column:auto;margin:0;padding:11px 6px;font-size:16px}.site-header .header-github svg{width:17px;height:17px}.site-header nav>a[href="#updates"],.site-header nav>a[href="#next"]{transform:none}.upcoming-paper{padding:39px 24px 23px;border-radius:24px 29px 23px 27px;box-shadow:4px 6px 0 #e9dff1}.upcoming-tab{left:23px;font-size:20px}.upcoming-intro{align-items:flex-start;flex-direction:column;gap:0}.upcoming-section h2{font-size:35px;margin-bottom:18px}.upcoming-stamp{font-size:19px;padding:10px 19px;margin:0 0 24px;transform:rotate(3deg)}.upcoming-stamp small{font-size:14px}.upcoming-stamp i{font-size:30px;top:-17px}.upcoming-copy p{font-size:18px}.upcoming-pipeline{grid-template-columns:1fr;gap:23px;margin:24px 0}.upcoming-pipeline li{padding:18px 22px}.upcoming-arrow{right:24px;top:auto;bottom:-27px;transform:rotate(90deg)}.upcoming-section .upcoming-wish{font-size:19px;padding:16px 19px}.upcoming-results{grid-template-columns:1fr;gap:16px}.upcoming-section .upcoming-signoff{font-size:16px;text-align:left}}
@media(max-width:360px){.site-header nav>.header-github{font-size:15px;padding:11px 3px;gap:5px}.upcoming-paper{padding-left:19px;padding-right:19px}.upcoming-section h2{font-size:30px}.upcoming-copy p{font-size:17px}}
@media(prefers-reduced-motion:reduce){.site-header nav>a[href="#updates"],.site-header nav>a[href="#next"]{transform:none}}

/* Compact navigation and matched short-window listening comparisons. */
.site-header nav{font-size:18px;gap:3px}.site-header nav>a{padding:11px 10px}
.site-header nav>a:nth-child(3){background:transparent;transform:none}
.upcoming-reference{display:grid;gap:8px;margin:25px 0 30px;padding:19px 23px;border-left:3px solid #ae95c0;background:#f6f0fa;border-radius:0 15px 15px 0}
.upcoming-reference>span{font-size:18px;color:#826098}.upcoming-reference cite{font:500 16px/1.7 'Trebuchet MS','Microsoft YaHei',sans-serif;overflow-wrap:anywhere;color:var(--ink)}.upcoming-reference small{font:12px/1.7 'Microsoft YaHei',sans-serif;color:var(--muted)}
.next-comparison-heading{margin:35px 0 24px}.upcoming-section .next-comparison-heading h3{font:28px/1.5 Playful;margin:0 0 8px}.next-comparison-heading p{font-size:18px;margin:0}
.upcoming-comparisons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.next-example{min-width:0;padding:19px;background:#faf5ed;border:1px solid #dfcdb9;border-radius:18px 22px 17px 21px}
.next-example h4{font:600 16px/1.7 'Trebuchet MS','Microsoft YaHei',sans-serif;margin:0 0 13px;color:#61516a}.next-example figure{margin:0}.next-example figure img{width:100%;height:170px;object-fit:contain;background:#fff;border-radius:8px}.next-example figcaption{font:11px/1.7 'Microsoft YaHei',sans-serif;margin:10px 0 18px;color:#8e6b85;text-decoration:underline;text-underline-offset:3px}
.next-sounds{gap:13px}.next-sounds .sound-play{min-height:58px;padding:11px 9px;gap:5px;font:600 13px/1.6 'Microsoft YaHei',sans-serif;border-radius:12px;background:#fffdf7;border-color:#bda7c9;box-shadow:0 3px 0 #d8c7e2}.next-sounds .sound-option:nth-child(2) .sound-play{background:#f2eafb}.next-sounds .sound-option:nth-child(3) .sound-play{background:#fff2d5;border-color:#d4b77e;box-shadow:0 3px 0 #e8d3a8}.next-sounds .sound-option:nth-child(4) .sound-play{background:#eaf0e4;border-color:#b1c09f;box-shadow:0 3px 0 #cfdbc2}.next-sounds .sound-play>span:last-child{min-width:0;overflow-wrap:anywhere}.next-sounds .sound-detail{font:11px/1.7 'Microsoft YaHei',sans-serif;margin-top:9px}.next-sounds .mini-wave{height:23px;color:#b79ac7}
.next-comparison-settings{border-top:1px dashed #d6c7de;margin-top:22px;padding:17px 0 0;color:#80658f}.next-comparison-settings summary{cursor:pointer;font-size:17px}.next-comparison-settings p{font:13px/1.85 'Microsoft YaHei',sans-serif}
@media(max-width:1400px) and (min-width:801px){.site-header nav{font-size:18px}}
@media(max-width:800px){.site-header nav{font-size:16px}.site-header nav>a{font-size:16px;padding:11px 6px}.upcoming-comparisons{grid-template-columns:1fr;gap:23px}.next-example{padding:20px}.next-example figure img{height:220px}.next-sounds .sound-play{font-size:14px}.upcoming-reference{padding:15px 17px}.upcoming-reference cite{font-size:14px}.next-comparison-heading p{font-size:17px}}
@media(max-width:360px){.site-header nav>a{font-size:15px;padding:11px 3px}.next-sounds .sound-play{font-size:12px}.next-example{padding:16px}}
@media(min-width:1251px){.site-header{flex-wrap:nowrap;justify-content:space-between;gap:22px}.site-header nav{width:auto}}
.upcoming-pipeline{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.upcoming-pipeline li{padding:21px 19px 17px}.upcoming-section .upcoming-pipeline h3{font-size:23px}.upcoming-step{font-size:15px}
.next-figure-reference{font:13px/1.9 "Trebuchet MS","Microsoft YaHei",sans-serif;color:#80658f;margin:24px 0 18px}.next-figure-reference a{color:#8e6b85;text-underline-offset:3px}
.next-example .next-parameters{font:12px/1.85 'Microsoft YaHei',sans-serif;color:#80658f;margin:0 0 19px;padding:10px 12px;background:#f1eaf5;border-radius:10px}
.upcoming-section code{display:inline-block;max-width:100%;padding:.04em .3em;border-radius:5px;background:#efe5f6;color:#72528a;font:.92em/1.5 Consolas,monospace;white-space:nowrap;vertical-align:baseline;overflow-x:visible}
@media(max-width:800px){.upcoming-pipeline{grid-template-columns:1fr;gap:23px}.upcoming-pipeline li{padding:18px 22px}}

/* A little television for the tutorial channel. */
.tutorial-available:not(:disabled){background:#fff2ab;color:#473a28;border-color:#d2b942;cursor:pointer}.tutorial-available:hover,.tutorial-available[aria-pressed=true]{background:#ffe755;box-shadow:0 3px 0 #dbc449}.tutorial-channel:focus-visible,.tutorial-episodes button:focus-visible{outline:3px solid #806299;outline-offset:5px}
.tutorial-episodes{margin-top:18px;padding:15px 18px;background:#f2eaf8;border:1px solid #d4c2df;border-radius:15px 19px 14px 17px}.tutorial-episodes[hidden]{display:none}.tutorial-episodes>span{font-size:14px;color:#715a83}.tutorial-episodes>div{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.tutorial-episodes button{font:inherit;font-size:14px;padding:8px 14px;border:1px solid #c9b5d8;border-radius:10px;background:#fffdf6;color:#513f61;cursor:pointer}.tutorial-episodes button[aria-pressed=true]{background:#ffe755;border-color:#d2b942}.tutorial-episodes button:disabled{background:#eeece8;color:#8a8684;border-color:#c5c0ba;cursor:not-allowed}
.reference-catalog{margin-top:32px;border:1px solid #d8c6e5;border-radius:20px;background:#fffdf8;overflow:hidden}.reference-catalog>summary{cursor:pointer;padding:22px 26px;font-size:20px;font-weight:600;color:#513f61;background:#f1eaf6}.reference-catalog>summary span{float:right;font-size:13px;font-weight:400;margin-top:5px;color:#80658f}.reference-catalog-body{padding:24px}.reference-filters{display:flex;flex-wrap:wrap;gap:16px}.reference-filters label{display:grid;gap:8px;font-size:14px;color:#715a83;flex:1 1 220px;min-width:0}.reference-filters input,.reference-filters select{box-sizing:border-box;width:100%;min-width:0;font:inherit;font-size:16px;color:#433253;background:#fff;border:1px solid #d4c2df;border-radius:10px;padding:11px 12px}.reference-catalog .reference-count{font-size:14px;color:#80658f;margin:16px 0}.reference-results{max-height:680px;overflow:auto;scrollbar-gutter:stable;padding-right:16px;overscroll-behavior:contain}.reference-source-group>h3{font-size:21px;margin:10px 0 0;padding:12px 0;border-bottom:2px solid #e6daee;color:#715a83}.reference-source-group>h3 span{font-size:14px;font-weight:400}.reference-source{padding:22px 0;border-bottom:1px solid #e9e0ee;overflow-wrap:anywhere}.reference-source h4{font-size:18px;line-height:1.5;margin:0 0 8px}.reference-catalog .reference-source p{font:14px/1.8 'Microsoft YaHei',sans-serif;margin:10px 0;color:#62536b}.reference-source small{display:block;font-size:12px;line-height:1.8;color:#80658f}.reference-citation{white-space:pre-line;user-select:text}.reference-adaptation{margin:12px 0;font-size:14px}.reference-adaptation summary{cursor:pointer;color:#715a83}.reference-source-links{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:12px}.reference-source-links a,.reference-copy{font:13px/1.5 'Microsoft YaHei',sans-serif;color:#715a83;text-decoration:underline;text-underline-offset:4px}.reference-copy{border:0;background:transparent;padding:0;cursor:pointer}.reference-catalog [hidden]{display:none}.reference-catalog :focus-visible{outline:3px solid #806299;outline-offset:3px}
@media(max-width:800px){.reference-catalog>summary{padding:18px;font-size:18px}.reference-catalog>summary span{float:none;display:block;margin-left:20px}.reference-catalog-body{padding:18px}.reference-results{padding-right:10px;max-height:65vh}.reference-source h4{font-size:16px}.reference-source-group>h3{font-size:19px}}
.tutorial-heading{display:flex;align-items:center;gap:24px;margin-bottom:48px}.tutorial-section .tutorial-heading h2{font:48px/1.3 Playful,'Microsoft YaHei',sans-serif;margin:10px 0 0}.tutorial-construction{font:21px Playful,'Microsoft YaHei',sans-serif;transform:rotate(5deg);background:#fff0ad;border:1.5px dashed #b99a48;padding:12px 20px;border-radius:9px;color:#795b2f}.tutorial-construction>span{margin-left:12px}
.tutorial-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:46px;align-items:center}.tutorial-viewer{min-width:0;padding-top:25px}.tutorial-tv{position:relative;background:#dcd0f1;padding:18px 18px 0;border:2px solid #655675;border-radius:34px;box-shadow:5px 8px 0 #c7b9da,0 20px 38px #55416512}.tutorial-antenna{position:absolute;width:74px;height:35px;top:-36px;left:calc(50% - 37px)}.tutorial-antenna:before,.tutorial-antenna:after{content:'';position:absolute;bottom:0;left:35px;width:3px;height:44px;background:#655675;border-radius:3px;transform-origin:bottom;transform:rotate(-43deg)}.tutorial-antenna:after{height:36px;transform:rotate(40deg)}
.tutorial-screen{position:relative;aspect-ratio:16/9;overflow:hidden;background:#24202e;border:3px solid #655675;border-radius:20px}.tutorial-screen iframe{display:block;width:100%;height:100%;border:0}.tutorial-screen:fullscreen{width:100%;height:100%;aspect-ratio:auto;border:0;border-radius:0;background:#000}.tutorial-idle{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#f4eafa;background:radial-gradient(ellipse at center,#4b3b60,#292232);text-align:center;padding:15px}.tutorial-play-mark{display:grid;place-items:center;width:65px;height:65px;padding-left:5px;border-radius:50%;background:var(--yellow);color:#433253;font-size:26px;box-shadow:0 0 0 8px #ffe7550e;margin-bottom:21px}.tutorial-idle strong{font:25px Playful,'Microsoft YaHei',sans-serif}.tutorial-section .tutorial-idle p{font-size:14px;color:#c7b7d8;margin:12px 0 0}.tutorial-idle-spark{position:absolute;right:10%;top:15%;font-size:35px;color:#cfb5e8}
.tutorial-tv-chin{height:54px;display:flex;align-items:center;gap:17px;padding:0 7px;color:#655675;font:10px 'Trebuchet MS',sans-serif;letter-spacing:1.5px}.tutorial-tv-chin>span:first-child{margin-right:auto}.tutorial-tv-chin i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#97ad88;margin-right:7px;box-shadow:0 0 0 3px #b9c7ae55}.tutorial-speaker{width:58px;height:18px;background:repeating-linear-gradient(90deg,#9483a3 0 2px,transparent 2px 6px)}.tutorial-dial{width:27px;height:27px;border:2px solid #867497;border-radius:50%;background:#efe7fa;position:relative}.tutorial-dial:after{content:'';position:absolute;top:4px;left:11px;width:2px;height:16px;background:#867497;transform:rotate(35deg)}
.tutorial-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 22px;margin-top:25px}.tutorial-actions a,.tutorial-actions button{font:inherit;font-size:14px;color:#715a83;border:0;background:transparent;padding:6px 0;cursor:pointer;text-decoration:underline;text-underline-offset:5px}.tutorial-actions [hidden]{display:none}.tutorial-actions :focus-visible,.tutorial-intro:focus-visible{outline:3px solid #806299;outline-offset:5px}.tutorial-section .tutorial-status{font-size:13px;text-align:center;color:var(--muted);min-height:0;margin:10px 0 0}.tutorial-status:empty{display:none}
.tutorial-channel-grid{display:flex;flex-wrap:wrap;align-items:center;gap:13px 11px;padding:4px 7px 7px}.tutorial-channel{position:relative;min-height:43px;max-width:100%;font:18px/1.4 Playful,'Microsoft YaHei',sans-serif;padding:9px 15px;border:1.5px solid #c5c0ba;border-radius:10px 17px 9px 14px / 15px 9px 16px 10px;background:#eeece8;color:#8a8684;cursor:not-allowed;transform:rotate(-1deg)}.tutorial-channel:after{content:'';position:absolute;inset:3px 2px 2px 3px;border:1px solid #c5c0ba80;border-radius:14px 10px 16px 9px / 9px 16px 11px 14px;pointer-events:none}.tutorial-channel:nth-child(3n){transform:rotate(1.3deg);border-radius:16px 8px 14px 10px / 10px 16px 8px 15px}.tutorial-channel:nth-child(4n){transform:rotate(-1.6deg);margin-left:3px}.tutorial-intro{flex:0 0 calc(100% - 5px);margin-bottom:3px;display:flex;justify-content:space-between;align-items:center;min-height:47px;padding:10px 18px;background:var(--yellow);border:1.5px solid #d2b942;color:#473a28;font:23px Playful,'Microsoft YaHei',sans-serif;box-shadow:0 3px 0 #dbc449;cursor:pointer;transition:transform .15s,background .15s}.tutorial-intro:after{border-color:#c1a33480}.tutorial-intro:hover{background:#ffed7e;transform:translateY(-2px)}.tutorial-intro[aria-pressed=true]{box-shadow:inset 0 2px 0 #d2b942;transform:none}.tutorial-section .tutorial-coming{font-size:13px;color:#8a7e8f;margin:15px 0 0}
@media(min-width:801px) and (max-width:1450px){.site-header{flex-wrap:wrap;justify-content:center;gap:13px}.site-header nav{width:100%;justify-content:center}}
@media(min-width:801px) and (max-width:1000px){.site-header nav{gap:0;flex-wrap:wrap}.site-header nav>a{padding:11px 7px}}
@media(max-width:1000px){.tutorial-layout{gap:28px;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.tutorial-idle strong{font-size:21px}.tutorial-play-mark{width:50px;height:50px;margin-bottom:15px}}
@media(max-width:800px){.tutorial-layout{grid-template-columns:1fr;gap:32px}.tutorial-viewer{width:min(600px,100%);margin:auto}.tutorial-heading{gap:18px;margin-bottom:36px;flex-wrap:wrap}.tutorial-section .tutorial-heading h2{font-size:36px}.tutorial-construction{font-size:18px;padding:10px 14px}.tutorial-tv{padding:12px 12px 0;border-radius:25px;box-shadow:3px 5px 0 #c7b9da}.tutorial-screen{border-radius:15px}.tutorial-tv-chin{height:44px;gap:10px;font-size:9px;letter-spacing:1px}.tutorial-speaker{width:40px}.tutorial-channel{min-height:44px}}
@media(max-width:360px){.tutorial-play-mark{width:40px;height:40px;font-size:21px;margin-bottom:12px}.tutorial-idle strong{font-size:19px}.tutorial-section .tutorial-idle p{font-size:12px;margin-top:8px}.tutorial-idle-spark{font-size:25px;right:7%}.tutorial-construction{font-size:16px}}

/* A quiet pencil line, pale yellow brush mark and small hand-drawn sound. */
.chapter-divider{width:min(660px,calc(100% - 60px));height:80px;margin:0 auto;pointer-events:none;color:#ad94c5}
.chapter-divider svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.chapter-pencil{stroke:#bba8cc;stroke-width:2;opacity:.65}.chapter-wash{fill:#ffe980;fill-opacity:.65;stroke:none;transform:rotate(-5deg);transform-origin:330px 40px}.chapter-sound{stroke:#9677b4;stroke-width:4.5}
section:has(+ .chapter-divider){margin-bottom:40px}.chapter-divider+section{margin-top:40px}
@media(max-width:800px){.chapter-divider{width:calc(100% - 50px);height:58px}section:has(+ .chapter-divider){margin-bottom:30px}.chapter-divider+section{margin-top:30px}.tutorial-channel-grid{gap:13px 10px}.tutorial-channel{font-size:18px;padding:9px 12px}.tutorial-intro{font-size:23px}}

/* A compact source link lives with the footer metadata. */
.site-footer>div{align-items:center}.site-footer .footer-github{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:600;padding:6px 10px;border:1px solid #b8a24a;border-radius:11px 9px 12px 8px;color:#493c37}.footer-github svg{width:19px;height:19px}.footer-github:focus-visible{outline:3px solid #806299;outline-offset:4px}

/* Ambient movement stays on the hero; chapter motion happens once on arrival. */
@media(prefers-reduced-motion:no-preference){
.hero-art{transform:translate3d(calc(var(--pointer-x)*16px),calc(var(--pointer-y)*10px),0)}
.float-wrap{animation:hero-drift 7s ease-in-out infinite}.tile-r{animation-duration:8s;animation-delay:-2.4s}.tile-x{animation-duration:6.5s;animation-delay:-4.3s}
.annotation-card{animation:annotation-drift 8s ease-in-out -1.5s infinite}.hero-art .spark{animation:accent-breathe 5s ease-in-out infinite}.hero-art .spark-two{animation-delay:-2s}
.hero.motion-paused .float-wrap,.hero.motion-paused .annotation-card,.hero.motion-paused .spark,.hero.motion-paused .spectrum-scan,.hero.motion-paused .web-entry{animation-play-state:paused}
.phonetic-tile{transition:translate .4s ease,rotate .5s ease,scale .4s ease,filter .4s ease,box-shadow .4s ease}
.annotation-card{transition:scale .4s ease,filter .4s ease}
.lab-card,.reference-card,.next-example,.tutorial-tv,.release-paper{transition:scale .35s ease,box-shadow .35s ease}
.pill-link,.note-button,.quiet-button,.footer-github{transition:translate .2s ease,box-shadow .2s ease,background-color .2s ease}
.faq-list summary:after{transition:rotate .25s ease}.faq-list details[open] summary:after{rotate:45deg}
.chapter-divider svg{transition:opacity .4s ease}
}
@keyframes hero-drift{0%,100%{transform:translate3d(-3px,4px,0) rotate(-.5deg)}50%{transform:translate3d(6px,-25px,0) rotate(2deg)}}
@keyframes annotation-drift{0%,100%{translate:0 4px}50%{translate:-5px -11px}}
@keyframes accent-breathe{0%,100%{scale:.94;opacity:.78}50%{scale:1.08;opacity:1}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
.phonetic-tile:hover{translate:0 -9px;rotate:-5deg;scale:1.045;filter:brightness(1.055) saturate(1.07);box-shadow:inset 2px 3px 3px #fff9,inset -5px -9px 13px #3115531a,14px 30px 32px #39243d35}
.annotation-card:hover{scale:1.025;filter:brightness(1.035)}
.lab-card:hover,.reference-card:hover,.next-example:hover,.release-paper:hover{scale:1.008;box-shadow:4px 11px 0 #d9c9df66,0 16px 28px #5541650c}
.pill-link:hover,.note-button:hover,.quiet-button:hover,.footer-github:hover{translate:0 -3px}
.tutorial-tv:not(:has(iframe)):hover{scale:1.012;box-shadow:6px 11px 0 #c7b9da,0 24px 38px #55416520}
}
@media(max-width:800px) and (prefers-reduced-motion:no-preference){.hero-art{transform:none}.float-wrap{animation-name:hero-drift-small}}
@keyframes hero-drift-small{0%,100%{transform:translateY(3px) rotate(-.4deg)}50%{transform:translateY(-16px) rotate(1.4deg)}}
@media(prefers-reduced-motion:reduce){.motion-ready .reveal{opacity:1;translate:none}.hero-art{transform:none}.phonetic-tile,.annotation-card,.spark{translate:none;rotate:none;scale:none;filter:none}.lab-card,.reference-card,.next-example,.tutorial-tv,.release-paper{scale:none}.pill-link,.note-button,.quiet-button,.footer-github{translate:none}}

/* Public aggregate history, sharing the cream and violet website palette. */

/* Web entrance leads a single aligned action group. */
.hero-copy .download-actions,.hero-copy .download-note,.web-entry{width:min(440px,100%)}.hero-copy .download-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hero-copy .download{padding:0 14px;font-size:17px;gap:10px}.hero-copy .download-note{margin:20px 0 0;max-width:none}
.web-entry{display:flex;align-items:center;justify-content:center;gap:13px;min-height:76px;margin:0 0 22px;padding:14px 20px;border:2px solid #80619b;border-radius:28px;background:linear-gradient(135deg,#eee1ff,#e3d7f6);color:#4e3563;font-family:inherit;font-size:23px;font-weight:700;line-height:1.4;cursor:pointer;text-decoration:none;opacity:1;box-shadow:0 5px 0 #c8b5db,inset 0 2px 0 #ffffffb3}.web-entry svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.7}.web-entry small{padding:5px 9px;border:1px solid #cbb9db;border-radius:10px;background:#fffaf0b3;font-size:11px;font-weight:500;white-space:nowrap}
@media(prefers-reduced-motion:no-preference){.web-entry{animation:web-entry-drift 6s ease-in-out -1.2s infinite;will-change:transform;transition:translate .2s ease,box-shadow .2s ease}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.web-entry:hover{translate:0 -3px;box-shadow:0 8px 0 #c8b5db,inset 0 2px 0 #ffffffb3}.web-entry:active{translate:0 2px;box-shadow:0 3px 0 #c8b5db,inset 0 2px 0 #ffffffb3}}
@keyframes web-entry-drift{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@media(min-width:1024px){.site-header{width:min(1480px,calc(100% - 48px));flex-wrap:nowrap;justify-content:space-between;gap:14px;padding:12px 20px 12px 14px}.site-header .brand{font-size:clamp(20px,1.8vw,27px);gap:9px}.site-header .brand img{width:42px;height:42px}.site-header nav{width:auto;flex-wrap:nowrap;justify-content:flex-end;gap:2px;font-size:clamp(13px,1.08vw,16px)}.site-header nav>a{white-space:nowrap;padding:10px 7px}.site-header nav>.header-github{font-size:inherit;padding:10px 11px;gap:6px}.site-header .header-github svg{width:18px;height:18px}}
@media(min-width:1024px) and (max-width:1250px){.site-header nav>a:before{display:none}.site-header nav>a{padding:10px 5px}.site-header{gap:10px}.site-header .brand{letter-spacing:-.9px}}
@media(max-width:800px){.hero-copy .download-actions,.hero-copy .download-note,.web-entry{margin-left:auto;margin-right:auto}}
@media(max-width:500px){.web-entry{min-height:68px;font-size:21px;border-radius:24px;padding:12px 10px;gap:9px;margin-bottom:18px}.web-entry svg{width:24px;height:24px}.web-entry small{font-size:10px;padding:4px 6px}.hero-copy .download{font-size:14px;padding:0 10px;gap:8px}}

/* Compact overview, with original pastel sticker illustrations. */
.feature-ribbon{display:grid;grid-template-columns:repeat(6,max-content);justify-content:center;gap:clamp(20px,3vw,54px);min-height:104px;margin:0 0 30px;padding:16px 28px}
.feature-ribbon:before,.feature-ribbon:after{height:28px;background-size:600px 33px}
.feature-ribbon:before{top:-26px}.feature-ribbon:after{bottom:-26px}
.feature-ribbon>div{gap:12px;font-size:18px}
.ribbon-icon{display:block;width:68px;height:68px;flex:none;background-image:url("assets/feature-icons-3d-v1.png");background-repeat:no-repeat;background-size:300% 200%;filter:none;transform:none}
.ribbon-icon-0{background-position:0 0}.ribbon-icon-1{background-position:50% 0}.ribbon-icon-2{background-position:100% 0}.ribbon-icon-3{background-position:0 100%}.ribbon-icon-4{background-position:50% 100%}.ribbon-icon-5{background-position:100% 100%}
@media(min-width:801px){.hero{min-height:0;padding-top:48px;padding-bottom:84px}.hero-copy{top:16px}.hero-art{height:clamp(440px,calc(100svh - 310px),570px)}.hero .custom-heading img{width:clamp(308px,26.5vw,392px)}.hero h1.custom-heading{margin-bottom:56px}}
@media(min-width:801px) and (min-height:851px) and (max-height:950px){.hero{padding-top:40px;padding-bottom:68px}}
@media(min-width:801px) and (max-height:850px){.hero .custom-heading img{width:296px}.hero h1.custom-heading{margin-bottom:28px}.hero .web-release{margin-bottom:20px}.hero-copy{top:12px}.hero-art{height:440px}.hero{padding-top:40px;padding-bottom:50px}}
@media(min-width:801px) and (max-width:1250px){.feature-ribbon{gap:22px;padding-left:20px;padding-right:20px}.feature-ribbon>div{font-size:15px;gap:8px}.ribbon-icon{width:56px;height:56px}}
@media(min-width:801px) and (max-width:1000px){.feature-ribbon{grid-template-columns:repeat(3,max-content);gap:18px 42px;padding-top:20px;padding-bottom:20px}}
@media(max-width:800px){.feature-ribbon{grid-template-columns:repeat(3,max-content);gap:20px 30px;padding:22px 20px;min-height:0;margin-top:16px}.feature-ribbon>div{font-size:15px;gap:9px}.ribbon-icon{width:56px;height:56px}}
@media(max-width:540px){.feature-ribbon{grid-template-columns:repeat(2,max-content);gap:18px 30px}.feature-ribbon>div{font-size:14px;gap:10px}.ribbon-icon{width:48px;height:48px}}

/* Four statistics palettes share their curve, marker and time-slider color. */

.web-entry:focus-visible{outline:3px solid #80619b;outline-offset:5px}
/* Platform downloads share one row with independent availability. */
/* The open help must clear sibling sections and the header stacking context. */
.hero:has(.macos-help[open]){z-index:11}
.hero-copy .download-actions{grid-template-columns:minmax(0,2fr) 1px minmax(0,1fr);gap:12px;align-items:start}
.platform-windows,.platform-macos{min-width:0}
.platform-buttons{display:grid;grid-template-columns:1.12fr 1fr;gap:10px}
.hero-copy .download{width:100%;min-width:0;padding:0 8px;gap:6px;font-size:15px}
.hero-copy .download svg{width:18px;height:18px;flex:none}
.hero-copy .download-note{width:100%;font-size:11px;white-space:nowrap;margin:18px 0 0}
.hero-copy .download-note span{margin-left:7px;padding-left:7px}
.download-divider{height:38px;margin-top:11px;background:#c8baca}
.download.macos:disabled{background:#e5e2e5;border-color:#aba3ad;color:#8b828e;box-shadow:0 6px 0 #b6adb8,inset 0 3px 1px #ffffffac;cursor:not-allowed;transform:none}
.platform-macos{position:relative}
.macos-help{font-size:11px;line-height:1.5;color:var(--muted);text-align:center}
.macos-help summary{display:none}
.macos-help summary::-webkit-details-marker{display:none}
.macos-help summary:focus-visible{outline:2px solid #80619b;outline-offset:3px;border-radius:3px}
.macos-install-popover{position:absolute;right:0;bottom:calc(100% + 12px);z-index:100;width:min(420px,calc(100vw - 32px));max-height:min(480px,70vh);overflow:auto;padding:20px 22px;background:#fffef8;border:1.5px solid #d9c8ea;border-radius:18px;box-shadow:0 10px 28px #3e234530;color:var(--ink);text-align:left;font:13px/1.7 system-ui,'Microsoft YaHei',sans-serif;white-space:normal}
.macos-install-popover>strong{display:block;font-size:15px;line-height:1.5}
.hero-copy .macos-install-popover p{font:inherit;margin:10px 0;max-width:none}
.macos-install-popover ol{margin:10px 0;padding-left:22px}
.macos-install-popover a{color:#725294;text-underline-offset:3px}
.macos-install-popover footer{margin-top:14px;padding-top:12px;border-top:1px solid #e8dfea;font-size:11px;color:var(--muted)}
.macos-install-popover code{font:12px/1.65 ui-monospace,monospace;overflow-wrap:anywhere;white-space:normal}
.macos-install-popover footer code{display:block;font-size:10px}
@media(max-width:1100px) and (min-width:801px),(max-width:380px){.hero-copy .download-actions{gap:8px}.platform-buttons{gap:6px}.hero-copy .download{font-size:12px;padding:0 5px;gap:4px}.hero-copy .download svg{width:15px;height:15px}.hero-copy .download-note{font-size:9px}.hero-copy .download-note span{margin-left:4px;padding-left:4px}}

.next-comparison-settings strong{color:#623e7e;font-weight:700}.next-comparison-settings mark{background:linear-gradient(transparent 35%,#ffe99a 35%);color:#593d26;padding:0 .15em;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.next-comparison-settings ol{padding-left:1.6em;font:14px/1.9 'Microsoft YaHei',sans-serif;color:#6f5d7c}.next-comparison-settings li+li{margin-top:8px}.next-comparison-heading .next-hover-hint{font-size:14px;color:#80658f;margin-top:12px}
/* Five actual output spectrograms, one shared paper preview per example. */
.next-sounds .sound-option:nth-child(4) .sound-play{background:#f9e9df;border-color:#ceac96;box-shadow:0 3px 0 #e7cfbe}.next-sounds .sound-option:nth-child(5) .sound-play{background:#eaf0e4;border-color:#b1c09f;box-shadow:0 3px 0 #cfdbc2}
.next-spectrum-preview{position:fixed;z-index:80;box-sizing:border-box;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:15px 17px 10px;background:#fffdf6;border:2px solid #ae92c1;border-radius:17px 21px 16px 20px;box-shadow:5px 7px 0 #e3d6eb,0 9px 32px #39274926;font:13px/1.5 'Microsoft YaHei',sans-serif;color:#493554;isolation:isolate}.next-spectrum-preview[hidden]{display:none}.next-spectrum-title{display:flex;gap:12px;align-items:center;justify-content:space-between}.next-spectrum-title strong{font:20px/1.4 Playful,'Microsoft YaHei',sans-serif}.next-spectrum-close{flex:none;border:0;background:#f2e9f6;color:#654775;border-radius:50%;width:28px;height:28px;font:22px/1 sans-serif;cursor:pointer}.next-spectrum-close:focus-visible{outline:3px solid #8c67a8;outline-offset:2px}.next-spectrum-preview .next-spectrum-caption{font:12px/1.6 'Microsoft YaHei',sans-serif;color:#776382;margin:5px 0 10px}.next-spectrum-rows{display:grid;gap:5px}.next-spectrum-preview .next-spectrum-row{margin:0;padding:5px 7px;border:2px solid transparent;border-radius:8px;background:#f5f1f7;opacity:.72}.next-spectrum-preview .next-spectrum-row figcaption{display:flex;justify-content:space-between;gap:8px;text-align:left;font:12px/1.4 'Microsoft YaHei',sans-serif;margin:0 0 4px;color:#5c4768}.next-spectrum-preview .next-spectrum-row img{display:block;width:100%;height:auto;aspect-ratio:768/104;object-fit:fill;border-radius:3px;background:#fff}.next-spectrum-current{visibility:hidden;flex:none;font-size:11px;color:#684c26}.next-spectrum-preview .next-spectrum-row.is-active{border-color:#ad8646;background:#fff1c6;opacity:1;box-shadow:0 0 0 1px #eddbaf}.next-spectrum-row.is-active figcaption{font-weight:700;color:#49321b}.next-spectrum-row.is-active .next-spectrum-current{visibility:visible}.next-spectrum-preview .next-spectrum-scale{display:flex;justify-content:space-between;margin:2px 9px 0;font:11px/1.5 Consolas,monospace;color:#776382}
@media(max-width:600px){.next-spectrum-preview{padding:11px 12px 8px}.next-spectrum-title strong{font-size:18px}.next-spectrum-preview .next-spectrum-row{padding:4px 5px}.next-spectrum-preview .next-spectrum-row figcaption{font-size:11px}.next-spectrum-preview .next-spectrum-caption{font-size:11px}}

.site-stats{width:min(1100px,calc(100% - 48px));margin:35px auto 110px;padding:28px 0 24px;border-top:2px dashed #d7c69f;border-bottom:2px dashed #d7c69f;color:#75617d}
.stats-history-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:0 12px 24px}
.stats-history-heading h2{font-size:30px;color:#39223f;margin:8px 0 0}.stats-history-heading label{display:grid;gap:6px;font-size:12px}
.stats-history-heading select{padding:9px 12px;border:1px solid #ddcfae;background:#fffdf7;color:#61446e;border-radius:9px;font:inherit}
.stats-charts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.stats-chart{position:relative;min-width:0;min-height:278px;border:0;border-radius:20px;padding:22px 24px 16px}
.stats-chart-heading{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px}.stats-chart h3{display:flex;align-items:center;gap:8px;font-size:16px;color:#432c50;margin:0}.stats-chart h3:before{content:'';width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--chart-color)}.stats-chart-heading>span{font-size:11px}
.stats-chart-total{position:relative;z-index:2;display:flex;align-items:baseline;gap:8px;width:fit-content;max-width:100%;margin-top:10px;padding-right:8px;border-radius:4px;background:var(--chart-surface)}.stats-chart-total strong{font-size:clamp(38px,4vw,50px);font-weight:700;color:#35223f;font-variant-numeric:tabular-nums;line-height:1.2;letter-spacing:-1.4px}.stats-chart-total>span{font-size:12px}
.stats-chart-detail{position:relative;z-index:2;width:fit-content;min-height:22px;margin-top:5px;background:var(--chart-surface)}.chart-plot{position:absolute;inset:var(--chart-top,56px) 24px 16px;margin:0;border-radius:6px}.stats-chart svg{width:100%;height:100%;display:block}
.chart-grid{stroke:#ddcfce;stroke-width:.7;fill:none}.chart-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.chart-area{stroke:none}.chart-cursor{stroke:var(--chart-color);stroke-width:1;stroke-opacity:.45;vector-effect:non-scaling-stroke;pointer-events:none}
.chart-dates{display:flex;justify-content:space-between;gap:12px;font-size:11px;margin:10px 24px 0;font-variant-numeric:tabular-nums}
.chart-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;font-size:13px}.chart-empty[hidden]{display:none}
.chart-scrub{position:absolute;inset:0}.chart-control-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.chart-scrub input{--chart-thumb-size:16px;appearance:none;position:absolute;top:3.007518797%;min-width:0;width:calc(88.75% + var(--chart-thumb-size));height:93.984962406%;margin:0 0 0 calc(7.9166666667% - var(--chart-thumb-size)/2);padding:0;border:0;opacity:0;cursor:crosshair;touch-action:pan-y}
.chart-plot:focus-within{outline:2px solid var(--chart-color);outline-offset:3px}
.chart-scrub output{display:none;position:absolute;z-index:2;bottom:8px;left:8px;max-width:calc(100% - 16px);padding:5px 9px;border:1px solid #e6dccb;border-radius:7px;background:#fffdf7;color:#61446e;font-size:12px;line-height:1.6;font-variant-numeric:tabular-nums;pointer-events:none;box-shadow:0 3px 10px #39223f0a;overflow-wrap:anywhere}
.stats-chart.is-inspecting .chart-scrub output{display:block}
.site-stats .stats-caption{margin:16px 12px 0;padding-top:15px;border-top:1px solid #e6dccb;font-size:12px;line-height:1.8}.stats-caption p{margin:0}.stats-update-row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 16px}.stats-caption #stats-history-help{margin-top:5px}.stats-caption details p{max-width:920px;padding-top:8px}.stats-caption summary{width:fit-content;cursor:pointer;text-decoration:underline;text-underline-offset:3px;margin-top:5px}
@media(max-width:700px){.site-stats{width:calc(100% - 36px);margin-bottom:72px}.stats-charts{grid-template-columns:minmax(0,1fr);gap:14px}.stats-history-heading{align-items:start;padding:0 4px 20px}.stats-history-heading h2{font-size:25px}.stats-chart{min-height:256px;padding:20px 20px 14px}.stats-chart-total strong{font-size:43px}.chart-plot{left:20px;right:20px;bottom:14px}.chart-dates{margin-inline:12px}}
@media(max-width:380px){.stats-history-heading{flex-wrap:wrap}.stats-history-heading label{display:flex;align-items:center;justify-content:space-between;width:100%}.stats-history-heading select{min-width:145px}.chart-scrub output{font-size:11px}}
@media(pointer:coarse){.stats-caption summary{min-height:44px;padding:10px 0}.stats-history-heading select{min-height:44px;font-size:16px}}
.stats-chart[data-chart="views"]{--chart-color:#8963a3;--chart-surface:#f4eeed;background:var(--chart-surface)}
.stats-chart[data-chart="downloads"]{--chart-color:#a95d46;--chart-surface:#fbf0e6;background:var(--chart-surface)}
.stats-chart[data-chart="web"]{--chart-color:#557b59;--chart-surface:#f0f2e8;background:var(--chart-surface)}
.stats-chart[data-chart="stars"]{--chart-color:#927020;--chart-surface:#faf4df;background:var(--chart-surface)}
.stats-chart .chart-line{stroke:var(--chart-color)}
.stats-chart .chart-dot{fill:var(--chart-color);stroke:#fffdf7;stroke-width:1.6;vector-effect:non-scaling-stroke}
.stats-chart .chart-scrub input{accent-color:var(--chart-color)}
.chart-scrub input::-webkit-slider-runnable-track{height:6px;background:transparent;border:0}
.chart-scrub input::-webkit-slider-thumb{appearance:none;width:var(--chart-thumb-size);height:var(--chart-thumb-size);margin-top:-5px;border:0;border-radius:50%;background:var(--chart-color)}
.chart-scrub input::-moz-range-track{height:6px;border:0;background:transparent}
.chart-scrub input::-moz-range-thumb{width:var(--chart-thumb-size);height:var(--chart-thumb-size);border:0;border-radius:50%;background:var(--chart-color)}
.stats-chart{position:relative}
.download-platform-legend{display:flex;align-items:center;flex-wrap:wrap;gap:4px 18px;padding-right:6px;font-size:12px}
.download-platform-legend>span{display:inline-flex;align-items:center;gap:5px}.download-platform-legend strong{font-weight:500;font-variant-numeric:tabular-nums;color:#61446e}
.download-platform-legend .legend-windows,.download-platform-legend .legend-macos{display:inline-flex;align-items:center;gap:5px}
.download-platform-legend .legend-windows:before,.download-platform-legend .legend-macos:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--chart-color)}
.stats-chart[data-chart="downloads"]{--macos-color:#487e96}
.download-platform-legend .legend-macos{color:var(--macos-color)}
.download-platform-legend .legend-macos:before{background:var(--macos-color)}
.stats-chart .chart-line[data-platform="macos"]{stroke:var(--macos-color)}
.stats-chart .chart-dot[data-platform="macos"]{fill:var(--macos-color)}
.download-platform-legend small{font-size:10px}

.vocal-tract-demo{margin:24px 0 0;max-width:100%}
.vocal-tract-demo video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#182e38;border:1px solid #94b49b;border-radius:14px;box-sizing:border-box}
.vocal-tract-demo figcaption{margin-top:10px;font-size:12px;line-height:1.7;color:var(--muted);text-align:center}

/* International Phonetic Alphabet IME downloads, all four platforms. */
.download-platform-legend{flex-wrap:wrap;row-gap:4px}
.download-platform-legend .legend-ime{display:inline-flex;align-items:center;gap:5px;color:#8360a4}
.download-platform-legend .legend-ime:before{content:'';width:5px;height:5px;border-radius:50%;background:#8360a4}
.stats-chart .chart-line[data-platform="ime"]{stroke:#8360a4}
.stats-chart .chart-dot[data-platform="ime"]{fill:#8360a4}

/* Compact method examples: four across on desktop, readable on narrow screens. */
@media(max-width:1023px){.reference-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:559px){.reference-grid{grid-template-columns:1fr}}
