:root{--pink-50: #fff5f9;--pink-100: #ffe8f1;--pink-200: #ffd4e5;--pink-300: #ffb8d4;--pink-400: #ff8ebb;--pink-500: #f2659f;--pink-600: #d94483;--pink-700: #a62a60;--cream: #fffaf6;--mint: #cdf0e4;--butter: #fff2c9;--lilac: #e8ddff;--ink: #4a2a3c;--ink-soft: #8a6678;--radius: 26px;--radius-sm: 18px;--shadow: 0 6px 0 var(--pink-200);--shadow-lift: 0 10px 24px rgba(217, 68, 131, .18);--font-ui: "Baloo 2", "Quicksand", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-zh: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Baloo 2", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{font-family:var(--font-ui);color:var(--ink);background:var(--pink-50);background-image:radial-gradient(var(--pink-200) 1.4px,transparent 1.4px);background-size:22px 22px;min-height:100vh;font-size:17px;line-height:1.45}button{font-family:inherit;color:inherit;cursor:pointer;border:none;background:none}code{background:var(--pink-100);border-radius:6px;padding:1px 6px;font-size:.9em}.app{max-width:760px;margin:0 auto;padding:0 16px 48px;position:relative}.clouds{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.clouds span{position:absolute;font-size:44px;opacity:.45;animation:bob 7s ease-in-out infinite}.clouds span:nth-child(1){top:14%;left:-2%}.clouds span:nth-child(2){top:52%;right:-1%;animation-delay:1.4s;font-size:32px}.clouds span:nth-child(3){bottom:8%;left:4%;animation-delay:2.6s;font-size:36px}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.topbar{position:sticky;top:0;z-index:5;padding:12px 0 10px;background:linear-gradient(var(--pink-50) 70%,rgba(255,245,249,0))}.topbar-row{display:flex;align-items:center;gap:10px}.iconbtn{width:44px;height:44px;flex:0 0 44px;border-radius:50%;background:#fff;box-shadow:0 3px 0 var(--pink-200);font-size:22px;font-weight:700;color:var(--pink-600);display:grid;place-items:center}.iconbtn:active{transform:translateY(3px);box-shadow:none}.iconbtn.ghost{background:none;box-shadow:none}.brand{flex:1 1 auto;display:flex;align-items:center;gap:9px;min-width:0;text-align:left;padding:0;color:inherit;text-decoration:none;cursor:pointer;transition:transform .12s ease}.brand:active{transform:scale(.97)}.brand-logo{width:44px;height:44px;flex:0 0 44px;object-fit:contain;margin-top:-2px}.brand-text{display:flex;flex-direction:column;line-height:1.1;min-width:0}.brand-text strong{font-size:21px;font-weight:800;letter-spacing:-.01em;color:var(--pink-600)}.brand-text em{font-family:var(--font-zh);font-style:normal;font-size:12.5px;color:var(--ink-soft)}.dirtoggle{display:flex;background:#fff;border-radius:999px;padding:4px;box-shadow:0 3px 0 var(--pink-200);flex:0 0 auto}.dirtoggle button{border-radius:999px;padding:6px 11px;font-size:13px;font-weight:700;color:var(--ink-soft);font-family:var(--font-zh)}.dirtoggle button.on{background:var(--pink-400);color:#fff;box-shadow:inset 0 -2px #00000014}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:9px 2px 0;font-size:13.5px;font-weight:600;color:var(--pink-600);font-family:var(--font-zh)}.crumb-sep{margin:0 5px;opacity:.5}.screen{position:relative;z-index:1;padding-top:8px}.hero{text-align:center;margin:18px 0 22px;font-size:27px;font-weight:800;color:var(--pink-700);line-height:1.2;font-family:var(--font-zh)}.hero.small{font-size:23px;margin:12px 0 18px}.hero-emoji{display:block;font-size:40px;margin-bottom:4px;animation:bob 4s ease-in-out infinite}.hero small{display:block;margin-top:5px;font-size:15px;font-weight:600;color:var(--ink-soft)}.note{text-align:center;font-size:14px;color:var(--ink-soft);margin:24px 6px 0;font-family:var(--font-zh)}.note.warn{background:var(--butter);border-radius:var(--radius-sm);padding:12px 16px;color:#7a5b1a}.dircards{display:grid;gap:14px}.dircard{position:relative;background:#fff;border-radius:var(--radius);padding:22px 20px;text-align:center;box-shadow:var(--shadow);border:3px solid var(--pink-100);transition:transform .12s ease}.dircard.suggested{border-color:var(--pink-300);background:linear-gradient(180deg,#fff,var(--pink-50))}.dircard:active{transform:translateY(5px);box-shadow:none}.dircard strong{display:block;font-size:22px;color:var(--pink-700);font-family:var(--font-zh)}.dircard-flags{display:block;font-size:30px;margin-bottom:6px}.dircard-sub{display:block;margin-top:4px;font-size:14.5px;color:var(--ink-soft);font-family:var(--font-zh)}.tag{position:absolute;top:-11px;left:50%;transform:translate(-50%);background:var(--pink-500);color:#fff;font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:4px 12px;border-radius:999px}.roomgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.roomcard{background:#fff;border-radius:var(--radius);padding:18px 12px 15px;text-align:center;box-shadow:var(--shadow);border:3px solid var(--pink-100);transition:transform .12s ease}.roomcard:active{transform:translateY(5px);box-shadow:none}.roomcard-emoji{display:block;font-size:38px;line-height:1;margin-bottom:8px}.roomcard strong{display:block;font-size:17.5px;color:var(--pink-700);font-family:var(--font-zh)}.roomcard-sub{display:block;font-size:14px;color:var(--ink);font-family:var(--font-zh)}.roomcard-py{display:block;font-size:12.5px;color:var(--ink-soft);font-style:italic}.roomcard:nth-child(8n+1){background:linear-gradient(180deg,#fff,var(--pink-100))}.roomcard:nth-child(8n+2){background:linear-gradient(180deg,#fff,var(--mint))}.roomcard:nth-child(8n+3){background:linear-gradient(180deg,#fff,var(--butter))}.roomcard:nth-child(8n+4){background:linear-gradient(180deg,#fff,var(--lilac))}.roomcard:nth-child(8n+5){background:linear-gradient(180deg,#fff,var(--pink-200))}.roomcard:nth-child(8n+6){background:linear-gradient(180deg,#fff,#d8ecff)}.roomcard:nth-child(8n+7){background:linear-gradient(180deg,#fff,#ffe2d1)}.roomcard:nth-child(8n){background:linear-gradient(180deg,#fff,#e3f5d6)}.chipgrid{display:grid;gap:11px}.chip{display:flex;align-items:center;gap:13px;width:100%;background:#fff;border-radius:var(--radius);padding:15px 16px;text-align:left;box-shadow:var(--shadow);border:3px solid var(--pink-100);transition:transform .12s ease}.chip:active{transform:translateY(5px);box-shadow:none}.chip-emoji{font-size:30px;flex:0 0 auto}.chip-body{flex:1 1 auto;min-width:0}.chip-body strong{display:block;font-size:22px;color:var(--pink-700);line-height:1.2}.chip-body strong.zh{font-family:var(--font-zh);font-size:24px}.chip-py{display:block;font-size:14px;color:var(--pink-500);font-style:italic}.chip-py.inline{display:inline;margin-left:4px}.chip-sub{display:block;font-size:15px;color:var(--ink-soft)}.chip-sub.zh{font-family:var(--font-zh);font-size:16px;color:var(--ink)}.chip-arrow{font-size:26px;font-weight:700;color:var(--pink-300);flex:0 0 auto}.chipgrid.starter .chip{padding:18px}.convo{display:grid;gap:14px}.convo-head{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,var(--pink-200),var(--pink-100));border-radius:var(--radius);padding:15px 18px}.convo-emoji{font-size:34px}.convo-head strong{display:block;font-size:19px;color:var(--pink-700);font-family:var(--font-zh)}.convo-head span{display:block;font-size:14.5px;color:var(--ink-soft);font-family:var(--font-zh)}.convo-head em{font-style:italic;color:var(--pink-600)}.convo-playall{display:grid;grid-template-columns:1fr 1fr;gap:10px}.bubble{background:#fff;border-radius:var(--radius);padding:14px 15px 16px;box-shadow:var(--shadow);border:3px solid var(--pink-100)}.bubble.grandparent{border-color:var(--mint);box-shadow:0 6px 0 var(--mint)}.bubble-who{font-size:13px;font-weight:700;color:var(--ink-soft);margin-bottom:9px;display:flex;align-items:center;gap:6px;font-family:var(--font-zh)}.bubble-who em{font-style:normal;opacity:.75}.bubble-arrow{text-align:center;font-size:15px;color:var(--pink-300);margin:2px 0;font-weight:700}.line{display:flex;align-items:center;gap:10px;border-radius:var(--radius-sm);padding:11px 13px}.line.source{background:#fbf7f9}.line.target{background:linear-gradient(135deg,var(--pink-100),var(--butter));border:2px dashed var(--pink-300)}.line-text{flex:1 1 auto;min-width:0}.line-main{margin:0;font-size:20px;font-weight:700;color:var(--ink);line-height:1.35}.line.zh .line-main{font-family:var(--font-zh);font-size:23px}.line.target .line-main{color:var(--pink-700)}.line-py{margin:3px 0 0;font-size:14.5px;font-style:italic;color:var(--pink-600)}.play{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;background:var(--pink-400);color:#fff;border-radius:999px;padding:9px 14px;font-size:14px;font-weight:700;box-shadow:0 3px 0 var(--pink-600);font-family:var(--font-zh)}.play:active{transform:translateY(3px);box-shadow:none}.play.playing{background:var(--pink-600);animation:pulse 1s ease-in-out infinite}.play.big{width:100%;justify-content:center;padding:13px 10px;font-size:15px}.play-label{white-space:nowrap}@keyframes pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.18)}}.footer{position:relative;z-index:1;text-align:center;margin-top:34px;font-size:13px;color:var(--ink-soft);font-family:var(--font-zh)}@media (max-width: 420px){body{font-size:16px}.hero{font-size:24px}.play .play-label{display:none}.play.big .play-label{display:inline}.play{padding:11px 13px;font-size:15px}.roomgrid{gap:10px}}@media (min-width: 620px){.dircards{grid-template-columns:1fr 1fr}.roomgrid{grid-template-columns:repeat(4,1fr)}.chipgrid.starter{grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.custom{margin:0 0 18px}.micbtn{width:100%;display:flex;align-items:center;gap:14px;padding:17px 18px;border-radius:var(--radius);background:linear-gradient(135deg,var(--pink-400),var(--pink-500));color:#fff;box-shadow:0 6px 0 var(--pink-600);border:3px solid var(--pink-300);text-align:left;transition:transform .12s ease}.micbtn:active{transform:translateY(5px);box-shadow:none}.micbtn:disabled{cursor:progress}.micbtn-icon{font-size:32px;line-height:1;flex:0 0 auto}.micbtn-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.2}.micbtn-text strong{font-size:21px;font-family:var(--font-zh)}.micbtn-text span{font-size:13.5px;opacity:.9;font-family:var(--font-zh)}.micbtn-timer{flex:0 0 auto;font-size:15px;font-weight:800;background:#ffffff40;border-radius:999px;padding:4px 11px}.micbtn.recording{background:linear-gradient(135deg,#ff5f95,var(--pink-700));border-color:#fff;animation:listening 1.1s ease-in-out infinite}.micbtn.thinking{background:linear-gradient(135deg,var(--lilac),var(--pink-300));color:var(--pink-700);animation:shimmer 1.3s ease-in-out infinite}@keyframes listening{0%,to{box-shadow:0 6px 0 var(--pink-700),0 0 #ff5f9573}50%{box-shadow:0 6px 0 var(--pink-700),0 0 0 14px #ff5f9500}}@keyframes shimmer{0%,to{filter:brightness(1)}50%{filter:brightness(1.12)}}.custom-hint{margin:9px 6px 0;text-align:center;font-size:13.5px;color:var(--ink-soft);font-family:var(--font-zh)}.custom-error{margin-top:11px;background:var(--butter);border-radius:var(--radius-sm);padding:12px 15px;font-size:14.5px;color:#7a5b1a;font-family:var(--font-zh)}.custom-result{margin-top:12px;display:grid;gap:9px;background:#fff;border-radius:var(--radius);padding:13px;box-shadow:var(--shadow);border:3px solid var(--pink-100);animation:popin .25s ease}@keyframes popin{0%{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}.line-tag{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:2px}.line.target .line-tag{color:var(--pink-600)}.linkbtn{background:none;color:var(--pink-600);font-weight:700;font-size:14px;text-decoration:underline;padding:4px 6px;font-family:var(--font-zh)}.linkbtn.center{justify-self:center}.roomdivider{display:flex;align-items:center;gap:11px;margin:0 2px 13px;color:var(--ink-soft);font-size:13px;font-family:var(--font-zh)}.roomdivider:before,.roomdivider:after{content:"";flex:1 1 auto;height:2px;background:var(--pink-200);border-radius:2px}.hintgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.hintcard{background:#fff;border-radius:var(--radius);padding:14px 11px 12px;text-align:center;box-shadow:var(--shadow);border:3px solid var(--pink-100);transition:transform .12s ease;min-height:118px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px}.hintcard:active{transform:translateY(5px);box-shadow:none}.hintcard-emoji{font-size:30px;line-height:1.1;margin-bottom:3px}.hintcard strong{font-size:16px;line-height:1.2;color:var(--pink-700);overflow-wrap:anywhere}.hintcard strong.zh{font-family:var(--font-zh);font-size:17.5px}.hintcard-sub{font-size:13.5px;line-height:1.25;color:var(--ink-soft);overflow-wrap:anywhere}.hintcard-sub.zh{font-family:var(--font-zh);font-size:14.5px;color:var(--ink)}.hintcard-py{font-size:12px;font-style:italic;line-height:1.2;color:var(--pink-500);overflow-wrap:anywhere}.hintcard:nth-child(4n+1){background:linear-gradient(180deg,#fff,var(--pink-100))}.hintcard:nth-child(4n+2){background:linear-gradient(180deg,#fff,var(--butter))}.hintcard:nth-child(4n+3){background:linear-gradient(180deg,#fff,var(--mint))}.hintcard:nth-child(4n){background:linear-gradient(180deg,#fff,var(--lilac))}@media (min-width: 620px){.hintgrid{grid-template-columns:repeat(3,1fr)}}.entrynote{background:linear-gradient(135deg,var(--lilac),var(--pink-100));border-radius:var(--radius);border:3px solid var(--pink-200);padding:16px 18px;margin-bottom:16px}.entrynote p{margin:0 0 6px}.entrynote-en{font-size:16px;font-weight:700;color:var(--pink-700);line-height:1.35}.entrynote-zh{font-family:var(--font-zh);font-size:15.5px;color:var(--ink);line-height:1.5}.entrynote-py{font-size:13px;font-style:italic;color:var(--pink-600);line-height:1.4}.entrynote-play{display:flex;gap:9px;margin-top:11px}.sectionnote{background:var(--butter);border-radius:var(--radius-sm);padding:12px 16px;margin:0 0 15px}.sectionnote p{margin:0;font-size:14.5px;color:#7a5b1a;line-height:1.45}.sectionnote-zh{font-family:var(--font-zh);margin-top:4px!important}.roomcard-count{display:block;margin-top:5px;font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--pink-500)}.bubble.officer{border-color:var(--lilac);box-shadow:0 6px 0 var(--lilac)}.bubble.traveler{border-color:var(--mint);box-shadow:0 6px 0 var(--mint)}.dirtoggle{flex-wrap:wrap;justify-content:flex-end}.dirtoggle button{white-space:nowrap}@media (max-width: 460px){.dirtoggle button{padding:6px 9px;font-size:12px}}.heard{margin:2px 4px 0;text-align:center;font-size:12.5px;color:var(--ink-soft);font-family:var(--font-zh)}
