:root{--primary-color:#FF9800;--secondary-color:#4CAF50;--bg-color:#FFF3E0;--card-bg:#FFFFFF;--text-color:#333333;--accent-color:#2196F3;--error-color:#F44336}*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Noto Sans TC',sans-serif;background-color:var(--bg-color);color:var(--text-color);display:flex;justify-content:center;min-height:100vh;transition:background-color .8s ease}body.spotlight-active .game-container{filter:blur(6px) saturate(.92);transition:filter .35s ease}.game-container{width:100%;max-width:800px;padding:20px;display:flex;flex-direction:column;gap:20px}.site-footer{margin-top:0;padding:0}.site-footer-inner{position:relative;margin:0 auto;max-width:720px;padding:8px 14px;border-radius:14px;border:1px solid rgba(121,85,72,.2);background:linear-gradient(180deg,rgba(255,251,242,.96) 0,rgba(255,248,232,.9) 100%);box-shadow:0 6px 14px rgba(60,40,20,.08);text-align:center;font-size:.88rem;color:#6d4c41;line-height:1.75}.site-footer-inner::before{content:'';position:absolute;left:14px;right:14px;top:0;height:2px;border-radius:999px;background:linear-gradient(90deg,rgba(255,152,0,.08),rgba(255,152,0,.52),rgba(255,152,0,.08))}.site-footer-credit{margin:0}.site-footer-copyright{margin:8px 0 0;text-align:center;font-size:.82rem;color:#8d6e63}.site-footer a{display:inline-block;margin:0 2px;padding:2px 8px;border-radius:999px;border:1px solid rgba(21,101,192,.2);background:rgba(227,242,253,.85);color:#0d5cab;font-weight:700;text-decoration:none;transition:background .2s ease,color .2s ease,border-color .2s ease}.site-footer a:hover{background:#dceefe;border-color:rgba(21,101,192,.35);color:#0b4f91}.status-bar{display:flex;justify-content:space-between;align-items:center;background:var(--card-bg);padding:15px 20px;border-radius:15px;box-shadow:0 4px 6px rgba(0,0,0,.05);font-size:1.2rem;font-weight:700;transition:all .5s ease}.combo-display,.score-display{display:flex;align-items:center;gap:8px;font-size:1.15rem;font-weight:700;padding:8px 12px;border-radius:999px;background:#fff8e1}#score-count,#streak-count{min-width:42px;text-align:right;color:var(--primary-color);font-size:1.35rem}.secondary-btn{background:#e0e0e0;border:none;padding:8px 16px;border-radius:20px;cursor:pointer;font-family:inherit;font-weight:700;transition:background .4s ease,transform .2s}.secondary-btn:hover{background:#d0d0d0;transform:scale(1.05)}.next-top-btn{position:fixed;top:max(14px,env(safe-area-inset-top));right:14px;z-index:130;border-radius:999px;padding:10px 16px;font-size:1rem}.idiom-card{background:var(--card-bg);padding:30px;border-radius:20px;text-align:center;box-shadow:0 4px 6px rgba(0,0,0,.05);transition:transform .5s ease}.idiom-head{display:inline-flex;align-items:flex-start;justify-content:center;gap:10px;margin-bottom:8px}#idiom-text{font-size:3rem;color:var(--text-color);margin-bottom:0;line-height:1.1}.idiom-per-char{display:inline-flex;align-items:baseline;justify-content:center;gap:7px}.idiom-char-block{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:1em;padding-right:.66em}.idiom-char{display:inline-block;line-height:1;vertical-align:baseline}.idiom-char-zhuyin{position:absolute;display:inline-flex;align-items:center;justify-content:center;right:0;top:50%;transform:translateY(-50%);margin:0;padding-right:.56em;color:#666;font-family:BiauKai,DFKai-SB,serif;font-size:.3em;line-height:1}.idiom-char-zhuyin-body{display:inline-flex;flex-direction:column;align-items:center;gap:.03em}.idiom-char-zhuyin-symbol{display:block;line-height:1}.idiom-char-zhuyin-tone{position:absolute;right:-.03em;top:calc(var(--tone-anchor-row,0) * 1.03em + .02em);display:block;line-height:1;font-size:.9em}.idiom-char-zhuyin-tone.is-light-tone{transform:translateY(-.12em)}.zhuyin{font-size:.92rem;color:#666;margin:2px 0 0;font-family:BiauKai,DFKai-SB,serif;writing-mode:vertical-rl;text-orientation:mixed;white-space:pre-line;letter-spacing:.04em;line-height:1.15}.hint-container{margin:15px 0;min-height:40px;text-align:center}.hint-btn{background:#fff9c4;border:2px solid #ffeb3b;padding:5px 15px;border-radius:15px;cursor:pointer;font-size:1rem;color:#f57f17;transition:all .4s ease}.hint-btn:hover{background:#fff59d}#hint-text{margin-top:10px;font-size:1.2rem;color:var(--accent-color);font-weight:700}.prompt{font-size:1.3rem;margin-top:10px;color:#555}.image-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.img-card{background:var(--card-bg);border:4px solid transparent;border-radius:15px;overflow:hidden;cursor:pointer;transition:transform .4s ease,border-color .4s ease,opacity .4s ease,box-shadow .4s ease;box-shadow:0 2px 4px rgba(0,0,0,.05);display:flex;flex-direction:column;align-items:center;opacity:1;backface-visibility:hidden;transform-style:preserve-3d}.img-card.fade-in{opacity:0;animation:fadeIn .8s forwards}.img-card img{width:100%;height:auto;object-fit:cover;aspect-ratio:1/1}.img-card p{padding:10px;font-weight:700;font-size:1.1rem}.img-card:hover{transform:translateY(-5px);box-shadow:0 8px 16px rgba(0,0,0,.1)}.img-card.correct{border-color:var(--secondary-color);animation:pulse .8s ease-in-out;background-color:#e8f5e9}.img-card.wrong{animation:shake .6s ease-in-out;border-color:var(--error-color);background-color:#ffebee}.spotlight-backdrop{position:fixed;inset:0;pointer-events:auto;cursor:zoom-out;z-index:90;opacity:0;background:radial-gradient(circle at center,rgba(255,255,255,.16) 0,rgba(0,0,0,.34) 100%)}.correct-spotlight-card{margin:0;z-index:100;opacity:1!important;animation:none!important;border-color:var(--secondary-color);background-color:#e8f5e9;box-shadow:0 28px 54px rgba(0,0,0,.28);will-change:transform}.spotlight-placeholder{border-radius:15px}.spotlight-title{position:fixed;left:50%;transform:translateX(-50%);z-index:111;margin:0;padding:10px 16px;border-radius:14px;border:2px solid #a5d6a7;background:rgba(255,255,255,.98);color:#1b5e20;text-align:center;font-size:1.4rem;font-weight:900;letter-spacing:.03em;line-height:1.2;box-shadow:0 10px 20px rgba(0,0,0,.14);pointer-events:none}.spotlight-caption{position:fixed;left:50%;transform:translateX(-50%);z-index:110;width:min(92vw,760px);opacity:0;pointer-events:none;overflow:visible;text-align:center}.spotlight-caption.visible{opacity:1}.spotlight-caption-message{margin:0;padding:10px 14px;border-radius:14px;border:2px solid #a5d6a7;background:#fff;color:#1b5e20;font-size:1.2rem;font-weight:800;line-height:1.55;box-shadow:0 10px 22px rgba(0,0,0,.14);text-align:center;overflow:hidden;transition:opacity .22s ease,max-height .22s ease,margin .22s ease,padding .22s ease,border-width .22s ease,box-shadow .22s ease;max-height:140px;pointer-events:auto;cursor:pointer}.spotlight-caption-message.dismissed{opacity:0;max-height:0;margin:0;padding-top:0;padding-bottom:0;border-width:0;box-shadow:none;pointer-events:none}.spotlight-caption-detail{margin:8px 0 0;padding:10px 13px;border-radius:12px;border:2px solid #ffe0b2;background:#fffdf8;color:#5d4037;font-size:1.02rem;font-weight:700;line-height:1.65;box-shadow:0 8px 18px rgba(0,0,0,.1);text-align:left;white-space:pre-wrap;pointer-events:auto;cursor:pointer;user-select:none;max-height:min(28vh,260px);overflow-y:auto;overscroll-behavior:contain}.spotlight-detail-title{display:block;margin-bottom:9px;padding:6px 9px;border-radius:10px;background:#fff3e0;color:#bf360c;font-size:1.02rem;font-weight:900;letter-spacing:.02em;line-height:1.35}.spotlight-detail-content{display:block;white-space:pre-wrap;font-size:.98rem;line-height:1.72;color:#4e342e}.spotlight-detail-list{margin:0;padding-left:1.2em;white-space:normal}.spotlight-detail-list-item{margin:.2em 0;line-height:1.62}.spotlight-caption-detail:focus-visible{outline:3px solid #90caf9;outline-offset:2px}.spotlight-caption-detail.flipping{animation:spotlightDetailFlip 260ms ease}.feedback-area{min-height:0;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.feedback-text{font-size:1.5rem;font-weight:700;color:var(--primary-color);transition:opacity .5s ease}.feedback-detail{width:min(92vw,720px);padding:10px 14px;border-radius:14px;background:#fff;border:2px solid #c8e6c9;box-shadow:0 8px 18px rgba(0,0,0,.08);color:#2d2d2d;font-size:1.05rem;line-height:1.7;font-weight:700}.primary-btn{background:var(--primary-color);color:#fff;border:none;padding:12px 30px;border-radius:25px;font-size:1.2rem;cursor:pointer;font-family:inherit;font-weight:700;box-shadow:0 4px 0 #e65100;transition:transform .2s,box-shadow .2s,background-color .3s}.primary-btn:hover{background-color:#fb8c00}.primary-btn:active{transform:translateY(4px);box-shadow:0 0 0 #e65100}.hidden{display:none!important}.fade-in{opacity:0;animation:fadeIn .8s forwards}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.03)}100%{transform:scale(1)}}@keyframes shake{0%{transform:translateX(0)}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}100%{transform:translateX(0)}}@keyframes spotlightDetailFlip{0%{transform:perspective(680px) rotateY(0);opacity:1}50%{transform:perspective(680px) rotateY(92deg);opacity:.2}100%{transform:perspective(680px) rotateY(0);opacity:1}}@keyframes victoryBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.25) rotate(0)}18%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(1.2) rotate(var(--spark-rotate,0deg))}}@keyframes victoryTitleBounce{0%{transform:translateY(0) scale(.86)}40%{transform:translateY(-4px) scale(1.08)}100%{transform:translateY(0) scale(1)}}@keyframes victoryScorePop{0%{transform:scale(.65);color:#ef6c00}35%{transform:scale(1.22);color:#ff9800}100%{transform:scale(1);color:#e65100}}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .5s ease}.modal:not(.hidden){opacity:1;pointer-events:auto}.modal-content{background:#fff;padding:40px;border-radius:20px;text-align:center;max-width:90%;width:400px;transform:scale(.9);transition:transform .5s cubic-bezier(.175, .885, .32, 1.275)}#game-over-modal .modal-content{padding-top:24px}.modal:not(.hidden) .modal-content{transform:scale(1)}.modal-content h2{color:var(--primary-color);font-size:2rem;margin-bottom:20px}.final-trophy{display:block;width:96px;height:96px;margin:0 auto 14px;object-fit:contain;user-select:none;-webkit-user-drag:none}.modal-content p{font-size:1.5rem;margin-bottom:30px}.victory-burst{position:relative;width:100%;height:62px;margin:-4px 0 6px;pointer-events:none;overflow:visible}.victory-spark{position:absolute;left:50%;top:54%;transform:translate(-50%,-50%) scale(.3) rotate(0);opacity:0;font-size:1.55rem;animation:victoryBurst var(--duration,900ms) ease-out var(--delay,0ms) forwards;will-change:transform,opacity}.final-cheer{margin:0 0 24px!important;padding:12px 14px;border-radius:14px;border:2px solid #ffe0b2;background:#fff8e1;color:#5d4037;font-size:1.08rem!important;font-weight:800;line-height:1.6;white-space:pre-line}.modal-content.victory-active h2{animation:victoryTitleBounce 850ms ease-out}.modal-content.victory-active #final-score{display:inline-block;animation:victoryScorePop .7s ease-out}.wrong-answer-content h2{color:var(--error-color)}.wrong-answer-content p{font-size:1.2rem;line-height:1.7;color:#4e342e}@media (max-width:600px){#idiom-text{font-size:2.2rem}.image-grid{gap:10px}.img-card p{font-size:1rem;padding:5px}.idiom-head{gap:8px}.zhuyin{font-size:.8rem}.idiom-per-char{gap:5px}.idiom-char-block{padding-right:.58em}.idiom-char-zhuyin{font-size:.3em;padding-right:.48em}.idiom-char-zhuyin-tone{right:-.05em;font-size:.9em}.status-bar{gap:10px;flex-wrap:wrap;justify-content:center}.combo-display,.score-display{font-size:1rem}#score-count,#streak-count{font-size:1.2rem}.feedback-detail{font-size:1rem}.spotlight-caption-message{font-size:1.05rem}.spotlight-caption-detail{font-size:.95rem}.spotlight-title{font-size:1.18rem;padding:8px 12px}.next-top-btn{top:max(8px,env(safe-area-inset-top));right:8px;font-size:.92rem;padding:8px 12px}.victory-burst{height:56px}.victory-spark{font-size:1.3rem}.final-cheer{font-size:.98rem!important}.site-footer{margin-top:0;padding:0}.site-footer-inner{font-size:.8rem;line-height:1.7;padding:7px 11px}.site-footer-copyright{margin-top:7px;font-size:.76rem}.site-footer a{padding:1px 7px}}.cover-page{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#1a2a6c,#b21f1f,#fdbb2d);display:flex;justify-content:center;align-items:center;z-index:1000;transition:opacity .5s ease-out}.cover-page.hidden{opacity:0;pointer-events:none}.cover-content{text-align:center;color:#fff;padding:2rem}.cover-title{font-size:5rem;font-weight:900;margin-bottom:1rem;position:relative;color:gold;text-transform:uppercase;transform-style:preserve-3d;perspective:1000px;animation:float 3s ease-in-out infinite;text-shadow:1px 1px 0 #c0392b,2px 2px 0 #c0392b,3px 3px 0 #c0392b,4px 4px 0 #c0392b,5px 5px 0 #c0392b,6px 6px 0 #c0392b,7px 7px 0 #c0392b,8px 8px 7px rgba(0,0,0,.4),8px 8px 1px rgba(0,0,0,.5)}@keyframes float{0%,100%{transform:translateY(0) rotateX(0)}50%{transform:translateY(-20px) rotateX(10deg)}}.cover-subtitle{font-size:1.5rem;margin-bottom:3rem;opacity:.9;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.start-btn{font-size:2rem;padding:1rem 4rem;background:#27ae60;border:none;border-radius:50px;color:#fff;cursor:pointer;box-shadow:0 4px 15px rgba(0,0,0,.3);transition:transform .2s,background .2s;animation:pulse 2s infinite}.start-btn:hover{background:#2ecc71;transform:scale(1.05)}.start-btn:active{transform:scale(.95)}.cover-loading{font-size:1.2rem;color:#ecf0f1;margin-top:1rem;animation:blink 1.5s infinite}.cover-footer{position:absolute;bottom:1rem;width:100%;text-align:center;color:rgba(255,255,255,.8);font-size:.9rem;z-index:1001}.cover-footer a{color:gold;text-decoration:none;border-bottom:1px dashed gold;transition:all .2s}.cover-footer a:hover{color:#fff;border-bottom-style:solid;text-shadow:0 0 5px rgba(255,215,0,.5)}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(39,174,96,.7)}70%{transform:scale(1.05);box-shadow:0 0 0 10px rgba(39,174,96,0)}100%{transform:scale(1);box-shadow:0 0 0 0 rgba(39,174,96,0)}}@keyframes blink{0%,100%{opacity:1}50%{opacity:.5}}.hidden{display:none!important}