@font-face{font-family:Montserrat;src:url(fonts/montserrat-300.ttf);font-weight:300;font-display:swap}@font-face{font-family:Montserrat;src:url(fonts/montserrat-400.ttf);font-weight:400;font-display:swap}@font-face{font-family:Montserrat;src:url(fonts/montserrat-500.ttf);font-weight:500;font-display:swap}@font-face{font-family:Montserrat;src:url(fonts/montserrat-600.ttf);font-weight:600;font-display:swap}:root{--ink:#504987;--accent:#9683e3;--soft:#eee8fc}*{box-sizing:border-box}body{margin:0;background:#e6e8f7;color:var(--ink);font-family:Montserrat,'Century Gothic',sans-serif}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #6c5cb6;outline-offset:4px}main{min-height:100svh;display:flex;align-items:center;justify-content:center;padding-bottom:38px}.stage{position:relative;width:min(100vw,calc((100svh - 38px)*1.5));aspect-ratio:1.5;flex-shrink:0}.artboard{position:absolute;width:1536px;height:1024px;transform:scale(var(--scale,1));transform-origin:0 0}.backdrop{display:block;width:1536px;height:1024px}.tablet-ui{position:absolute;left:0;top:0;width:1200px;height:740px;transform-origin:0 0;overflow:hidden;border-radius:22px;transform:matrix3d(0.9921384567901235,-0.026903037037037027,0,3.780658436213992e-05,0.057247827827827835,0.9211319519519519,0,-5.571237904571238e-05,0,0,1,0,205,164,0,1);}header{height:98px;display:flex;align-items:center;justify-content:space-between;padding:15px 28px;background:linear-gradient(100deg,#fffbfff5,#f1e9ffed);border-bottom:1px solid #c8bce6;box-shadow:0 2px 5px #78649a0c}.brand{display:flex;align-items:center;text-decoration:none;color:var(--ink);white-space:nowrap;gap:2px}.brand img{width:68px;height:68px;object-fit:contain;mix-blend-mode:multiply}.brand span{font-size:27px;font-weight:300;letter-spacing:-1px}nav{display:flex;gap:10px}nav button{border:1px solid #e9def7;border-radius:13px;background:#fff9;padding:12px 13px;font-size:21px;box-shadow:0 2px 3px #6b529014;display:flex;align-items:center;gap:8px}nav button span{font-size:13px;font-weight:400}nav button.active{background:var(--accent);color:white;border-color:var(--accent)}nav button:hover{filter:brightness(.98)}.desktop{position:relative;height:642px}.panel{background:linear-gradient(140deg,#fffdfffa,#fdfaffef);border:1px solid #b9a8ec;border-radius:23px;box-shadow:0 3px 7px #79669b12;overflow:hidden}.panel h2{font-size:17px;font-weight:500;margin:0}.titlebar{height:39px;border-bottom:1px solid #e5dcf4;background:#fbf9ff99}.intro{position:absolute;left:30px;top:24px;width:325px;height:403px}.intro-body{padding:20px 25px}.intro h1{font-size:28px;font-weight:500;letter-spacing:-1px;margin:0 0 5px}.intro h2{font-size:16px}.intro p{font-size:14px;line-height:1.68;margin:15px 0 19px}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:17px}.tags span{font-size:10px;padding:6px 10px;border-radius:20px;background:var(--soft)}.primary{border:0;background:var(--accent);color:#fff;border-radius:28px;padding:12px 20px;font-size:13px;font-weight:400;box-shadow:0 3px 2px #7b66b51a;display:flex;justify-content:center;align-items:center;gap:20px}.primary span{font-size:20px;line-height:15px}.intro .primary{width:100%}.primary:hover{background:#8673d3}.cat{position:absolute;left:392px;top:110px;width:330px;height:330px;padding:0;border:0;background:transparent;border-radius:40%}.cat-art{display:block;width:100%;height:100%;background-image:url(cat-approved-sprites.png);background-size:300% 200%;background-position:var(--cat-x,0%) var(--cat-y,0%);transition:opacity .18s ease}.cat:hover{filter:brightness(1.015)}.projects{position:absolute;right:26px;top:24px;bottom:26px;width:348px;padding:19px 20px;display:flex;flex-direction:column}.projects .primary{flex-shrink:0}.projects h2{display:flex;align-items:center;gap:10px;margin-bottom:20px}.icon{font-size:22px;color:var(--accent)}.project-list{display:flex;flex-direction:column;gap:18px}.project{position:relative;display:flex;align-items:center;text-align:left;gap:12px;padding:0;border:0;background:none;width:100%;border-radius:12px}.project:hover{background:#f0eafb}.thumb{display:block;width:83px;height:92px;border-radius:12px;flex-shrink:0;border:1px solid #bfa9eb;background-image:url(studio-reference-v9.png);background-size:1400px 933.333px}.thumb.sinalup{background-position:-970px -282px}.thumb.cafe{background-position:-980px -384px}.thumb.lumi{background-position:-990px -486px}.project-copy{display:flex;flex-direction:column;gap:7px;max-width:178px}.project-copy strong{font-size:15px;font-weight:500}.project-copy small{font-size:9px;background:#eee9fa;padding:4px 8px;border-radius:20px;align-self:flex-start}.project-copy>span{font-size:11px;line-height:1.6}.arrow{position:absolute;right:0;top:2px;font-size:18px;color:var(--accent)}.projects .primary{width:93%;margin:21px auto 0}.music{position:absolute;left:30px;bottom:26px;width:414px;height:171px;padding:17px 20px}.music h2{display:flex;align-items:center;gap:10px}.music-content{display:flex;align-items:center;gap:14px;margin-top:14px}.album{width:67px;height:67px;background:linear-gradient(140deg,#a7bce9,#d4b4e5);display:grid;place-items:center;font-size:35px;color:#fff4ce;border-radius:10px}.music-content strong{font-size:12px;font-weight:500}.music-content p{font-size:10px;margin:5px 0;color:#8d81a3}.track-line{height:3px;background:#e6ddf4;width:265px;margin-top:13px}.music-controls{display:flex;justify-content:space-between;margin-top:7px;font-size:16px;color:#b0a1d0}.focus{position:absolute;left:477px;bottom:26px;width:267px;height:171px;padding:19px}.focus h2{font-size:14px;margin-bottom:14px}.focus label{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.85}.focus input{accent-color:#9683e3;width:15px;height:15px;margin:0}.home-line{position:absolute;bottom:9px;left:45%;width:10%;height:3px;background:#6e5d9533;border-radius:6px}.page-panel{position:absolute;z-index:3;inset:22px 25px 25px;padding:50px;background:#fcf9fffa;overflow:auto}.page-panel[hidden]{display:none}.page-panel h1{font-size:30px;font-weight:500;margin:0 0 20px}.page-panel p{font-size:16px;line-height:1.9;max-width:800px}.close{position:absolute;right:20px;top:15px;background:none;border:0;font-size:30px}.detail-tag{display:inline-block;padding:7px 12px;background:#eee7fb;border-radius:20px;font-size:12px}.page-project{display:block;background:#eee8fb;padding:18px 22px;border:0;text-align:left;width:100%;margin:12px 0;border-radius:14px}.page-project strong{display:block;font-size:18px;font-weight:500;margin-bottom:8px}.page-project span{font-size:12px}.page-panel a{color:var(--ink)}footer{position:fixed;bottom:0;left:0;width:100%;padding:10px 18px;min-height:38px;background:#f8f5fbef;border-top:1px solid #d9cee6;font-size:10px;text-align:center;line-height:1.5}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@media(max-width:650px){main{min-width:760px;justify-content:flex-start}.stage{width:760px}footer{font-size:9px;text-align:left}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Keep a single complete body; only facial features change. */
.cat{width:360px;height:330px;left:377px;overflow:visible}
.cat-art{width:360px;height:330px;background-size:990px 660px;background-position:0 0;transition:none}
.cat-face{position:absolute;inset:0;background-image:url(cat-approved-sprites.png);background-repeat:no-repeat;background-size:990px 660px;background-position:var(--face-left,0px) var(--face-top,0px);mask-image:radial-gradient(ellipse 77px 45px at 172px 165px,#000 78%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 77px 45px at 172px 165px,#000 78%,transparent 100%);opacity:0;pointer-events:none}
.cat.has-expression .cat-face{opacity:1}
.cat-heart{position:absolute;top:28px;right:34px;font-family:Arial,sans-serif;color:#f49cb2;font-size:36px;opacity:0;pointer-events:none;transition:opacity .2s}
.cat.affection .cat-heart{opacity:1}

.intro h1{font-size:27px;line-height:1.2;margin-bottom:12px}

.brand{gap:12px}.brand img{width:49px;height:49px;mix-blend-mode:normal}

.contact-email{display:inline-flex;text-decoration:none!important;color:#fff!important;margin-top:8px}

.focus label{font-size:10px;line-height:2.1;white-space:nowrap}.focus input{flex-shrink:0}

.playlist-open{border:1px solid #bfa9eb;border-radius:20px;background:#eee9fa;color:var(--ink);padding:7px 14px;font:inherit;font-size:11px;cursor:pointer;margin-top:5px}.playlist-open:hover{background:#e2d9f5}.youtube-player{width:100%;max-width:720px;aspect-ratio:16/9;min-height:200px;margin-top:18px}.youtube-player iframe{display:block;width:100%;height:100%;border:0;border-radius:12px}.page-panel .music-help{font-size:12px}

.music{z-index:4;padding:12px 16px}.music h2{font-size:14px}.inline-music{display:flex;align-items:center;gap:12px;margin-top:7px}.inline-music iframe{display:block;width:230px;height:113px;flex-shrink:0;border:0;border-radius:8px}.playlist-caption strong{font-size:12px;font-weight:500}.playlist-caption p,.playlist-caption a{font-size:10px;line-height:1.6;color:var(--ink)}.page-panel{bottom:209px;padding:30px 40px}

/* Butterfly cursor uses viewport coordinates, independent of the tablet transform. */
.butterfly-cursor,.butterfly-spark{position:fixed;pointer-events:none!important;z-index:2147483647;left:0;top:0}.butterfly-cursor{width:32px;height:32px;filter:drop-shadow(0 0 3px #cfb5ff);will-change:transform}.butterfly-cursor[hidden]{display:none}.butterfly-cursor img{display:block;width:32px;height:32px;animation:butterfly-flutter 1.8s ease-in-out infinite;transform-origin:50% 50%}.butterfly-cursor.over-link{filter:drop-shadow(0 0 5px #b399f5) drop-shadow(0 0 2px #fff)}.butterfly-spark{width:4px;height:4px;border-radius:50%;background:#cab2ff;box-shadow:0 0 5px #a78be8,0 0 9px #d8c6ff;opacity:0}@keyframes butterfly-flutter{0%,100%{transform:rotate(-5deg) scaleX(1)}50%{transform:rotate(4deg) scaleX(.85)}}
@media(hover:hover) and (pointer:fine){html,body,button,a,input,label{cursor:url('butterfly.svg?v=2') 16 12,auto}.butterfly-active,.butterfly-active *{cursor:none!important}}
@media(prefers-reduced-motion:reduce){.butterfly-cursor,.butterfly-spark{display:none!important}}

.thumb.project-art{background-image:none;background-color:#f1edff;object-fit:contain;object-position:center;padding:3px}.project-preview{display:block;float:right;width:240px;max-width:38%;max-height:270px;object-fit:contain;margin:0 0 18px 24px;border-radius:14px;border:1px solid #ded4ef;background:#f4f0fa}.project-list-art{float:left;width:64px;height:64px;object-fit:contain;margin:0 18px 0 0;border-radius:8px;background:#f7f3ff}.page-project{min-height:100px}.project-art.cafe,.project-preview[src="project-cafe.png"],.project-list-art[src="project-cafe.png"]{image-rendering:pixelated}

.studio-controls{display:flex;align-items:center;gap:5px;margin:0 0 9px}.studio-controls button{display:grid;place-items:center;width:36px;height:34px;flex-shrink:0;border:1px solid #c0afe7;border-radius:11px;background:#eee8fc;color:#504987;font-size:13px;padding:0}.studio-controls button[data-music="toggle"]{background:#9683e3;color:white;font-size:18px}.studio-controls button:hover{filter:brightness(.96)}.studio-controls button:disabled{opacity:.45;cursor:wait}.playlist-caption{min-width:0}.playlist-caption #music-status{font-size:9px;margin:5px 0;line-height:1.4}

header{gap:14px}nav{gap:6px}nav button{padding:11px 10px}.language-picker{flex-shrink:0}.language-picker select{font:inherit;font-size:12px;color:#504987;border:1px solid #c8bce6;border-radius:12px;background:#f8f4ff;padding:10px 5px;max-width:76px}.intro h1{font-size:25px}.intro p{font-size:13px;line-height:1.55}.intro-body{padding:17px 23px}.tags{gap:5px;margin-bottom:13px}.tags span{font-size:9px;padding:5px 7px}.project-copy>span{font-size:10px;line-height:1.5}.project-copy{gap:6px}.project-list{gap:14px}.focus label{font-size:9px}.playlist-caption strong{font-size:11px}

@media(min-width:901px){main{position:relative;isolation:isolate;padding-bottom:64px;min-height:100svh}main::before{content:"";position:fixed;inset:-24px;background:linear-gradient(#e6e8f726,#e6e8f726),url('desk-clean.png') center/cover no-repeat;filter:blur(14px);z-index:-1;pointer-events:none}.stage{width:min(100vw,calc((100svh - 64px)*1.5))}footer{min-height:64px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 10px;padding:10px 18px;background:#f8f5fbf5}}
.copyright{display:inline-block}.usage-link{border:0;padding:5px 8px;color:#504987;background:transparent;text-decoration:underline;font-size:inherit}.page-panel:has(#page-content h1){scrollbar-gutter:stable}
@media(max-width:900px){footer{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 10px}.copyright{flex-basis:100%}.usage-link{min-height:44px;font-size:12px}}

.cat-hint{position:absolute;z-index:2;top:0;left:20px;max-width:240px;padding:10px 16px;background:#fff9ff;border:1px solid #b9a8ec;border-radius:18px;box-shadow:0 3px 9px #50498713;color:#504987;font-size:13px;font-weight:400;line-height:1.4;pointer-events:none}.cat-hint::after{content:"";position:absolute;bottom:-7px;right:30px;width:12px;height:12px;background:#fff9ff;border-right:1px solid #b9a8ec;border-bottom:1px solid #b9a8ec;transform:rotate(45deg)}.cat-hint[hidden]{display:none}.focus label,.focus input:disabled{cursor:default}.focus input:disabled{opacity:1}
@media(max-width:900px){.cat-hint{top:0;left:50%;transform:translateX(-50%);width:max-content;max-width:95%;font-size:13px;padding:8px 14px}}

/* Read-only progress retains the studio palette on all browsers. */
.focus input[type="checkbox"]{appearance:none;-webkit-appearance:none;position:relative;border:1.5px solid #a593d3;border-radius:4px;background:#f6f0ff;opacity:1;flex-shrink:0}.focus input[type="checkbox"]:checked{background:#9683e3;border-color:#9683e3}.focus input[type="checkbox"]:checked::after{content:"";position:absolute;left:30%;top:10%;width:30%;height:55%;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
