:root{color:#302c43;font-synthesis:none;text-rendering:optimizelegibility;background-color:#faf7f2;font-family:system-ui,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,textarea,select{font:inherit}.contact-page{padding-block:clamp(28px,5vw,64px)}.contact-intro h1{margin:0 0 28px;line-height:1.1}.contact-profile-card{background:var(--surface);border:1px solid #a5283470;border-radius:22px;padding:clamp(24px,4vw,36px);box-shadow:0 8px 28px #57392b08}.contact-profile-avatar{object-fit:contain;width:64px;height:64px;display:block}.contact-profile-card h2{color:var(--text);margin:24px 0 12px;font-size:clamp(1.2rem,2.2vw,1.6rem);line-height:1.4}.contact-profile-card p{color:var(--text-muted);margin:0;font-size:1rem;line-height:1.85}.contact-social-links{flex-wrap:wrap;gap:12px 24px;display:flex}.contact-social-links a{color:var(--accent);font-size:.88rem;font-weight:600;text-decoration:none}.contact-social-links a:hover{text-underline-offset:4px;text-decoration:underline}.contact-button{background:var(--accent);color:var(--surface);border-radius:12px;padding:13px 22px;font-weight:600;text-decoration:none}.contact-button:hover{background:var(--accent-dark)}.contact-button:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.contact-conversation{grid-template-columns:minmax(0,1fr) minmax(300px,420px);align-items:start;gap:clamp(32px,6vw,88px);display:grid}.contact-conversation-copy{min-width:0}.contact-phone-stage{background:radial-gradient(#ecd6cd 0%,#0000 68%);padding:16px 8px 28px}.contact-phone{background:linear-gradient(135deg,#63514c,#302724 45%,#77605a);border:2px solid #75645f;border-radius:46px;width:min(100%,370px);margin-inline:auto;padding:9px;position:relative;box-shadow:inset 0 0 0 2px #ffffff20,12px 22px 45px -18px #57392b50,0 4px 8px #57392b20}.contact-phone:before,.contact-phone:after{content:"";background:#75645f;border-radius:3px;width:3px;position:absolute}.contact-phone:before{height:60px;top:110px;left:-4px}.contact-phone:after{height:44px;top:145px;right:-4px}.contact-phone-camera{z-index:1;background:#302724;border-radius:20px;width:86px;height:20px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.contact-phone-camera:after{content:"";background:radial-gradient(circle at 30% 30%,#68818b,#182023 70%);border-radius:50%;width:8px;height:8px;position:absolute;top:6px;right:10px}.contact-phone-screen{background:var(--surface);border:1px solid #dac6ba;border-radius:36px;padding:38px 22px 12px;overflow:hidden}.contact-phone-topbar{color:var(--text-muted);letter-spacing:.08em;justify-content:space-between;font-size:.65rem;display:flex}.contact-phone-recipient{align-items:center;gap:12px;margin-top:22px;display:flex}.contact-phone-avatar{border:1px solid var(--border);background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:50%;flex-shrink:0;place-items:center;font-size:.85rem;font-weight:700;display:grid}.contact-phone-recipient strong{font-size:.95rem;display:block}.contact-phone-recipient div>span{color:var(--text-muted);margin-top:3px;font-size:.7rem;display:block}.contact-phone-bubble{background:var(--surface-soft);color:var(--text);border-radius:15px 15px 15px 3px;margin:18px 0 22px;padding:12px 14px;font-size:.8rem;line-height:1.7}.contact-form{flex-direction:column;display:flex}.contact-page .contact-form h2{margin:0 0 16px;font-size:1.1rem}.contact-form label{margin-bottom:6px;font-size:.75rem;font-weight:650}.contact-form input,.contact-form textarea{border:1px solid var(--border);width:100%;min-width:0;color:var(--text);background:#fffcf8;border-radius:10px;margin-bottom:14px;padding:10px 12px;font-size:1rem}.contact-form textarea{resize:vertical;min-height:100px}.contact-form input::placeholder,.contact-form textarea::placeholder{color:#8a7970;font-size:.8rem}.contact-form input:focus-visible,.contact-form textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.contact-form .contact-button{cursor:pointer;border:0;font-size:.85rem}.contact-form .contact-button:disabled{opacity:.55;cursor:not-allowed}.contact-form-note{color:var(--text-muted);margin:10px 0 14px;font-size:.68rem;line-height:1.65}.contact-phone-home{background:#6d5750;border-radius:5px;width:90px;height:4px;margin:6px auto 0;display:block}@media (width<=760px){.contact-conversation{grid-template-columns:1fr;gap:24px}.contact-phone-stage{width:100%}}@media (width<=360px){.contact-phone-screen{padding-inline:16px}}.contact-direct-links{flex-direction:column;align-items:flex-start;gap:12px;margin-top:26px;display:flex}.contact-direct-links .contact-email{color:var(--accent-dark);overflow-wrap:anywhere;text-underline-offset:4px;font-weight:700}.contact-direct-links a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.contact-conversation-copy{padding-top:16px}@media (width<=760px){.contact-conversation-copy{padding-top:0}}.coding-projects{margin-top:28px}.coding-projects-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.coding-projects-heading h2{margin:0;font-size:clamp(1.15rem,2.5vw,1.5rem)}.coding-github-link{color:var(--accent);text-underline-offset:4px;font-size:.85rem;font-weight:600}.coding-project-card--lavender{--card-color:#72538d;--card-soft:#eee5f6;--card-visual:#e0d1ed}.coding-project-card--sage{--card-color:#466e4b;--card-soft:#e5efdf;--card-visual:#d6e5cc}.coding-project-card--blue{--card-color:#396b83;--card-soft:#e0edf4;--card-visual:#cbdfeb}.coding-project-card--peach{--card-color:#95562e;--card-soft:#f6e7d9;--card-visual:#efd6bf}.coding-project-card--rose{--card-color:#92576a;--card-soft:#f4e3e9;--card-visual:#eacdd7}.coding-project-card{border:1px solid var(--border);background:var(--surface);border-radius:22px;min-width:0;transition:transform .24s,box-shadow .24s;overflow:hidden;box-shadow:0 8px 24px #57392b08}.coding-project-card:hover{transform:translateY(-4px);box-shadow:0 16px 36px #57392b14}.coding-project-card--featured{grid-template-columns:1.1fr 1fr;display:grid}.coding-project-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;gap:24px;margin-top:24px;display:grid}.coding-project-content{padding:clamp(22px,3vw,32px)}.coding-featured-label{background:var(--card-soft);color:var(--card-color);letter-spacing:.08em;border-radius:6px;margin-bottom:20px;padding:5px 9px;font-size:.65rem;font-weight:700;display:inline-block}.coding-project-category{color:var(--card-color);letter-spacing:.09em;margin:0 0 10px;font-size:.65rem;font-weight:700}.coding-project-card h3{color:var(--text);letter-spacing:-.025em;margin:0;font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.3}.coding-project-card--featured h3{font-size:clamp(1.7rem,3vw,2.3rem)}.coding-project-description{color:var(--text-muted);margin:14px 0 0;font-size:.95rem;line-height:1.8}.coding-project-technologies{flex-wrap:wrap;gap:7px;margin:20px 0;padding:0;list-style:none;display:flex}.coding-project-technologies li{background:var(--card-soft);color:var(--card-color);border-radius:7px;padding:5px 9px;font-size:.73rem;font-weight:600}.coding-project-details{border-top:1px solid var(--border);padding-top:16px}.coding-project-details summary{color:var(--card-color);cursor:pointer;font-size:.85rem;font-weight:600}.coding-project-details p{color:var(--text-muted);margin:12px 0 0;font-size:.9rem;line-height:1.75}.coding-project-details summary:focus-visible,.coding-github-link:focus-visible{outline:3px solid var(--accent);outline-offset:4px;border-radius:4px}.coding-project-visual{background:var(--card-visual);place-items:center;min-height:230px;padding:28px;display:grid}.coding-project-card--featured .coding-project-visual{min-height:340px}.coding-project-image{border-radius:10px;width:100%;height:auto;display:block;box-shadow:0 12px 28px #302c4320}.coding-project-mockup{background:#fffaf3e6;border:1px solid #fffa;border-radius:12px;width:100%;max-width:360px;overflow:hidden;box-shadow:0 16px 30px #302c4318}.coding-mockup-toolbar{border-bottom:1px solid #302c4310;gap:5px;padding:12px;display:flex}.coding-mockup-toolbar span{background:var(--card-color);opacity:.5;border-radius:50%;width:7px;height:7px}.coding-mockup-body{gap:14px;padding:24px;display:grid}.coding-mockup-symbol{color:var(--card-color);letter-spacing:-.06em;font-size:2.8rem;font-weight:750;line-height:1}.coding-mockup-name{color:var(--text);font-size:.85rem;font-weight:600}.coding-mockup-lines{gap:7px;display:grid}.coding-mockup-lines span{background:var(--card-color);opacity:.14;border-radius:4px;height:7px}.coding-mockup-lines span:nth-child(2){width:75%}.coding-mockup-lines span:nth-child(3){width:50%}@media (width<=800px){.coding-project-card--featured{grid-template-columns:1fr}.coding-project-card--featured .coding-project-visual{min-height:260px}}@media (width<=650px){.coding-project-grid{grid-template-columns:1fr}.coding-project-visual{min-height:210px;padding:24px}}@media (prefers-reduced-motion:reduce){.coding-project-card{transition:none}.coding-project-card:hover{transform:none}}.coding-project-preview{background:#fffaf3;border-radius:12px;width:100%;display:block;position:relative;overflow:hidden;box-shadow:0 12px 28px #302c4320}.coding-project-preview .coding-project-image{object-fit:cover;object-position:top;width:100%;height:300px;box-shadow:none;border-radius:0}.coding-preview-caption{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:7px;padding:6px 9px;font-size:.7rem;font-weight:600;position:absolute;bottom:10px;right:10px}.coding-project-showcase{border:1px solid var(--card-color);color:var(--card-color);background:var(--card-soft);border-radius:10px;align-items:center;margin-top:20px;padding:11px 16px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.coding-project-showcase:hover{text-underline-offset:4px;text-decoration:underline}.coding-project-preview:focus-visible,.coding-project-showcase:focus-visible{outline:3px solid var(--accent);outline-offset:4px}@media (width<=650px){.coding-project-preview .coding-project-image{height:230px}}.coding-project-case-link{background:var(--card-color);color:#fff;border-radius:10px;margin-bottom:20px;padding:11px 16px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.coding-project-case-link:hover{text-underline-offset:4px;text-decoration:underline}.coding-project-case-link:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.coding-project-preview .coding-project-image--contain{object-fit:contain;object-position:center}.coding-project-demo-link{background:var(--card-soft);color:var(--card-color);border-radius:10px;margin:0 0 20px 10px;padding:11px 16px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.coding-project-demo-link:hover{text-underline-offset:4px;text-decoration:underline}.coding-project-demo-link:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.mouse-study.mouse-card-cover .mouse-study-art{box-sizing:border-box;border-radius:12px;flex-direction:column;height:300px;padding:14px;display:flex}.mouse-study.mouse-card-cover .mouse-art-scene{flex:1;height:auto;min-height:0}.mouse-card-cover .mouse-art-top{flex-wrap:wrap}@media (width<=650px){.mouse-study.mouse-card-cover .mouse-study-art{height:230px}.mouse-study.mouse-card-cover .mouse-art-device{width:80px;height:120px}}.coding-project-visual>.queens-cover{box-sizing:border-box;width:100%;height:100%;min-height:220px;padding:20px}.study-intro{max-width:740px;margin-top:40px}.study-intro h2{letter-spacing:-.035em;margin:0;font-size:clamp(1.5rem,3vw,2.3rem);font-weight:600;line-height:1.3}.study-intro p,.study-feature p,.study-decisions p,.study-outro p{color:var(--text-muted);line-height:1.8}.study-technologies{flex-wrap:wrap;gap:8px;margin:22px 0 0;padding:0;list-style:none;display:flex}.study-technologies li{color:#72538d;background:#eee5f6;border-radius:7px;padding:6px 11px;font-size:.8rem;font-weight:600}.study-figure{margin:32px 0 0}.study-figure a{background:#e6dbef;border:1px solid #d9cbe5;border-radius:22px;padding:clamp(12px,3vw,32px);display:block;overflow:hidden}.study-figure img{aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:10px;width:100%;height:auto;display:block;box-shadow:0 12px 28px #302c4318}.study-figure figcaption{color:var(--text-muted);margin-top:10px;font-size:.78rem;line-height:1.6}.study-section{margin-top:56px}.study-section>h2{letter-spacing:-.025em;margin-top:10px;font-size:clamp(1.3rem,2.5vw,1.8rem)}.study-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:24px;display:grid}.study-feature{border:1px solid var(--border);background:var(--surface);border-radius:16px;padding:24px}.study-feature h3,.study-decisions h3{margin:0;font-size:1rem;line-height:1.5}.study-feature p{margin-bottom:0;font-size:.9rem}.study-decisions{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin-top:24px;display:grid}.study-decisions article{border-top:2px solid #c4afd6;padding-top:20px}.study-decisions p{font-size:.95rem}.study-outro{border:1px solid var(--border);background:var(--surface);border-radius:18px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;margin-top:48px;padding:28px;display:flex}.study-outro>div{flex:300px}.study-outro h2{margin:0;font-size:1.25rem}.study-outro p{max-width:620px;margin-bottom:0;font-size:.9rem}.study-showcase-link{background:var(--accent);color:var(--surface);border-radius:10px;padding:12px 18px;font-size:.85rem;font-weight:600;text-decoration:none}.study-showcase-link:hover{background:var(--accent-dark)}.study-showcase-link:focus-visible,.study-figure a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}@media (width<=750px){.study-feature-grid,.study-decisions{grid-template-columns:1fr}.study-section{margin-top:36px}}.study-demo{margin:32px 0 0}.study-demo video{object-fit:contain;border:1px solid var(--border);background:#201c24;border-radius:16px;width:100%;height:auto;max-height:70svh;display:block;box-shadow:0 12px 28px #302c4312}.study-demo figcaption{color:var(--text-muted);margin-top:10px;font-size:.78rem;line-height:1.6}.study-demo{background:radial-gradient(ellipse at center, #e8deef, var(--page-bg) 75%);border-radius:24px;margin:32px 0 0;padding:clamp(20px,4vw,40px) 12px 18px}.demo-laptop{width:min(100%,780px);margin-inline:auto}.demo-laptop-lid{background:#28262e;border:1px solid #57545d;border-radius:18px 18px 7px 7px;width:94%;margin-inline:auto;padding:20px 9px 10px;position:relative;box-shadow:0 16px 32px #302c4320}.demo-laptop-camera{background:#77737f;border-radius:50%;width:5px;height:5px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.demo-laptop-screen{aspect-ratio:16/10;background:#111;border-radius:5px;overflow:hidden}.study-demo .demo-laptop-screen video{object-fit:contain;width:100%;height:100%;max-height:none;box-shadow:none;background:#111;border:0;border-radius:0;display:block}.demo-laptop-base{background:linear-gradient(#dedbe2,#b8b3bf);border:1px solid #b0aab4;border-radius:2px 2px 50% 50%/2px 2px 100% 100%;height:15px;position:relative;box-shadow:0 12px 18px #302c4314}.demo-laptop-base span{background:#a39cae;border-radius:0 0 6px 6px;width:16%;height:5px;position:absolute;top:0;left:50%;transform:translate(-50%)}.study-demo figcaption{max-width:580px;color:var(--text-muted);text-align:center;margin:20px auto 0;font-size:.78rem;line-height:1.6}@media (width<=600px){.demo-laptop-lid{border-radius:12px 12px 4px 4px;padding:15px 5px 6px}.demo-laptop-camera{width:4px;height:4px;top:6px}.demo-laptop-base{height:10px}}.study-product-hero{background:radial-gradient(at 18% 45%,#ded2ed 0%,#0000 60%),#f6f1f8;border:1px solid #ddd4e6;border-radius:28px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:clamp(24px,4vw,56px);margin-top:32px;padding:clamp(24px,4vw,48px);display:grid;overflow:hidden}.product-laptop-stage{min-width:0;padding-top:12px}.product-laptop{isolation:isolate;width:100%;max-width:560px;margin-inline:auto;position:relative}.product-laptop:after{content:"";z-index:-1;filter:blur(14px);pointer-events:none;background:#30253d40;border-radius:50%;height:28px;position:absolute;inset:auto 5% -14px}.product-laptop-lid{z-index:2;box-sizing:border-box;background:linear-gradient(145deg,#45414c,#201e26 55%,#34303b);border:1px solid #827e8b;border-radius:15px 15px 5px 5px;width:92%;margin-inline:auto;padding:18px 8px 21px;position:relative;box-shadow:inset 0 0 0 2px #ffffff14,0 0 0 1px #25212d,0 12px 25px #33283e18}.product-laptop-camera{background:radial-gradient(circle at 35% 30%,#849baa,#273344 65%);border:2px solid #17151d;border-radius:50%;width:5px;height:5px;position:absolute;top:6px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #ffffff10}.product-laptop-display{aspect-ratio:16/10;background:#111;border:1px solid #08070b;border-radius:5px;overflow:hidden}.product-laptop-display video{object-fit:contain;width:100%;height:100%;max-height:none;box-shadow:none;background:#111;border:0;border-radius:0;display:block}.product-laptop-display video:focus-visible{outline-offset:-3px;outline:3px solid #c7a9e4}.product-laptop-brand{color:#c7c1cf;letter-spacing:.22em;white-space:nowrap;font-size:6px;font-weight:600;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.product-laptop-deck{box-sizing:border-box;clip-path:polygon(4% 0,96% 0,100% 94%,99% 100%,1% 100%,0 94%);background:linear-gradient(175deg,#aaa4b3 0%,#e7e3ec 7%,#d2ccd9 72%,#eeeaf1 96%,#b5aebf 100%);border-bottom:5px solid #99939f;border-radius:0 0 18px 18px;margin-top:-1px;padding:3.5% 10% 4%;position:relative;box-shadow:inset 0 1px #ffffffc0,inset 0 -2px #ffffff80}.product-laptop-deck:before{content:"";background:linear-gradient(#24202c,#696171);border-radius:0 0 4px 4px;height:5px;position:absolute;inset:0 13% auto}.product-laptop-deck:after{content:"";background:#aaa2b3;border-radius:0 0 8px 8px;width:20%;height:4px;position:absolute;bottom:-1px;left:40%;box-shadow:inset 0 1px 2px #655c7040}.product-laptop-keyboard{background:#aaa3b1;border:1px solid #a6a0b0;border-radius:5px;gap:3px;padding:5px;display:grid;box-shadow:inset 0 1px 3px #39314040,0 1px #ffffffa0}.product-laptop-key-row{gap:3px;display:flex}.product-laptop-keyboard span{background:linear-gradient(#514a5b,#37313f);border:1px solid #27222f;border-radius:2px;min-width:0;height:clamp(4px,.8vw,9px);display:block;box-shadow:inset 0 1px #ffffff25,0 1px 1px #30283840}.product-laptop-trackpad{aspect-ratio:3.4;background:linear-gradient(135deg,#dcd6e3,#d0c9d9);border:1px solid #aaa2b5;border-radius:4px;width:34%;margin:3% auto 0;box-shadow:inset 0 1px 2px #80758c18,0 1px #ffffff90}.product-demo-caption{color:#7b7085;text-align:center;margin:24px 0 0;font-size:.68rem;line-height:1.6;position:relative}.product-hero-copy{min-width:0;position:relative}.product-hero-eyebrow{color:#72538d;letter-spacing:.15em;margin:0 0 16px;font-size:.68rem;font-weight:700}.product-hero-copy h2{color:#342c3e;letter-spacing:-.045em;margin:0;font-size:clamp(1.5rem,2.8vw,2.35rem);font-weight:650;line-height:1.2}.product-hero-copy h2 span{color:#72538d}.product-hero-description{color:#706578;margin:20px 0 0;font-size:.93rem;line-height:1.85}.study-product-hero .study-technologies{gap:7px;margin-top:22px}.study-product-hero .study-technologies li{color:#654c7c;background:#fff9;border:1px solid #d9cce5;border-radius:7px;padding:6px 10px;font-size:.72rem}@media (width<=850px){.study-product-hero{grid-template-columns:1fr;gap:32px}.product-laptop-stage{width:min(100%,540px);margin-inline:auto}.product-hero-copy{max-width:560px}}@media (width<=500px){.study-product-hero{border-radius:20px;padding:24px 18px}.product-laptop-lid{border-radius:10px 10px 4px 4px;padding:13px 5px 16px}.product-laptop-camera{width:3px;height:3px;top:5px}.product-laptop-deck{border-bottom-width:3px;padding:4% 9% 5%}.product-laptop-keyboard{gap:2px;padding:4px}.product-laptop-key-row{gap:2px}.product-laptop-keyboard span{height:5px}.product-laptop-trackpad{margin-top:3%}.product-hero-copy h2{font-size:1.65rem}}.taskflow-page{--tf-ink:#3e302b;--tf-muted:#76675e;--tf-red:#a72937;--tf-line:#e4d7cb}.taskflow-page .taskflow-hero{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:clamp(28px,4vw,64px);margin:28px 0 64px;display:grid}.taskflow-page .taskflow-preview{border:1px solid var(--tf-line);background:#fffaf4;border-radius:18px;min-width:0;margin:0;overflow:hidden;box-shadow:0 24px 60px -30px #3e302b47,0 4px 12px #3e302b0d}.taskflow-page .taskflow-browser-bar{border-bottom:1px solid var(--tf-line);background:#efe6dc;align-items:center;gap:18px;min-height:44px;padding:0 16px;display:flex}.taskflow-page .taskflow-browser-dots{gap:6px;display:flex}.taskflow-page .taskflow-browser-dots span{background:#c4b3a5;border-radius:50%;width:8px;height:8px}.taskflow-page .taskflow-browser-dots span:first-child{background:#bd7275}.taskflow-page .taskflow-browser-dots span:nth-child(2){background:#d3b775}.taskflow-page .taskflow-browser-dots span:last-child{background:#8fa38a}.taskflow-page .taskflow-browser-name{color:var(--tf-muted);letter-spacing:.04em;font-size:.72rem}.taskflow-page .taskflow-preview img{width:100%;height:auto;display:block}.taskflow-page .taskflow-preview figcaption{border-top:1px solid var(--tf-line);color:var(--tf-muted);padding:12px 18px;font-size:.78rem;line-height:1.5}.taskflow-page .taskflow-copy{min-width:0}.taskflow-page .taskflow-eyebrow{color:var(--tf-red);letter-spacing:.15em;margin:0 0 12px;font-size:.7rem;font-weight:750;line-height:1.6}.taskflow-page .taskflow-copy h2{color:var(--tf-ink);letter-spacing:-.045em;margin:0;font-size:clamp(1.8rem,2.8vw,3rem);font-weight:750;line-height:1.15}.taskflow-page .taskflow-copy h2 span{color:var(--tf-red);margin-top:8px;display:block}.taskflow-page .taskflow-description{color:var(--tf-muted);margin:22px 0;font-size:1rem;line-height:1.85}.taskflow-page .taskflow-copy .study-technologies{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.taskflow-page .taskflow-copy .study-technologies li{border:1px solid var(--tf-line);color:var(--tf-ink);background:#f3e9df;border-radius:8px;padding:6px 11px;font-size:.76rem}.taskflow-page .taskflow-actions{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.taskflow-page .taskflow-button{border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:12px;min-height:46px;padding:11px 17px;font-size:.86rem;font-weight:650;text-decoration:none;transition:transform .22s,background-color .22s,box-shadow .22s;display:inline-flex}.taskflow-page .taskflow-button-primary{background:var(--tf-red);color:#fffaf4}.taskflow-page .taskflow-button-secondary{border-color:var(--tf-line);color:var(--tf-ink);background:0 0}.taskflow-page .taskflow-button:focus-visible{outline:3px solid var(--tf-red);outline-offset:4px}.taskflow-page .taskflow-local-note{color:var(--tf-muted);margin:16px 0 0;font-size:.75rem;line-height:1.7}.taskflow-page .taskflow-features{margin-bottom:48px}.taskflow-page .taskflow-section-heading{margin-bottom:24px}.taskflow-page .taskflow-section-heading h2,.taskflow-page .taskflow-development h2{color:var(--tf-ink);letter-spacing:-.035em;margin:0;font-size:clamp(1.4rem,2vw,2rem);line-height:1.3}.taskflow-page .taskflow-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.taskflow-page .taskflow-feature{border:1px solid var(--tf-line);background:#f2e8dd;border-radius:16px;padding:26px}.taskflow-page .taskflow-feature:nth-child(2){background:#e7ece4}.taskflow-page .taskflow-feature:nth-child(3){background:#f2e1df}.taskflow-page .taskflow-feature-number{color:var(--tf-muted);letter-spacing:.08em;margin-bottom:22px;font-size:.75rem;font-weight:650;display:block}.taskflow-page .taskflow-feature h3{color:var(--tf-ink);margin:0 0 10px;font-size:1.2rem}.taskflow-page .taskflow-feature p{color:#665950;margin:0;font-size:.9rem;line-height:1.8}.taskflow-page .taskflow-development{border-top:1px solid var(--tf-line);grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:32px;padding:32px 0;display:grid}.taskflow-page .taskflow-development>p{color:var(--tf-muted);margin:0;font-size:.95rem;line-height:1.9}@media (hover:hover){.taskflow-page .taskflow-button:hover{transform:translateY(-2px)}.taskflow-page .taskflow-button-primary:hover{background:#8e202e;box-shadow:0 8px 20px #a7293726}.taskflow-page .taskflow-button-secondary:hover{background:#eee1d5}}@media (width<=900px){.taskflow-page .taskflow-hero{grid-template-columns:1fr;gap:32px;margin-bottom:48px}.taskflow-page .taskflow-copy{max-width:650px}}@media (width<=640px){.taskflow-page .taskflow-feature-grid,.taskflow-page .taskflow-development{grid-template-columns:1fr}.taskflow-page .taskflow-feature{padding:22px}.taskflow-page .taskflow-feature-number{margin-bottom:14px}.taskflow-page .taskflow-development{gap:18px}.taskflow-page .taskflow-actions{flex-direction:column;align-items:stretch}}@media (prefers-reduced-motion:reduce){.taskflow-page .taskflow-button{transition:none;transform:none}}.site-header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#faf7f2f2;border-bottom:1px solid #e4dcea;position:sticky;top:0}.site-header-inner{justify-content:space-between;align-items:center;gap:20px;width:min(100% - 40px,1100px);margin-inline:auto;padding-block:16px;display:flex}.site-brand{color:#40324f;align-items:center;gap:10px;font-size:.95rem;font-weight:700;text-decoration:none;display:inline-flex}.site-brand-symbol{color:#66518c;background:#e7def5;border:1px solid #d5c6e5;border-radius:14px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.site-navigation{flex-wrap:wrap;gap:8px;display:flex}.site-navigation a{color:#625a70;border-radius:10px;padding:10px 14px;font-size:.9rem;font-weight:600;text-decoration:none;transition:background-color .18s}.site-brand:focus-visible,.site-navigation a:focus-visible{outline-offset:4px;border-radius:10px;outline:3px solid #66518c}@media (width<=700px){.site-header-inner{flex-direction:column;align-items:flex-start;gap:12px}.site-navigation{width:100%}.site-navigation a{padding:9px 10px;font-size:.85rem}}.teaching-book{margin-top:40px}.book-toolbar{flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-bottom:24px;display:flex}.book-control{color:#49375f;font:inherit;cursor:pointer;background:#f0e8f7;border:1px solid #cdbddd;border-radius:12px;padding:11px 16px;font-weight:600}.book-control:hover:not(:disabled){background:#e1d3ef}.book-control:disabled{opacity:.45;cursor:default}.book-control:focus-visible,.book-bookmark:focus-visible{outline-offset:4px;outline:3px solid #66518c}.book-layout{grid-template-columns:minmax(0,1fr) 150px;align-items:start;gap:0;display:grid}.book-stage{grid-area:1/1;min-width:0;padding:24px 0}.teaching-flipbook{margin-inline:auto}.book-bookmarks{grid-area:1/2;gap:12px;padding-top:56px;display:grid}.book-bookmark{z-index:5;color:#49375f;font:inherit;text-align:left;cursor:pointer;background:#e7dcf2;border:1px solid #cdbddd;border-radius:0 12px 12px 0;padding:16px 12px;font-size:.9rem;font-weight:600;line-height:1.5;position:relative}.teaching-book-page{color:#40374a;background:#fffaf0;border:1px solid #e1d6c6;overflow:hidden;box-shadow:inset 12px 0 24px #7763470a}.teaching-book-page-inner{flex-direction:column;height:100%;padding:clamp(18px,3vw,34px);display:flex}.book-page-label{color:#80659f;letter-spacing:.1em;margin-top:0;font-size:.68rem;font-weight:700;line-height:1.6}.teaching-book-page h2{margin:14px 0 18px;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.25}.book-page-text{flex:1;min-height:0;overflow-y:auto}.book-page-text p{font-size:clamp(.85rem,1.4vw,1rem);line-height:1.8}.book-page-number{color:#8a7d91;text-align:center;padding-top:16px;font-size:.8rem;display:block}.teaching-book-page.is-cover{color:#fff8ec;background:radial-gradient(circle at 100% 0,#ffffff18,#0000 65%),#80659f;border-color:#75608f}.is-cover .teaching-book-page-inner{text-align:center;justify-content:center}.is-cover .book-page-text{flex:initial}.is-cover h2{font-size:clamp(2rem,4vw,3rem)}.book-pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;margin-top:20px;display:flex}.book-pagination p,.book-help{color:#625a70;font-size:.9rem}.book-help{text-align:center;max-width:620px;margin:20px auto 0;line-height:1.8}.book-reading-view{background:#fffaf0;border:1px solid #e1d6c6;border-radius:16px;padding:clamp(20px,4vw,40px)}.book-reading-section+.book-reading-section{border-top:1px solid #e1d6c6;margin-top:32px;padding-top:28px}.book-reading-section p{line-height:1.85}@media (width<=900px){.book-layout{grid-template-columns:minmax(0,1fr)}.book-bookmarks{flex-wrap:wrap;grid-area:1/1;gap:8px;padding-top:0;display:flex}.book-bookmark{border-radius:10px;padding:10px 12px;font-size:.8rem}.book-stage{grid-area:2/1}}@media (width<=500px){.book-toolbar{justify-content:flex-start}.book-pagination{gap:10px}.book-control{padding:10px 12px;font-size:.85rem}}.book-reading-section{scroll-margin-top:170px}.mouse-study{--mouse-ink:#40322d;--mouse-muted:#76675e;--mouse-red:#a72937;--mouse-line:#e3d5c9}.mouse-study .mouse-study-hero{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,72px);margin:28px 0 64px;display:grid}.mouse-study .mouse-study-copy{min-width:0}.mouse-study .mouse-study-eyebrow{color:var(--mouse-red);letter-spacing:.13em;margin:0 0 12px;font-size:.7rem;font-weight:750;line-height:1.7}.mouse-study .mouse-study-copy h2{color:var(--mouse-ink);letter-spacing:-.055em;margin:0;font-size:clamp(2.5rem,4.5vw,4.5rem);line-height:1.05}.mouse-study .mouse-study-copy h2 span{color:var(--mouse-red);display:block}.mouse-study .mouse-study-description{color:var(--mouse-muted);margin:24px 0;font-size:1rem;line-height:1.85}.mouse-study .mouse-study-technologies{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.mouse-study .mouse-study-technologies li{border:1px solid var(--mouse-line);color:var(--mouse-ink);background:#f3e9df;border-radius:8px;padding:6px 11px;font-size:.76rem}.mouse-study .mouse-study-art{background:radial-gradient(circle at 50% 45%,#fff4d8,#0000 65%),#eddfcc;border:1px solid #e2cbb9;border-radius:24px;min-width:0;padding:clamp(18px,3vw,30px);position:relative;overflow:hidden;box-shadow:0 25px 65px -40px #502d1959}.mouse-study .mouse-art-top,.mouse-study .mouse-art-bottom{z-index:1;color:#6b5142;letter-spacing:.1em;justify-content:space-between;align-items:center;gap:12px;font-size:.65rem;font-weight:750;display:flex;position:relative}.mouse-study .mouse-art-badge{white-space:nowrap;border:1px solid #d9c1a7;border-radius:999px;padding:7px 10px;font-size:.58rem}.mouse-study .mouse-art-scene{place-items:center;height:clamp(260px,29vw,380px);display:grid;position:relative}.mouse-study .mouse-art-orbit{border:1px dashed #c7ae93;border-radius:50%;width:75%;height:58%;position:absolute;transform:rotate(-25deg)}.mouse-study .mouse-art-orbit-two{opacity:.55;width:54%;height:82%;transform:rotate(35deg)}.mouse-study .mouse-art-device{background:linear-gradient(135deg,#c95059,#982432 70%);border:1px solid #7c202b;border-radius:60px 60px 49px 49px;width:116px;height:174px;transition:transform .5s;position:relative;overflow:hidden;transform:rotate(-22deg);box-shadow:inset 5px 4px 12px #ffffff2e,inset -7px -7px 14px #490e1933,18px 24px 25px -12px #683f224d}.mouse-study .mouse-art-device:before{content:"";background:#7c202b;width:1px;height:66px;position:absolute;top:0;left:50%}.mouse-study .mouse-art-device:after{content:"";background:#7c202b;width:100%;height:1px;position:absolute;top:66px;left:0}.mouse-study .mouse-art-wheel{z-index:1;background:#ead6bd;border:2px solid #73202a;border-radius:8px;width:12px;height:25px;position:absolute;top:24px;left:calc(50% - 6px)}.mouse-study .mouse-art-spark{z-index:1;font-size:clamp(1.8rem,4vw,3rem);position:absolute}.mouse-study .mouse-art-spark-one{top:15%;left:18%;transform:rotate(-15deg)}.mouse-study .mouse-art-spark-two{top:23%;right:13%;transform:rotate(15deg)}.mouse-study .mouse-art-spark-three{font-size:1.8rem;bottom:12%;right:28%}.mouse-study .mouse-art-pointer{color:#5f4235;font-size:3.5rem;line-height:1;position:absolute;bottom:22%;right:18%;transform:rotate(-10deg)}.mouse-study .mouse-art-bottom>span:last-child{font-size:1.4rem}.mouse-study .mouse-study-actions{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.mouse-study .mouse-study-button{border:1px solid var(--mouse-line);min-height:46px;color:var(--mouse-ink);border-radius:10px;justify-content:center;align-items:center;gap:12px;padding:11px 17px;font-size:.86rem;font-weight:650;text-decoration:none;transition:transform .22s,background-color .22s;display:inline-flex}.mouse-study .mouse-study-button-primary{border-color:var(--mouse-red);background:var(--mouse-red);color:#fffaf4}.mouse-study .mouse-study-button:focus-visible{outline:3px solid var(--mouse-red);outline-offset:4px}.mouse-study .mouse-study-note{color:var(--mouse-muted);margin:16px 0 0;font-size:.75rem;line-height:1.7}.mouse-study .mouse-study-how{margin-bottom:48px}.mouse-study .mouse-study-how>h2,.mouse-study .mouse-study-development h2{color:var(--mouse-ink);letter-spacing:-.035em;margin:0;font-size:clamp(1.5rem,2.4vw,2.2rem);line-height:1.25}.mouse-study .mouse-study-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:26px;display:grid}.mouse-study .mouse-study-steps article{border:1px solid var(--mouse-line);background:#f2e7da;border-radius:16px;padding:26px}.mouse-study .mouse-study-steps article:nth-child(2){background:#f3e3c7}.mouse-study .mouse-study-steps article:nth-child(3){background:#f0dddd}.mouse-study .mouse-study-step-number{color:var(--mouse-red);margin-bottom:22px;font-size:.8rem;font-weight:750;display:block}.mouse-study .mouse-study-steps h3,.mouse-study .mouse-study-details h3{color:var(--mouse-ink);margin:0 0 10px;font-size:1.1rem}.mouse-study .mouse-study-steps p,.mouse-study .mouse-study-details p{color:#6b5b50;margin:0;font-size:.9rem;line-height:1.85}.mouse-study .mouse-study-development{border-top:1px solid var(--mouse-line);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(28px,5vw,64px);padding:34px 0;display:grid}.mouse-study .mouse-study-development-intro{color:var(--mouse-muted);margin:18px 0 0;font-size:.95rem;line-height:1.85}.mouse-study .mouse-study-details{gap:24px;display:grid}.mouse-study .mouse-study-details article{border-left:2px solid #d6b6a5;padding-left:20px}@media (hover:hover){.mouse-study .mouse-study-art:hover .mouse-art-device{transform:translateY(-6px)rotate(-15deg)}.mouse-study .mouse-study-button:hover{transform:translateY(-2px)}.mouse-study .mouse-study-button-primary:hover{background:#8e202e}.mouse-study .mouse-study-button-secondary:hover{background:#eee1d5}}@media (width<=900px){.mouse-study .mouse-study-hero{grid-template-columns:1fr;gap:32px}.mouse-study .mouse-art-scene{height:310px}}@media (width<=640px){.mouse-study .mouse-study-steps,.mouse-study .mouse-study-development{grid-template-columns:1fr}.mouse-study .mouse-study-actions{flex-direction:column}.mouse-study .mouse-study-steps article{padding:22px}.mouse-study .mouse-art-top{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){.mouse-study .mouse-art-device,.mouse-study .mouse-study-button{transition:none}.mouse-study .mouse-study-art:hover .mouse-art-device{transform:rotate(-22deg)}.mouse-study .mouse-study-button:hover{transform:none}}.mouse-study .mouse-study-code{margin:0 0 48px}.mouse-study .mouse-study-code h2{color:var(--mouse-ink);letter-spacing:-.035em;margin:0;font-size:clamp(1.5rem,2.4vw,2.2rem);line-height:1.25}.mouse-study .mouse-code-switcher{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.mouse-study .mouse-code-switcher button{border:1px solid var(--mouse-line);color:var(--mouse-ink);font:inherit;text-align:left;cursor:pointer;background:#f3e9df;border-radius:10px;padding:10px 15px;font-size:.85rem;font-weight:650}.mouse-study .mouse-code-switcher button[aria-pressed=true]{border-color:var(--mouse-red);background:var(--mouse-red);color:#fffaf4}.mouse-study .mouse-code-description{color:var(--mouse-muted);margin:16px 0;line-height:1.7}.mouse-study .mouse-code-window{color:#f8e9dc;background:#221c1d;border-radius:16px;min-width:0;overflow:hidden}.mouse-study .mouse-code-toolbar{background:#34282b;border-bottom:1px solid #59464a;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding:12px 18px;font-size:.8rem;display:flex}.mouse-study .mouse-code-toolbar a{color:#ffceb9;text-underline-offset:3px}.mouse-study .mouse-code-window pre{text-align:left;margin:0;padding:clamp(16px,3vw,24px);font-size:.85rem;line-height:1.65;overflow-x:auto}.mouse-study .mouse-code-switcher button:focus-visible,.mouse-study .mouse-code-toolbar a:focus-visible,.mouse-study .mouse-code-window pre:focus-visible{outline-offset:-4px;outline:2px solid}.mouse-game-cover{width:100%;min-width:0}.queens-cover{box-sizing:border-box;background:radial-gradient(circle,#fff5df,#0000 72%),#e6dcc9;place-items:center;width:100%;padding:clamp(24px,4vw,46px);display:grid}.queens-cover-board{box-sizing:border-box;aspect-ratio:1;border:6px solid #73513c;border-radius:7px;grid-template-columns:repeat(8,minmax(0,1fr));width:min(100%,330px);display:grid;overflow:hidden;box-shadow:10px 14px 28px -12px #482f1e66}.queens-cover-cell{aspect-ratio:1;color:#4f2430;background:#f0d9b5;place-items:center;min-width:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(16px,2.5vw,32px);line-height:1;display:grid}.queens-cover-cell.is-dark{background:#b58863}.queens-page{--queens-ink:#40322d;--queens-muted:#726158;--queens-red:#a72937;--queens-line:#e2d3c4;padding-block:clamp(20px,4vw,44px)}.queens-page .queens-hero{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,64px);margin-bottom:48px;display:grid}.queens-page .queens-preview{background:#faf3e9;border:1px solid #d6c4b0;border-radius:20px;min-width:0;margin:0;overflow:hidden;box-shadow:0 24px 50px -36px #482f1e59}.queens-page .queens-preview-heading{color:#69513e;letter-spacing:.12em;background:#e6dcc9;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;font-size:.68rem;font-weight:750;display:flex}.queens-page .queens-preview-badge{white-space:nowrap;border:1px solid #cbb79f;border-radius:6px;padding:5px 9px}.queens-page .queens-preview figcaption{border-top:1px solid var(--queens-line);color:var(--queens-muted);padding:14px 20px;font-size:.78rem;line-height:1.7}.queens-page .queens-hero-copy{min-width:0}.queens-page .queens-eyebrow{color:var(--queens-red);letter-spacing:.12em;margin:0 0 12px;font-size:.7rem;font-weight:750;line-height:1.7}.queens-page .queens-hero-copy h2{color:var(--queens-ink);letter-spacing:-.045em;margin:0;font-size:clamp(2rem,3.5vw,3.5rem);line-height:1.12}.queens-page .queens-hero-copy h2 span{color:var(--queens-red);margin-top:6px;display:block}.queens-page .queens-description{color:var(--queens-muted);margin:24px 0;font-size:1rem;line-height:1.85}.queens-page .queens-technologies{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.queens-page .queens-technologies li{border:1px solid var(--queens-line);color:var(--queens-ink);background:#f1e7db;border-radius:8px;padding:6px 11px;font-size:.78rem}.queens-page .queens-actions{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.queens-page .queens-button{box-sizing:border-box;border:1px solid var(--queens-line);min-height:46px;color:var(--queens-ink);border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:12px 18px;font-size:.88rem;font-weight:650;text-decoration:none;transition:background-color .22s,transform .22s;display:inline-flex}.queens-page .queens-button-primary{border-color:var(--queens-red);background:var(--queens-red);color:#fffaf4}.queens-page .queens-button:focus-visible{outline:3px solid var(--queens-red);outline-offset:4px}.queens-page .queens-demo-note{color:var(--queens-muted);margin:14px 0 0;font-size:.76rem;line-height:1.7}.queens-page .queens-rule{border:1px solid var(--queens-line);background:#eee6d9;border-radius:16px;align-items:center;gap:24px;margin-bottom:48px;padding:clamp(20px,3vw,30px);display:flex}.queens-page .queens-rule-symbol{color:#754335;flex-shrink:0;font-family:Georgia,Times New Roman,serif;font-size:3.5rem;line-height:1}.queens-page .queens-rule h2{color:var(--queens-ink);margin:0 0 8px;font-size:1.2rem}.queens-page .queens-rule p,.queens-page .queens-feature p,.queens-page .queens-development p{color:var(--queens-muted);margin:0;font-size:.94rem;line-height:1.85}.queens-page .queens-features{margin-bottom:48px}.queens-page .queens-features>h2,.queens-page .queens-development h2{color:var(--queens-ink);letter-spacing:-.035em;margin:0;font-size:clamp(1.45rem,2.3vw,2rem);line-height:1.3}.queens-page .queens-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.queens-page .queens-feature{border:1px solid var(--queens-line);background:#f1e7da;border-radius:16px;padding:24px}.queens-page .queens-feature:nth-child(2){background:#e6ebdf}.queens-page .queens-feature:nth-child(3){background:#f1e0df}.queens-page .queens-feature-number{color:var(--queens-red);margin-bottom:20px;font-size:.76rem;font-weight:750;display:block}.queens-page .queens-feature h3,.queens-page .queens-development-details h3{color:var(--queens-ink);margin:0 0 10px;font-size:1.08rem;line-height:1.4}.queens-page .queens-development{border-top:1px solid var(--queens-line);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(28px,5vw,64px);padding:32px 0;display:grid}.queens-page .queens-development-heading>p:last-child{margin-top:18px}.queens-page .queens-development-details{gap:24px;display:grid}.queens-page .queens-development-details article{border-left:2px solid #ccb59b;padding-left:18px}.coding-project-visual>.queens-cover{height:100%;min-height:220px;padding:20px}.coding-project-visual>.queens-cover .queens-cover-board{border-width:4px;width:min(100%,210px);height:auto}.coding-project-visual>.queens-cover .queens-cover-cell{font-size:clamp(16px,2vw,24px)}@media (hover:hover){.queens-page .queens-button:hover{transform:translateY(-2px)}.queens-page .queens-button-primary:hover{background:#8e202e}.queens-page .queens-button-secondary:hover{background:#eee1d5}}@media (width<=900px){.queens-page .queens-hero{grid-template-columns:1fr;gap:32px}}@media (width<=640px){.queens-page .queens-feature-grid,.queens-page .queens-development{grid-template-columns:1fr}.queens-page .queens-rule{align-items:flex-start;gap:16px}.queens-page .queens-rule-symbol{font-size:2.5rem}.queens-page .queens-actions{flex-direction:column}}@media (prefers-reduced-motion:reduce){.queens-page .queens-button{transition:none}.queens-page .queens-button:hover{transform:none}}.queens-page .queens-code{border-top:1px solid var(--queens-line);margin-top:24px;padding-top:32px}.queens-page .queens-code>h2{color:var(--queens-ink);letter-spacing:-.035em;margin:0;font-size:clamp(1.45rem,2.3vw,2rem);line-height:1.3}.queens-page .queens-code-options{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.queens-page .queens-code-options button{border:1px solid var(--queens-line);color:var(--queens-ink);font:inherit;cursor:pointer;background:#f1e7db;border-radius:10px;padding:11px 16px;font-size:.85rem;font-weight:650}.queens-page .queens-code-options button[aria-pressed=true]{border-color:var(--queens-red);background:var(--queens-red);color:#fffaf4}.queens-page .queens-code-explanation{max-width:760px;margin:22px 0 18px}.queens-page .queens-code-explanation h3{color:var(--queens-ink);margin:0 0 8px;font-size:1.1rem}.queens-page .queens-code-explanation p{color:var(--queens-muted);margin:0;font-size:.94rem;line-height:1.85}.queens-page .queens-code-window{color:#f3e6d3;background:#241f1d;border:1px solid #51413d;border-radius:16px;min-width:0;overflow:hidden}.queens-page .queens-code-toolbar{color:#ddc6b2;background:#342b27;border-bottom:1px solid #51413d;justify-content:space-between;gap:16px;padding:13px 20px;font-family:monospace;font-size:.78rem;display:flex}.queens-page .queens-code-window pre{text-align:left;white-space:pre;tab-size:4;margin:0;padding:clamp(16px,3vw,26px);overflow-x:auto}.queens-page .queens-code-window code{color:inherit;background:0 0;padding:0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.83rem;line-height:1.8}.queens-page .queens-code-footer{border-top:1px solid #51413d;padding:13px 20px}.queens-page .queens-code-footer a{color:#f1c5ae;text-underline-offset:4px;font-size:.8rem}.queens-page .queens-code-options button:focus-visible{outline:3px solid var(--queens-red);outline-offset:3px}.queens-page .queens-code-window pre:focus-visible,.queens-page .queens-code-footer a:focus-visible{outline-offset:-4px;outline:2px solid #f1c5ae}.project-gallery{margin-top:56px}.project-gallery-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.project-gallery-heading .eyebrow{margin:0 0 8px;font-size:.68rem}.project-gallery-heading h2{letter-spacing:-.035em;margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem)}.project-gallery-counter{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.8rem}.project-gallery-options{flex-wrap:wrap;gap:10px;margin:24px 0 18px;display:flex}.project-gallery-option{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font:inherit;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:11px 15px;font-size:.85rem;font-weight:600;transition:background-color .18s,border-color .18s,color .18s;display:inline-flex}.project-gallery-option>span{opacity:.65;font-size:.65rem}.project-gallery-option:hover{background:#eee5f6}.project-gallery-option[aria-pressed=true]{color:#65477e;background:#eee5f6;border-color:#72538d}.project-gallery-figure{margin:0}.project-gallery-browser{background:var(--surface);border:1px solid #d8cfe0;border-radius:16px;overflow:hidden;box-shadow:0 14px 35px #302c430c}.project-gallery-browser-bar{color:#7b7085;background:#f1ebf5;border-bottom:1px solid #e1d9e7;align-items:center;gap:16px;padding:12px 16px;font-size:.7rem;display:flex}.project-gallery-dots{flex-shrink:0;gap:5px;display:flex}.project-gallery-dots span{background:#c4b4d1;border-radius:50%;width:7px;height:7px}.project-gallery-preview{background:#fff;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden}.project-gallery-preview img{width:100%;height:auto;display:block}.project-gallery-figure figcaption{padding:18px 2px 0}.project-gallery-figure h3{margin:0;font-size:1rem}.project-gallery-figure p{color:var(--text-muted);margin:5px 0 0;font-size:.85rem;line-height:1.7}.project-gallery-option:focus-visible{outline:3px solid var(--accent);outline-offset:3px}@media (width<=600px){.project-gallery{margin-top:36px}.project-gallery-option{padding:9px 11px;font-size:.75rem}}@media (prefers-reduced-motion:reduce){.project-gallery-option{transition:none}}.code-explorer-section{margin-top:56px}.code-explorer-section>h2{letter-spacing:-.035em;margin:10px 0;font-size:clamp(1.4rem,2.5vw,1.9rem)}.code-explorer-intro{color:var(--text-muted);margin-bottom:24px;font-size:.95rem;line-height:1.7}.code-explorer{background:#1e1e1e;border:1px solid #393441;border-radius:16px;overflow:hidden;box-shadow:0 16px 40px #302c4315}.code-explorer-toolbar{color:#bcb3c7;background:#29252f;border-bottom:1px solid #ffffff10;align-items:center;gap:16px;padding:14px 18px;font-size:.72rem;display:flex}.code-explorer-dots{flex-shrink:0;gap:6px;display:flex}.code-explorer-dots span{background:#b98487;border-radius:50%;width:8px;height:8px}.code-explorer-dots span:nth-child(2){background:#c5ad77}.code-explorer-dots span:nth-child(3){background:#84a88e}.code-explorer-language{color:#d6ba7c;margin-left:auto}.code-explorer-layout{grid-template-columns:190px minmax(0,1fr);display:grid}.code-explorer-files{background:#242129;border-right:1px solid #ffffff10;padding:20px 10px}.code-explorer-files>p{color:#a49aaf;letter-spacing:.1em;margin:0 12px 16px;font-size:.62rem}.code-explorer-files button{color:#bdb4c7;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:9px;padding:12px 10px;font-size:.78rem;transition:background-color .18s,color .18s;display:flex}.code-explorer-files button>span{color:#d6ba7c;font-size:.62rem;font-weight:700}.code-explorer-files button:hover{background:#ffffff08}.code-explorer-files button[aria-pressed=true]{color:#f1e6fa;background:#aa8cc21c;border-color:#aa8cc23b}.code-explorer-pane{min-width:0;animation:.22s both code-pane-reveal}.code-explorer-file-heading{color:#e4dceb;border-bottom:1px solid #ffffff0d;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:14px 18px;font-size:.75rem;display:flex}.code-explorer-file-heading span:last-child{color:#a49aaf;font-size:.68rem}.code-explorer-pre{tab-size:4;max-height:430px;margin:0;padding:22px 18px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.9;overflow:auto}.code-explorer-pre code{font:inherit}.code-explorer-line{white-space:pre;display:block}.code-explorer-line-number{color:#82788f;text-align:right;-webkit-user-select:none;user-select:none;width:4ch;margin-right:18px;display:inline-block}.code-explorer-explanation{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:24px 4px 0;display:grid}.code-explorer-explanation h3{margin:0;font-size:1.05rem}.code-explorer-explanation p{max-width:750px;color:var(--text-muted);margin:10px 0;font-size:.9rem;line-height:1.8}.code-explorer-explanation ul{color:var(--text-muted);gap:6px;padding-left:18px;font-size:.82rem;line-height:1.7;display:grid}.code-explorer-explanation a{color:var(--accent);text-underline-offset:4px;font-size:.8rem;font-weight:600;line-height:1.7}.code-explorer-files button:focus-visible,.code-explorer-pre:focus-visible,.code-explorer-explanation a:focus-visible{outline-offset:-2px;outline:2px solid #c4a5df}@keyframes code-pane-reveal{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (width<=700px){.code-explorer-layout{grid-template-columns:1fr}.code-explorer-files{border-bottom:1px solid #ffffff10;border-right:0;gap:6px;padding:10px;display:flex;overflow-x:auto}.code-explorer-files>p{display:none}.code-explorer-files button{flex-shrink:0;width:auto}.code-explorer-explanation{grid-template-columns:1fr;gap:12px}.code-explorer-toolbar{gap:10px;font-size:.62rem}}@media (prefers-reduced-motion:reduce){.code-explorer-pane{animation:none}.code-explorer-files button{transition:none}}.home{width:min(100% - 40px,1100px);margin-inline:auto;padding-block:80px}.eyebrow{color:#66518c;letter-spacing:.15em;font-size:.8rem;font-weight:600}h1{margin-block:20px;font-size:clamp(2.5rem,7vw,5rem);line-height:1.1}.intro{max-width:550px;font-size:1.2rem;line-height:1.7}.portfolio-nav{flex-wrap:wrap;gap:16px;margin-top:32px;display:flex}.portfolio-nav a{background-color:#e7def5;border-radius:14px;padding:14px 24px;font-weight:600;text-decoration:none;transition:background-color .18s}.portfolio-nav a:hover{background-color:#d7c8ef}.portfolio-nav a:focus-visible{outline-offset:4px;outline:3px solid #66518c}.portfolio-section{border-top:1px solid #ded7e5;margin-top:80px;padding-top:24px;scroll-margin-top:24px}.portfolio-section p{line-height:1.7}.world-section{margin-top:64px}.world-section h2{margin-bottom:12px;font-size:clamp(1.5rem,4vw,2rem)}.world-description,.world-hint{color:#625a70;line-height:1.7}.world-canvas{cursor:grab;background:radial-gradient(circle at 50% 40%,#fffaf2,#eee5f3);border:1px solid #e5ddea;border-radius:28px;height:480px;margin-top:24px;overflow:hidden}.world-canvas:active{cursor:grabbing}.world-hint{text-align:center;margin-top:12px;font-size:.9rem}@media (width<=600px){.world-canvas{height:340px}}.world-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:20px;display:flex}.world-action{color:#302c43;font:inherit;cursor:pointer;background:#e7def5;border:1px solid #c9b8df;border-radius:14px;padding:12px 20px;font-weight:600;transition:background-color .18s}.world-action:hover{background:#d7c8ef}.world-action:focus-visible{outline-offset:4px;outline:3px solid #66518c}.interest-dialog{color:#302c43;background:#faf7f2;border:1px solid #ded2e9;border-radius:24px;width:min(520px,100% - 32px);max-height:85dvh;padding:clamp(24px,5vw,40px);overflow-y:auto;box-shadow:0 24px 80px #302c4333}.interest-dialog h2{margin-top:12px;font-size:2rem}.interest-dialog p{line-height:1.8}.interest-dialog form{margin-top:28px}.back-link{color:#66518c;margin-bottom:32px;font-weight:600;text-decoration:none;display:inline-block}.back-link:hover{text-decoration:underline}.back-link:focus-visible{outline-offset:4px;border-radius:4px;outline:3px solid #66518c}.teaching-notebook{background:#fffcf7;border:1px solid #ded2e9;border-radius:24px;grid-template-columns:230px minmax(0,1fr);margin-top:48px;display:grid;overflow:hidden;box-shadow:0 16px 48px #49345e0d}.notebook-sidebar{background:#eee6f5;border-right:1px solid #ded2e9;padding:32px 24px}.notebook-label{color:#66518c;letter-spacing:.08em;margin-top:0;font-size:.75rem;font-weight:700;line-height:1.7}.notebook-sidebar nav{gap:12px;margin-top:24px;display:grid}.notebook-sidebar a{color:#49375f;padding:10px 0;font-size:.95rem;line-height:1.6;text-decoration:none}.notebook-sidebar a:hover{text-decoration:underline}.notebook-sidebar a:focus-visible{outline-offset:4px;border-radius:4px;outline:3px solid #66518c}.notebook-content{min-width:0;padding:40px}.notebook-chapter{scroll-margin-top:32px}.notebook-chapter+.notebook-chapter{border-top:1px solid #e8dfec;margin-top:40px;padding-top:32px}.chapter-number{color:#80659f;letter-spacing:.1em;font-size:.75rem;font-weight:700}.notebook-chapter h2{margin-top:12px;font-size:clamp(1.4rem,3vw,1.8rem)}.notebook-chapter p{color:#625a70;line-height:1.85}.subject-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.subject-card{background:#f8f3fb;border:1px solid #e7deed;border-radius:16px;padding:20px}.subject-card h3{margin:0;font-size:1.05rem}.subject-card p{margin-bottom:0;font-size:.95rem}@media (width<=800px){.teaching-notebook{grid-template-columns:1fr}.notebook-sidebar{border-bottom:1px solid #ded2e9;border-right:0}.notebook-content{padding:28px 24px}}@media (width<=500px){.subject-grid{grid-template-columns:1fr}}.home-page{padding-top:24px;padding-bottom:40px}.home-page .home-intro{text-align:center}.home-page .eyebrow{letter-spacing:.12em;margin:0 0 8px;font-size:.7rem}.home-page h1{margin:0;font-size:clamp(1.8rem,4vw,3rem);line-height:1.15}.home-page .world-section{margin-top:16px}.home-page .world-canvas{height:clamp(300px,60svh,560px);margin-top:0}.home-page .world-hint{max-width:720px;margin:12px auto 0;font-size:.85rem}.home-page .world-actions{margin-top:12px}@media (width<=700px){.home-page{padding-top:16px}.home-page .world-canvas{height:clamp(280px,48svh,420px)}}:root{--page-bg:#faf5ed;--surface:#fffaf3;--surface-soft:#f1e5d6;--accent:#a52834;--accent-dark:#7f1d29;--accent-soft:#f1dcd7;--text:#3f302b;--text-muted:#705f56;--border:#dfcdbd;color:var(--text);background-color:var(--page-bg)}.eyebrow,.chapter-number,.notebook-label,.book-page-label,.project-category,.project-art-number{color:var(--accent)}.world-description,.world-hint,.notebook-chapter p,.project-description,.project-details p,.book-pagination p,.book-help{color:var(--text-muted)}.site-header{border-bottom-color:var(--border);background:#faf5edf2}.site-brand{color:var(--text)}.site-brand-logo{object-fit:contain;flex-shrink:0;width:52px;height:52px;display:block}.site-navigation a{color:var(--text-muted)}.site-navigation a:hover{background:var(--surface-soft)}.site-navigation a.active{color:var(--accent-dark);background:var(--accent-soft)}.back-link,.github-profile-link,.project-details summary{color:var(--accent)}.portfolio-nav a,.world-action,.book-control{border-color:var(--border);color:var(--accent-dark);background:var(--accent-soft)}.portfolio-nav a:hover,.world-action:hover,.book-control:hover:not(:disabled){background:#e8c9c1}.site-brand:focus-visible,.site-navigation a:focus-visible,.portfolio-nav a:focus-visible,.back-link:focus-visible,.world-action:focus-visible,.book-control:focus-visible,.book-bookmark:focus-visible,.github-profile-link:focus-visible,.project-details summary:focus-visible,.notebook-sidebar a:focus-visible{outline-color:var(--accent)}.world-canvas{border-color:var(--border);background:radial-gradient(circle at 50% 40%,#fffaf2,#ead8c7)}.interest-dialog{border-color:var(--border);color:var(--text);background:var(--surface);box-shadow:0 24px 80px #57392b33}.interest-dialog::backdrop{background:#38241d88}.teaching-book-page{border-color:var(--border);color:var(--text);background:var(--surface)}.book-page-number{color:var(--text-muted)}.teaching-book-page.is-cover{border-color:var(--accent-dark);color:#fff6e9;background:radial-gradient(circle at top right, #ffffff18, transparent 65%), var(--accent)}.is-cover .book-page-label,.is-cover .book-page-number{color:#f5dfcf}.book-bookmark{border-color:var(--border);color:var(--accent-dark);background:#edd8c9}.book-bookmark:nth-child(2){background:#f0d4cc}.book-bookmark:nth-child(3){background:#e8d8bf}.book-bookmark:nth-child(4){background:#e4c6bd}.book-bookmark[aria-current=true]{color:var(--accent-dark);box-shadow:inset 5px 0 var(--accent)}.book-reading-view{border-color:var(--border);color:var(--text);background:var(--surface)}.book-reading-section+.book-reading-section{border-color:var(--border)}.project-card{border-color:var(--border);background:var(--surface);box-shadow:0 12px 32px #57392b0a}.project-art{background:#ebd1c7}.project-card--taskflow .project-art{background:#e7dbc6}.project-card--emoji-game .project-art{background:#e8c2b6}.project-window{background:#fffaf3cc;border-color:#ffffffb3;box-shadow:0 12px 24px #57392b12}.project-window-bar{border-bottom-color:var(--border)}.project-window-bar span{background:#b87973}.project-art-title{color:var(--accent-dark)}.project-technologies li{color:var(--accent-dark);background:var(--accent-soft)}.project-details,.portfolio-section{border-color:var(--border)}.book-bookmark{--bookmark-accent:#75529a;color:#49335f;background:#e7dcf2;border-color:#cdbbdd}.book-bookmark:nth-child(2){--bookmark-accent:#326980;color:#284f61;background:#d6eaf2;border-color:#aacbd7}.book-bookmark:nth-child(3){--bookmark-accent:#975026;color:#754021;background:#f5dfc7;border-color:#dfb99b}.book-bookmark:nth-child(4){--bookmark-accent:#4d713b;color:#3d582f;background:#dfebd3;border-color:#b7cba7}.book-bookmark[aria-current=true]{color:var(--bookmark-accent);box-shadow:inset 5px 0 var(--bookmark-accent);font-weight:700}.book-bookmark:hover{text-underline-offset:4px;text-decoration:underline}.book-bookmark:focus-visible{outline-color:var(--bookmark-accent)}.project-card--eshop{--project-accent:#75529a;--project-ink:#503568;--project-soft:#eee3f7;--project-art-bg:#e4d5f0}.project-card--taskflow{--project-accent:#326980;--project-ink:#284f61;--project-soft:#dfeef4;--project-art-bg:#cce4ec}.project-card--emoji-game{--project-accent:#975026;--project-ink:#754021;--project-soft:#f6e6d2;--project-art-bg:#f0d3b4}.project-card .project-art{background:var(--project-art-bg)}.project-card .project-window-bar span{background:var(--project-accent)}.project-card .project-art-number,.project-card .project-category{color:var(--project-accent)}.project-card .project-art-title,.project-card .project-details summary{color:var(--project-ink)}.project-card .project-technologies li{color:var(--project-ink);background:var(--project-soft)}.project-card .project-details summary:focus-visible{outline-color:var(--project-accent)}.home-page .world-title{color:var(--text);letter-spacing:-.035em;text-align:center;margin:0 0 12px;font-size:clamp(1.3rem,3.2vw,2.3rem);font-weight:500;line-height:1.5}.world-title-part{animation:.8s cubic-bezier(.22,1,.36,1) both world-title-reveal;display:inline-block}.world-title-accent{color:var(--accent);font-weight:750;animation-delay:.18s;position:relative}.world-title-accent:after{content:"";background:var(--accent);opacity:.45;transform-origin:0;border-radius:50%;height:.08em;animation:.65s .65s forwards world-title-underline;position:absolute;bottom:.02em;left:0;right:0;transform:scaleX(0)rotate(-2deg)}@keyframes world-title-reveal{0%{opacity:0;filter:blur(5px);transform:translateY(14px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes world-title-underline{to{transform:scaleX(1)rotate(-2deg)}}.home-page .world-canvas{box-shadow:none;background:0 0;border:0;border-radius:0}@media (prefers-reduced-motion:reduce){.world-title-part{animation:none}.world-title-accent:after{animation:none;transform:scaleX(1)rotate(-2deg)}}.home-page .world-title{margin-bottom:8px;font-size:clamp(1.1rem,2.2vw,1.6rem)}.home-page{width:min(100% - 32px,1440px)}.room-label{border:1px solid var(--border);background:var(--surface);color:var(--accent-dark);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:8px;padding:9px 18px;font-size:16px;font-weight:700;line-height:1.3;transition:background-color .18s,color .18s,border-color .18s,box-shadow .18s;display:block;box-shadow:0 3px 8px #57392b18}.room-label.is-hovered{border-color:var(--accent);background:var(--accent);color:var(--surface);box-shadow:0 5px 14px #a5283430}@media (prefers-reduced-motion:reduce){.room-label{transition:none}}.object-hint{color:var(--text-muted);white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0;visibility:hidden;background:#fffaf3f5;border:1px solid #705f5633;border-radius:7px;align-items:center;gap:6px;padding:5px 8px;font-size:.7rem;font-weight:500;line-height:1.4;transition:opacity .22s,transform .26s cubic-bezier(.22,1,.36,1),visibility 0s linear .26s;display:inline-flex;transform:translateY(4px);box-shadow:0 3px 10px #57392b12}.object-hint.is-visible{opacity:1;visibility:visible;transition:opacity .22s,transform .26s cubic-bezier(.22,1,.36,1),visibility;transform:translateY(0)}.object-hint-icon{width:14px;height:14px;color:var(--accent);border:1px solid;border-radius:50%;flex-shrink:0;place-items:center;font-family:Georgia,serif;font-size:10px;font-style:italic;line-height:1;display:inline-grid}@media (prefers-reduced-motion:reduce){.object-hint,.object-hint.is-visible{transition:none;transform:none}}.teaching-page{padding-top:20px;padding-bottom:40px}.teaching-page .back-link{margin-bottom:16px;font-size:.85rem}.teaching-page>header .eyebrow{margin:0 0 6px;font-size:.7rem}.teaching-page>header h1{margin:0;font-size:clamp(1.8rem,4vw,3rem);line-height:1.15}.teaching-page .teaching-book{margin-top:16px}.teaching-page .book-toolbar{margin-bottom:8px}.teaching-page .book-stage{padding-block:12px}.teaching-page .book-bookmarks{padding-top:36px}@media (width<=900px){.teaching-page .book-bookmarks{padding-top:0}}@media (width<=700px){.teaching-page{padding-top:16px}}.teaching-page-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.teaching-page .teaching-page-heading .back-link{margin:0}.teaching-page-title{text-align:right;flex-shrink:0}.teaching-page .teaching-page-title .eyebrow{margin:0 0 4px}.teaching-page .teaching-page-title h1{margin:0;font-size:clamp(1.6rem,3.5vw,2.5rem);line-height:1.15}@media (width<=500px){.teaching-page-heading{gap:12px}.teaching-page .teaching-page-heading .back-link{max-width:140px;font-size:.8rem;line-height:1.5}}.book-sound-button{border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;padding:0;display:inline-grid}.book-sound-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--surface)}.book-sound-button[aria-pressed=true]:hover{background:var(--accent-dark)}.teaching-page .teaching-book{padding-left:60px;position:relative}.teaching-page .book-toolbar{flex-direction:column;align-items:center;gap:10px;margin:0;display:flex;position:absolute;top:24px;left:0}.teaching-page .book-icon-button{border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;padding:0;display:inline-grid}.book-icon-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--surface)}.book-icon-button[aria-pressed=true]:hover{background:var(--accent-dark)}@media (width<=600px){.teaching-page .teaching-book{padding-left:44px}.teaching-page .book-toolbar{gap:8px}.teaching-page .book-icon-button{width:36px;height:36px}.teaching-page .book-icon-button svg{width:19px;height:19px}}@media (width<=380px){.teaching-page .teaching-book{padding-left:0}.teaching-page .book-toolbar{flex-direction:row;justify-content:flex-start;margin-bottom:12px;position:static}}.coding-page{padding-top:20px;padding-bottom:40px}.coding-page-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.coding-page .coding-page-heading .back-link{margin:0;font-size:.85rem}.coding-page-title{text-align:right;min-width:0}.coding-page-title .eyebrow{margin:0 0 4px;font-size:.7rem}.coding-page-title h1{margin:0;font-size:clamp(1.5rem,3.5vw,2.5rem);line-height:1.15}.coding-page .projects-section{margin-top:28px}.coding-page .projects-heading{margin-bottom:20px}.coding-page .projects-heading h2{font-size:clamp(1.15rem,2.5vw,1.5rem)}@media (width<=700px){.coding-page{padding-top:16px}}@media (width<=500px){.coding-page-heading{gap:12px}.coding-page .coding-page-heading .back-link{flex-shrink:0;max-width:110px;font-size:.8rem;line-height:1.5}.coding-page-title h1{font-size:clamp(1.2rem,5.5vw,1.6rem)}}.book-cover-logo{object-fit:contain;flex-shrink:0;width:88px;height:88px;margin:8px auto;display:block}.teaching-book-page.is-cover .book-page-label{margin-bottom:4px}.teaching-book-page.is-cover h2{margin-block:10px 14px}.teaching-book-page.is-cover .book-page-text p{font-size:.9rem}.book-bookmark:nth-child(5){--bookmark-accent:#9a4e69;color:#783b51;background:#f0dce4;border-color:#d9afbd}.book-bookmark:nth-child(6){--bookmark-accent:#39796d;color:#2d5f55;background:#d8ece6;border-color:#a8cfc4}.book-material-link{color:var(--accent);text-underline-offset:4px;margin-top:12px;padding-bottom:3px;font-size:.85rem;font-weight:700;line-height:1.5;text-decoration:underline;display:inline-block}.is-cover .book-material-link{color:#fff6e9}.book-material-link:focus-visible{outline-offset:4px;border-radius:3px;outline:2px solid}.book-reading-view .book-cover-logo{margin-left:0}.materials-intro{max-width:720px;margin-top:40px}.materials-intro p{color:var(--text-muted);line-height:1.8}.materials-empty{border:1px dashed var(--border);background:var(--surface);border-radius:14px;margin-top:24px;padding:20px}@media (width<=600px){.teaching-page-title h1{overflow-wrap:anywhere}}.book-cover-portrait{aspect-ratio:4/5;object-fit:cover;object-position:center;border:3px solid #fff6e9;border-radius:12px;flex-shrink:0;width:clamp(88px,10vw,120px);height:auto;margin:10px auto;display:block;box-shadow:0 6px 18px #42151b33}.book-reading-view .book-cover-portrait{margin-left:0}.teaching-book-page.is-front-cover{background:#942b36;border-color:#7e2430}.is-front-cover .teaching-book-page-inner{padding:clamp(18px,2.4vw,30px)}.book-front-cover{text-align:center;grid-template-rows:auto auto minmax(0,1fr) auto;gap:12px;width:100%;height:100%;min-height:0;display:grid}.book-front-eyebrow{color:#ecd4c5;letter-spacing:.16em;margin:0;font-size:.6rem;font-weight:600;line-height:1.5}.teaching-book-page.is-front-cover .book-front-title{color:#fff7ed;letter-spacing:-.035em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:400;line-height:1.15}.book-front-photo{background:#e4d8ca;border-radius:6px;justify-self:center;width:74%;max-width:190px;min-height:0;overflow:hidden}.book-front-photo img{object-fit:cover;object-position:50% 35%;width:100%;height:100%;display:block}.book-front-signature p{color:#fff7ed;letter-spacing:.06em;margin:0 0 6px;font-size:.78rem;font-weight:600;line-height:1.5}.book-front-signature span{color:#ecd4c5;font-size:.65rem;line-height:1.6;display:block}.teaching-book-page:not(.is-cover) .book-page-label{letter-spacing:.09em;font-size:.62rem}.teaching-book-page:not(.is-cover) h2{letter-spacing:-.025em;margin:12px 0 20px;font-family:inherit;font-size:clamp(1.2rem,2vw,1.65rem);font-weight:650;line-height:1.3}.teaching-book-page:not(.is-cover) .book-page-text p{text-align:left;margin:0 0 16px;font-size:.9rem;line-height:1.8}.book-page-number{font-size:.7rem}.book-reading-view .book-front-cover{text-align:left;grid-template-rows:auto;justify-items:start;height:auto}.book-reading-view .book-front-eyebrow,.book-reading-view .book-front-signature span{color:var(--text-muted)}.book-reading-view .book-front-title,.book-reading-view .book-front-signature p{color:var(--text)}.book-front-cover{grid-template-rows:auto auto minmax(0,1fr) auto;gap:10px}.teaching-book-page.is-front-cover .book-front-title{margin:0;font-size:clamp(1.5rem,2.6vw,1.9rem)}.book-front-eyebrow{letter-spacing:.13em;font-size:.58rem}.book-front-photo{background:0 0;border-radius:0;justify-content:center;justify-self:center;align-items:center;width:76%;max-width:180px;height:100%;min-height:0;display:flex}.book-front-photo img{object-fit:contain;border-radius:6px;width:auto;max-width:100%;height:auto;max-height:100%;display:block}.book-front-signature{padding-top:4px}.book-front-signature p{letter-spacing:.04em;font-size:.72rem}.book-front-signature span{max-width:230px;margin-inline:auto;font-size:.62rem;line-height:1.6}.book-reading-view .book-front-photo{justify-self:start;width:160px;height:200px}.book-reading-view .book-front-signature span{margin-left:0}.teaching-book-page:not(.is-cover) .book-page-text .book-closing,.book-reading-view .book-closing{border-left:2px solid var(--accent);color:var(--accent);margin-top:20px;padding-left:12px;font-weight:600;line-height:1.7}.book-experience-heading{margin-bottom:16px}.book-experience-heading h3{color:var(--text);margin:0 0 5px;font-size:.95rem;font-weight:700;line-height:1.4}.book-experience .book-experience-organization{color:var(--text-muted);margin:0;font-size:.8rem;line-height:1.5}.book-experience .book-experience-period{background:var(--accent-soft);color:var(--accent-dark);border-radius:5px;margin:8px 0 0;padding:3px 8px;font-size:.72rem;font-weight:600;line-height:1.5;display:inline-block}.book-experience-list{gap:12px;margin:0;padding-left:16px;display:grid}.book-experience-list li{color:var(--text-muted);padding-left:3px;font-size:.82rem;line-height:1.65}.book-experience-list li::marker{color:var(--accent)}.book-competition-list{gap:10px;margin:16px 0;padding:0;list-style:none;display:grid}.book-competition-list li{color:var(--text-muted);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;font-size:.82rem;line-height:1.55;display:grid}.book-competition-year{background:var(--accent-soft);color:var(--accent-dark);border-radius:5px;padding:2px 6px;font-size:.72rem;font-weight:700;line-height:1.6}.book-studies{gap:14px;margin:0;padding:0;list-style:none;display:grid}.book-study-item{border-bottom:1px solid var(--border);padding-bottom:14px}.book-study-item:last-child{border-bottom:0;padding-bottom:0}.book-study-item h3{color:var(--text);margin:0 0 5px;font-size:.86rem;font-weight:650;line-height:1.45}.book-study-institution{color:var(--text-muted);font-size:.78rem;line-height:1.5;display:block}.book-study-period{color:var(--accent);margin-top:5px;font-size:.73rem;font-weight:600;line-height:1.5;display:block}.book-study-status{background:var(--accent-soft);color:var(--accent-dark);border-radius:5px;margin-top:5px;padding:2px 7px;font-size:.68rem;line-height:1.5;display:inline-block}.book-teaching-sections{gap:22px;display:grid}.book-teaching-section+.book-teaching-section{border-top:1px solid var(--border);padding-top:18px}.book-teaching-section h3{color:var(--accent-dark);margin:0 0 10px;font-size:.9rem;font-weight:700;line-height:1.4}.teaching-book .book-page-text .book-teaching-section p{color:var(--text-muted);margin:0;font-size:.86rem;line-height:1.75}.book-teaching-technologies{flex-wrap:wrap;gap:7px;margin:0 0 14px;padding:0;list-style:none;display:flex}.book-teaching-technologies li{color:#503568;background:#e7dcf2;border-radius:6px;padding:5px 8px;font-size:.73rem;font-weight:600;line-height:1.4}.book-teaching-technologies li:nth-child(3n+2){color:#284f61;background:#d6eaf2}.book-teaching-technologies li:nth-child(3n){color:#3d582f;background:#dfebd3}.book-teaching-list{gap:12px;margin:0;padding-left:16px;display:grid}.book-teaching-list li{color:var(--text-muted);padding-left:3px;font-size:.84rem;line-height:1.7}.book-teaching-list li::marker{color:var(--accent)}.teaching-book-page.is-back-cover{background:#942b36;border-color:#7e2430}.is-back-cover .teaching-book-page-inner{padding:clamp(22px,3vw,36px)}.book-back-cover{text-align:center;grid-template-rows:minmax(0,1fr) auto;gap:24px;width:100%;height:100%;min-height:0;display:grid}.book-back-message{align-self:center}.teaching-book-page.is-back-cover .book-back-message h2{color:#fff7ed;letter-spacing:-.025em;margin:0 0 24px;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.5rem,2.8vw,2rem);font-weight:400;line-height:1.3}.book-back-message p{color:#f0ded2;max-width:28ch;margin:0 auto;font-size:.88rem;line-height:1.85}.book-back-signature{color:#fff7ed;letter-spacing:.02em;margin:0;font-size:.8rem;font-weight:600}.book-back-footer .book-material-link{color:#f0ded2;margin-top:12px;font-size:.75rem;font-weight:500}.book-reading-view .book-back-cover{height:auto;padding-block:24px}.book-reading-view .book-back-message h2,.book-reading-view .book-back-signature{color:var(--text)}.book-reading-view .book-back-message p{color:var(--text-muted)}.book-reading-view .book-back-footer .book-material-link{color:var(--accent)}.interest-language-list{gap:10px;margin:24px 0 0;padding:0;list-style:none;display:grid}.interest-language-list li{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;font-weight:600;display:flex}.interest-language-level{background:var(--accent-soft);color:var(--accent-dark);border-radius:7px;padding:4px 10px;font-size:.85rem;font-weight:700}.interest-quote p{color:var(--accent-dark);margin:0;font-family:Georgia,Times New Roman,serif;font-size:1.05rem}.interest-awards{gap:12px;margin:0;padding:0;list-style:none;display:grid}.interest-awards li{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:14px;padding:16px;display:grid}.interest-award-year{background:var(--accent-soft);color:var(--accent-dark);border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:700}.interest-awards h4{color:var(--text);margin:0;font-size:.9rem;line-height:1.5}.interest-awards p{color:var(--text-muted);margin:5px 0 0;font-size:.9rem}.interest-quote{border-left:2px solid var(--border);background:0 0;border-radius:0;margin:14px 0 18px;padding:4px 0 4px 12px}.interest-quote p{color:var(--text-muted);margin:0;font-family:inherit;font-size:.85rem;font-style:italic;font-weight:400;line-height:1.6}.interest-awards-title{margin:18px 0 10px;font-size:.9rem}.interest-awards{gap:8px}.interest-awards li{border-radius:8px;gap:10px;padding:10px 12px}.interest-award-year{padding:3px 6px;font-size:.7rem}.interest-awards h4{font-size:.82rem;line-height:1.4}.interest-awards p{margin:2px 0 0;font-size:.82rem;line-height:1.5}.photography-experience-title{color:var(--text);margin:20px 0 12px;font-size:.9rem}.photography-experience-list{gap:10px;margin:0;padding-left:18px;display:grid}.photography-experience-list li{color:var(--text-muted);padding-left:3px;font-size:.85rem;line-height:1.65}.photography-experience-list li::marker{color:var(--accent)}
