@import "https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;700&family=Inter:wght@300;400;500;600&display=swap";:root{--bg-gradient:linear-gradient(135deg, #0b1510 0%, #15271d 40%, #1c3226 75%, #080d0a 100%);--color-forest:#1e3b2b;--color-sage:#8da399;--color-sage-light:#b5c7bf;--color-earth-beige:#e5dfd3;--color-gold:#d8b887;--color-text-dim:#a6b9ae;--color-char-correct:#a3e635;--color-char-correct-glow:#a3e63566;--color-char-incorrect:#f87171;--color-char-incorrect-bg:#f8717126;--glass-bg:#1e322873;--glass-border:#ffffff12;--glass-shadow:0 16px 40px #00000080;--button-hover:#ffffff14;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-serif:"Gowun Batang", Georgia, serif}*{box-sizing:border-box;margin:0;padding:0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}body{font-family:var(--font-sans);color:var(--color-earth-beige);-webkit-font-smoothing:antialiased;background-color:#0b130e;min-height:100vh;overflow-x:hidden}.forest-bg-container{z-index:-2;width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}.forest-bg-container:before{content:"";opacity:.23;filter:saturate(.8)blur(1px);z-index:2;background-image:url(/assets/campfire-CQWV2tbg.jpg);background-position:50%;background-size:cover;width:100%;height:100%;position:absolute;top:0;left:0}.bg-gradient-overlay{background:var(--bg-gradient);z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.light-leak{filter:blur(40px);pointer-events:none;z-index:3;background:radial-gradient(circle at 50% 80%,#d8b88724 0%,#f06e320d 30%,#0000 65%);width:140%;height:140%;animation:20s ease-in-out infinite alternate sunlightPulse;position:absolute;top:-20%;left:-20%}.forest-fog{filter:blur(50px);pointer-events:none;z-index:4;background:radial-gradient(circle at 50% 80%,#8da3990a 0%,#0000 60%);width:200%;height:100%;animation:45s linear infinite fogDrift;position:absolute;top:0;left:0}.forest-particles{pointer-events:none;z-index:5;width:100%;height:100%;position:absolute;top:0;left:0}.particle{background-color:var(--color-gold);opacity:0;filter:blur(1px);width:4px;height:4px;box-shadow:0 0 8px var(--color-gold);border-radius:50%;animation:12s linear infinite floatParticle;position:absolute}#app{z-index:1;flex-direction:column;justify-content:space-between;max-width:1100px;min-height:100vh;margin:0 auto;padding:2rem 1.5rem;display:flex;position:relative}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:2.5rem;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.logo-emoji{font-size:1.8rem;animation:4s ease-in-out infinite alternate leafSway}.logo-text{font-family:var(--font-sans);letter-spacing:-.5px;color:var(--color-earth-beige);background:linear-gradient(120deg, var(--color-earth-beige) 50%, var(--color-sage-light) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.6rem;font-weight:500}.sound-mixer{background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);border-radius:30px;align-items:center;gap:1.25rem;padding:.5rem 1rem;display:flex;box-shadow:0 4px 20px #00000026}.sound-control-item{align-items:center;gap:.5rem;display:flex}.sound-toggle-btn{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .3s;display:flex}.sound-toggle-btn:hover{background:var(--button-hover);color:var(--color-earth-beige)}.sound-toggle-btn.active{color:var(--color-gold)}.sound-toggle-btn.active .icon-rain{color:#7ab3cf;filter:drop-shadow(0 0 4px #7ab3cf80)}.sound-toggle-btn.active .icon-forest{color:#a4bfae;filter:drop-shadow(0 0 4px #a4bfae80)}.sound-toggle-btn.active .icon-campfire{color:#ff8c42;filter:drop-shadow(0 0 6px #ff8c4299)}.sound-toggle-btn.active .icon-typing{color:var(--color-gold);filter:drop-shadow(0 0 4px #d8b88780)}.sound-slider{appearance:none;background:#ffffff26;border-radius:2px;outline:none;width:60px;height:3px;transition:background .3s}.sound-slider:focus-visible{outline:2px solid var(--color-gold);outline-offset:3px}.sound-slider::-webkit-slider-thumb{appearance:none;background:var(--color-sage-light);cursor:pointer;border-radius:50%;width:10px;height:10px;transition:transform .2s}.sound-slider::-webkit-slider-thumb:hover{background:var(--color-gold);transform:scale(1.3)}.sound-select{color:var(--color-earth-beige);font-size:.8rem;font-family:var(--font-sans);cursor:pointer;appearance:none;background:#00000059 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23e5dfd3' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right .6rem center no-repeat;border:1px solid #ffffff14;border-radius:15px;outline:none;padding:.3rem 1.8rem .3rem .6rem;font-weight:500;transition:all .3s}.sound-select:focus-visible{outline:2px solid var(--color-gold);outline-offset:2px}.sound-select:hover{background-color:#ffffff0d;border-color:#d8b8874d}.sound-select option{color:var(--color-earth-beige);background-color:#111f17}.lang-selector{border:1px solid var(--glass-border);background:#0003;border-radius:20px;padding:3px;display:flex}.lang-btn{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;border-radius:17px;padding:.4rem 1rem;font-size:.85rem;font-weight:500;transition:all .3s}.lang-btn.active{background:var(--color-forest);color:var(--color-earth-beige);box-shadow:0 2px 10px #0000004d}#center{flex-direction:column;flex-grow:1;justify-content:center;align-items:center;gap:2.5rem;width:100%;display:flex}.typing-card-container{width:100%;max-width:820px;position:relative}.card-glass-glow{z-index:-1;filter:blur(1px);background:linear-gradient(135deg,#d8b88726,#8da3990d);border-radius:24px;position:absolute;inset:-1px}.typing-card{background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(25px);box-shadow:var(--glass-shadow);border-radius:24px;flex-direction:column;justify-content:center;min-height:280px;padding:3rem 3.5rem;transition:border-color .4s,box-shadow .4s;display:flex;position:relative;overflow:hidden}.typing-card:hover{border-color:#d8b88733;box-shadow:0 20px 50px #0009}.quote-source{font-family:var(--font-sans);letter-spacing:.1rem;color:var(--color-sage-light);opacity:.75;border-left:2px solid var(--color-gold);text-transform:uppercase;margin-bottom:2rem;padding-left:.75rem;font-size:.9rem}.typing-area{width:100%;position:relative}.text-display{font-family:var(--font-serif);letter-spacing:.06em;color:#e5dfd3ad;-webkit-user-select:none;user-select:none;white-space:pre-wrap;word-break:break-all;overflow-wrap:break-word;width:100%;min-height:100px;font-size:1.55rem;line-height:2.2;display:block}.char{transition:color .1s;display:inline-block;position:relative}.char.incorrect{color:var(--color-char-incorrect);background-color:var(--color-char-incorrect-bg);border-radius:4px;animation:.25s ease-in-out shake}.char.incorrect:after{content:attr(data-original);font-size:.75rem;font-family:var(--font-serif);color:#fff;border:1px solid var(--color-char-incorrect);pointer-events:none;white-space:nowrap;z-index:10;background:#7a1d1d;border-radius:4px;padding:1px 5px;font-weight:700;line-height:1.2;position:absolute;top:-1.35rem;left:50%;transform:translate(-50%);box-shadow:0 4px 10px #0006}.char.correct{color:var(--color-earth-beige);text-shadow:0 0 10px #e5dfd399, 0 0 2px var(--color-char-correct);font-weight:500}.char.space.incorrect{border-bottom:2px solid var(--color-char-incorrect)}.char.current-char{color:var(--color-gold)}.char.current-char:before{content:"";background-color:var(--color-gold);width:100%;height:3px;box-shadow:0 0 8px var(--color-gold);animation:1.4s infinite cursorBlink;position:absolute;bottom:0;left:0}.focus-overlay{-webkit-backdrop-filter:blur(10px);opacity:0;pointer-events:none;z-index:10;background:#0b1510e6;border-radius:18px;justify-content:center;align-items:center;min-height:145px;transition:opacity .3s;display:flex;position:absolute;inset:-1.5rem -1.2rem;box-shadow:0 8px 32px #0009}.focus-overlay.active{opacity:1;pointer-events:auto;cursor:pointer}.focus-message{text-align:center}.focus-icon{margin-bottom:.75rem;font-size:2.2rem;animation:3s ease-in-out infinite alternate floatUp;display:block}.focus-message p{color:var(--color-sage-light);letter-spacing:.05em;font-size:1.05rem}.typing-footer{flex-direction:column;gap:1.75rem;width:100%;max-width:820px;margin-top:1.5rem;display:flex}.progress-bar-container{background:#00000026;border:1px solid #ffffff0a;border-radius:12px;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.progress-label{color:var(--color-text-dim);min-width:70px;font-size:.8rem}.progress-track{background:#ffffff12;border-radius:3px;flex-grow:1;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--color-sage) 0%, var(--color-gold) 100%);border-radius:3px;height:100%;transition:width .3s cubic-bezier(.1,.8,.25,1);box-shadow:0 0 10px #d8b8874d}.progress-percentage{color:var(--color-gold);text-align:right;min-width:35px;font-size:.85rem;font-weight:500}.controls-panel{justify-content:center;align-items:center;gap:1rem;display:flex}.action-btn{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--color-earth-beige);cursor:pointer;-webkit-backdrop-filter:blur(5px);border-radius:30px;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:500;transition:all .3s;display:flex}.action-btn:hover{background:var(--button-hover);border-color:var(--color-sage-light);transform:translateY(-2px)}.action-btn:active{transform:translateY(0)}.app-footer{text-align:center;color:var(--color-text-dim);opacity:1;padding-top:3rem;font-size:.8rem}.footer-links{flex-wrap:wrap;justify-content:center;align-items:center;gap:.8rem;margin-bottom:.6rem;display:flex}.footer-link-btn{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;padding:.2rem .5rem;font-family:inherit;font-size:.8rem;text-decoration:none;transition:all .2s}.footer-link-btn:hover{color:var(--color-gold);text-shadow:0 0 6px #d8b88766}.footer-separator{color:#ffffff26;font-size:.7rem}.info-modal-content{max-width:640px!important}.info-modal-body{max-height:55vh;color:var(--color-earth-beige);text-align:left;margin-top:1.5rem;padding-right:.5rem;font-size:.88rem;line-height:1.7;overflow-y:auto}.info-modal-body h4{color:var(--color-gold);margin-top:1.4rem;margin-bottom:.5rem;font-size:.95rem;font-weight:600}.info-modal-body p{opacity:.85;margin-bottom:.8rem}.info-modal-body ul{opacity:.85;margin-bottom:.8rem;margin-left:1.2rem}.info-modal-body li{margin-bottom:.3rem}.info-modal-body::-webkit-scrollbar{width:4px}.info-modal-body::-webkit-scrollbar-track{background:#ffffff05}.info-modal-body::-webkit-scrollbar-thumb{background:#d8b8874d;border-radius:2px}.modal-overlay{-webkit-backdrop-filter:blur(15px);z-index:100;opacity:0;pointer-events:none;background:#050c08d9;justify-content:center;align-items:center;padding:1rem;transition:opacity .4s;display:flex;position:fixed;inset:0}.modal-overlay.active{opacity:1;pointer-events:auto}.modal-content{background:#111f17;border:1px solid #d8b88740;border-radius:28px;width:100%;max-width:580px;max-height:90vh;padding:2.5rem;transition:transform .4s cubic-bezier(.175,.885,.32,1.1);position:relative;overflow-y:auto;transform:translateY(30px);box-shadow:0 24px 60px #000c}.modal-overlay.active .modal-content{transform:translateY(0)}.modal-close-btn{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;font-size:1.8rem;line-height:1;position:absolute;top:1.5rem;right:1.5rem}.modal-close-btn:hover{color:var(--color-earth-beige)}.modal-header{text-align:center;margin-bottom:2rem}.modal-header h2{color:var(--color-gold);margin-bottom:.5rem;font-size:1.4rem}.modal-header p{color:var(--color-sage-light);font-size:.9rem}.typing-speed-result{letter-spacing:.02em;background:#ffffff0d;border:1px solid #ffffff14;border-radius:20px;padding:.3rem .9rem;display:inline-block;color:var(--color-text-dim)!important;margin-top:.8rem!important;font-size:.78rem!important}.card-preview-wrapper{border-radius:16px;justify-content:center;margin-bottom:2rem;display:flex;overflow:hidden;box-shadow:0 10px 30px #0006}.export-card-bg{box-sizing:border-box;background:linear-gradient(135deg,#102619 0%,#1c3d2a 60%,#0d1e14 100%);justify-content:center;align-items:center;width:100%;min-height:260px;padding:2.2rem;display:flex;position:relative}.export-card-inner{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#111f1766;border:1px solid #d8b8874d;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;padding:1.5rem;display:flex}.card-icon{opacity:.8;font-size:1.3rem}.export-quote-text{font-family:var(--font-serif);color:var(--color-earth-beige);word-break:keep-all;margin:1rem 0;font-size:1.15rem;line-height:1.8}.export-quote-author{color:var(--color-sage-light);opacity:.9;letter-spacing:.05em;margin-bottom:.5rem;font-size:.8rem}.export-card-footer{color:var(--color-sage-light);opacity:.5;letter-spacing:.15em;text-transform:uppercase;font-size:.65rem}.modal-actions{flex-direction:column;gap:.75rem;display:flex}.primary-btn{background:linear-gradient(135deg, var(--color-gold) 0%, #c4a16f 100%);color:#0b130e;cursor:pointer;border:none;border-radius:30px;justify-content:center;align-items:center;gap:.5rem;padding:.9rem;font-size:.95rem;font-weight:600;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 4px 15px #d8b88740}.primary-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #d8b88766}.secondary-btn{border:1px solid var(--glass-border);color:var(--color-earth-beige);cursor:pointer;background:0 0;border-radius:30px;justify-content:center;align-items:center;gap:.5rem;padding:.9rem;font-size:.95rem;font-weight:500;transition:all .3s;display:flex}.secondary-btn:hover{background:var(--button-hover);border-color:var(--color-sage-light)}.kbd-enter{font-size:.72rem;font-family:var(--font-sans);color:var(--color-text-dim);pointer-events:none;background:#ffffff14;border:1px solid #ffffff26;border-bottom:2px solid #ffffff4d;border-radius:4px;justify-content:center;align-items:center;margin-left:.2rem;padding:.1rem .35rem;font-weight:600;transition:all .3s;display:inline-flex;box-shadow:0 1px 3px #0003}.secondary-btn:hover .kbd-enter{color:var(--color-earth-beige);background:#d8b8871a;border-color:#d8b8874d #d8b8874d #d8b88799}@keyframes sunlightPulse{0%{opacity:.7;transform:scale(1)rotate(0)}to{opacity:1;transform:scale(1.15)rotate(5deg)}}@keyframes fogDrift{0%{transform:translate(0%)}to{transform:translate(-50%)}}@keyframes floatParticle{0%{opacity:0;transform:translateY(100vh)translate(0)scale(.8)}10%{opacity:.6}90%{opacity:.6}to{opacity:0;transform:translateY(-10vh)translate(50px)scale(1.2)}}@keyframes cursorBlink{0%,to{opacity:0}50%{opacity:1}}@keyframes leafSway{0%{transform:rotate(-5deg)}to{transform:rotate(5deg)}}@keyframes floatUp{0%{transform:translateY(0)}to{transform:translateY(-6px)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media (width<=768px){#app{padding:.75rem 1rem 1.5rem}.app-header{flex-direction:column;align-items:center;gap:1rem;margin-bottom:1rem}.typing-card{min-height:auto;padding:2rem 1.5rem}.text-display{letter-spacing:.03em;font-size:1.25rem;line-height:1.8}.typing-footer{gap:1rem;margin-top:1rem}.app-footer{padding-top:1.5rem}.sound-mixer{background:#00000026;border:1px solid #ffffff0a;border-radius:16px;flex-wrap:wrap;justify-content:center;gap:.6rem .4rem;width:100%;max-width:360px;margin:0 auto;padding:.6rem .4rem;display:flex}.sound-control-item{flex:0 0 calc(50% - .3rem);justify-content:center;gap:.4rem}.earphone-badge{margin-left:.2rem;padding:.2rem .45rem;font-size:.64rem}.sound-slider{width:55px}.sound-control-item:last-child{flex:0 0 100%;justify-content:center;margin-top:.2rem}.sound-select{width:100%;max-width:220px;padding:.35rem 1.8rem .35rem .6rem;font-size:.75rem}.controls-panel{flex-wrap:wrap;justify-content:center}.action-btn{padding:.6rem 1.2rem;font-size:.85rem}}.lang-btn.btn-upload{color:var(--color-earth-beige);background:#d8b88726;border:1px solid #d8b88740;margin-left:.5rem}.lang-btn.btn-upload:hover{background:#d8b8874d;border-color:#d8b88780;transform:translateY(-1px)}.lang-btn.btn-restore{color:#fff;background:#2e7d324d;border:1px solid #4caf5066;margin-left:.5rem;animation:2s infinite alternate shineGlow}.lang-btn.btn-restore:hover{background:#2e7d3280;border-color:#4caf5099;transform:translateY(-1px)}.lang-btn.hidden,.upload-status-container.hidden,.modal-overlay.hidden{display:none!important}.upload-modal-content{max-width:540px!important}.upload-dropzone{text-align:center;cursor:pointer;background:#ffffff05;border:2px dashed #d8b8874d;border-radius:16px;justify-content:center;align-items:center;margin:1.5rem 0;padding:3rem 2rem;transition:all .3s cubic-bezier(.25,.8,.25,1);display:flex}.upload-dropzone:hover,.upload-dropzone.dragover{background:#8da3991a;border-color:#8da399;transform:scale(1.01);box-shadow:inset 0 0 20px #8da39933}.dropzone-inner{pointer-events:none;flex-direction:column;align-items:center;gap:.8rem;display:flex}.icon-upload{color:var(--color-earth-beige);opacity:.65;transition:transform .3s,opacity .3s}.upload-dropzone:hover .icon-upload,.upload-dropzone.dragover .icon-upload{opacity:1;color:#d8b887;transform:translateY(-4px)}.dropzone-text{font-family:var(--font-sans);color:var(--color-earth-beige);font-size:.95rem;font-weight:500}.dropzone-subtext{font-family:var(--font-sans);color:var(--color-text-dim);font-size:.8rem}.upload-status-container{background:#0003;border:1px solid #ffffff0d;border-radius:12px;flex-direction:column;gap:1rem;margin:1rem 0;padding:1.5rem;display:flex}.loading-spinner-wrapper{align-items:center;gap:.8rem;display:flex}.loading-leaf{font-size:1.3rem;animation:1.5s linear infinite leafRotate}.status-msg{font-family:var(--font-sans);color:var(--color-earth-beige);font-size:.9rem}.status-msg.error{color:#ffb4ab}.progress-bar-bg{background:#ffffff14;border-radius:3px;width:100%;height:6px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg,#8da399,#d8b887);border-radius:3px;width:0%;height:100%;transition:width .15s ease-out}@keyframes leafRotate{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.15)}to{transform:rotate(360deg)scale(1)}}@keyframes shineGlow{0%{box-shadow:0 0 5px #4caf5033}to{box-shadow:0 0 15px #4caf5099}}.earphone-badge{color:var(--color-earth-beige);font-size:.72rem;font-family:var(--font-sans);-webkit-backdrop-filter:blur(5px);-webkit-user-select:none;user-select:none;background:#ffffff0d;border:1px solid #ffffff14;border-radius:20px;align-items:center;gap:.4rem;margin-right:.5rem;padding:.3rem .65rem;font-weight:500;display:inline-flex}.pulse-dot{background-color:var(--color-gold);border-radius:50%;width:5px;height:5px;animation:2s ease-in-out infinite pulseDotEffect;display:inline-block;box-shadow:0 0 #d8b887b3}@keyframes pulseDotEffect{0%{transform:scale(.95);box-shadow:0 0 #d8b887b3}70%{transform:scale(1);box-shadow:0 0 0 5px #d8b88700}to{transform:scale(.95);box-shadow:0 0 #d8b88700}}.focus-main-message{font-size:1.15rem;font-family:var(--font-serif);color:var(--color-earth-beige);margin-bottom:.5rem}.focus-sub-message{font-size:.82rem;font-family:var(--font-sans);color:var(--color-text-dim);opacity:1;letter-spacing:-.01em;margin-top:.4rem}
