body{--theme-background: #343434;--theme-panel: #343434;--theme-input: #454545;--theme-text: #f3f3f3;--theme-border: #f3f3f3;--theme-accent: #f3f3f3;--theme-error: #ff3333;margin:0;padding:0;width:100vw;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:var(--theme-background);color:var(--theme-text);text-shadow:var(--theme-text-shadow, none);font-family:GowunDodum;overflow:hidden;transition:background-color .5s,border-color .5s,color .5s}#root{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.hidden{display:none}@font-face{font-family:GowunDodum;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/GowunDodum-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:GowunBatang;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/GowunBatang-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Pretendard;src:url(https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Light.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:NanumBarunpen;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_two@1.0/NanumBarunpen.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:D2Coding;src:url(https://fastly.jsdelivr.net/gh/projectnoonnu/noonfonts_three@1.0/D2Coding.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:NeoDunggeunmo;src:url(https://fastly.jsdelivr.net/gh/projectnoonnu/noonfonts_2001@1.3/NeoDunggeunmo.woff) format("woff");font-weight:400;font-style:normal}.courier-prime-regular{font-family:Courier Prime,monospace;font-weight:400;font-style:normal}.box{border:solid 2px;border-color:var(--theme-border);background:var(--theme-panel);border-radius:28px;corner-shape:superellipse(1.8);box-shadow:var(--theme-box-shadow, none);margin:4px;overflow:hidden}.element{height:26px;cursor:default;line-height:26px}#boxes{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:800px;margin:25px}#header-box{display:grid;grid-template-columns:auto 3fr 2fr;width:100%;height:84px;font-size:18px;align-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header-box .box{height:52px}#header-box div{align-content:center}#main-box{display:flex;flex-direction:column;justify-content:center;margin-left:0;margin-right:0;width:100%;height:100%}#current-box{display:flex;flex-direction:column;align-content:center;justify-content:center;margin:20px}#current-box [role=alert] button{all:unset;margin-left:8px;cursor:pointer;text-decoration:underline}#current-box [role=alert] button:focus-visible{outline:2px solid currentColor;outline-offset:2px}#next-box{margin:0 20px}#footer-box{display:flex;flex-direction:column;align-content:center;width:100%;height:100%}#info{display:flex;flex-direction:column;align-content:center;justify-content:center;text-align:left;text-shadow:var(--theme-info-shadow, none)}#logo{all:unset;align-content:center;padding:10px 10px 0;text-shadow:var(--theme-logo-shadow, none);font-family:Courier Prime,Courier,monospace;font-size:32px;text-align:center}#logo a{color:var(--theme-accent);text-decoration:none;text-align:center}#date{cursor:default;padding:0 10px 10px;font-size:16px;color:var(--theme-accent);text-shadow:var(--theme-date-shadow, none);height:23px;width:100%;box-sizing:border-box;text-align:right}#stats{align-content:center;display:grid;grid-template-columns:auto auto auto;grid-gap:20px;padding:10px 18px;text-align:right}#best{all:unset;display:block;width:100%;cursor:pointer}#best:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px}#best-context-menu{position:fixed;z-index:999;min-width:170px;border:2px solid var(--theme-border);border-radius:24px;corner-shape:superellipse(1.8);background-color:var(--theme-panel);box-shadow:var(--theme-box-shadow, none);overflow:hidden}#best-context-menu button{all:unset;box-sizing:border-box;display:block;width:100%;padding:10px 12px;cursor:pointer;text-align:left}#best-context-menu button:hover{background-color:var(--theme-best-hover)}#option{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr 1fr;align-content:center;justify-content:center;margin-right:-2px;padding:10px 16px;overflow:visible}#option span{display:flex;align-items:center;justify-content:left;text-align:right}#option .selector-wrap{position:relative;display:flex;min-width:8em;align-items:center;justify-content:right}.selector-trigger{all:unset;box-sizing:border-box;width:100%;height:24px;line-height:24px;text-align:right;cursor:pointer;padding:0 8px;position:relative}.selector-menu{box-sizing:border-box;position:absolute;top:calc(100% + 6px);right:0;width:100%;max-height:240px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-x:none;overscroll-behavior:contain;border:2px solid var(--theme-border);border-radius:24px;corner-shape:superellipse(1.8);background-color:var(--theme-selector-background);box-shadow:var(--theme-box-shadow, none);z-index:1000}@supports not (corner-shape: superellipse(1.8)){.box{border-radius:14px}#best-context-menu,.selector-menu{border-radius:12px}}.selector-item{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-end;gap:6px;position:relative;width:100%;padding:8px 8px 8px 24px;cursor:pointer;text-align:right;transition:all .15s ease}.selector-check{position:absolute;left:8px;width:12px;text-align:left}.selector-item.focused{background-color:var(--theme-selector-focus);outline:2px solid var(--theme-selector-outline);outline-offset:-2px;transform:scale(1.02)}.selector-item.selected{font-weight:700}.theme-menu .selector-item.focused{filter:var(--theme-preview-filter);outline-color:var(--theme-preview-outline);box-shadow:var(--theme-preview-shadow)}.theme-menu .selector-item{border-bottom:1px solid var(--theme-separator);color:var(--theme-text);background:var(--theme-preview-background);text-shadow:var(--theme-preview-text-shadow)}.font-menu{display:flex;flex-direction:column;max-height:none;overflow:hidden}.font-menu-list{position:relative;max-height:min(200px,35dvh);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none;touch-action:pan-y}.font-menu-list::-webkit-scrollbar{display:none}.font-menu .selector-item{height:40px;white-space:nowrap;transition:background-color .15s ease}.font-menu .selector-item:hover,.font-menu .selector-item:focus-visible,.font-menu .scroll-indicator:not(:disabled):hover{background-color:var(--theme-font-hover)}.font-menu .selector-item:focus-visible,.font-menu .scroll-indicator:focus-visible,.selector-trigger:focus-visible{outline:2px solid var(--theme-accent);outline-offset:-2px}.theme-menu{max-height:min(320px,50dvh);overflow-y:auto}.theme-menu .selector-item span:last-child{flex:1;text-align:right}.theme-menu .selector-item:last-child{border-bottom:none}.phrase{margin:10px;font-size:24px;text-align:left;padding:0;min-height:35px;line-height:35px;cursor:default;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;overflow:visible;width:auto}.word{display:inline-block;position:relative;white-space:pre}#currentPhrase .word:not(.typed):not(.active){opacity:.68}.word.active:after{content:"";position:absolute;left:18%;right:18%;bottom:-3px;border-bottom:2px solid var(--theme-accent)}.wrong{color:var(--theme-error);background:var(--theme-error-background);border-radius:3px}#textInput{all:unset;box-sizing:border-box;border:none;border-bottom:2px solid var(--theme-border);margin:10px 10px 8px;outline:none;font-size:24px;background-color:var(--theme-input);color:var(--theme-text);caret-color:var(--theme-accent);text-shadow:var(--theme-text-shadow, none);text-align:left;font-family:GowunDodum;height:35px;padding:0;min-height:35px;line-height:35px;resize:none;overflow:hidden;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;transition:background-color .5s,color .5s;display:block;width:calc(100% - 20px)}.phrase-progress{height:4px;margin:8px 10px 0;overflow:hidden;border-radius:4px;background:var(--theme-progress-track)}.phrase-progress>div{height:100%;background:var(--theme-accent);transition:width .12s ease}#textInput::placeholder{color:var(--theme-placeholder)}#textInput::selection,.phrase span::selection{background:var(--theme-selection);color:var(--theme-selection-text)}::selection{background:transparent}::-moz-selection{background:transparent}@media (max-width: 800px){.cpm{display:none}#boxes{width:95%}}@media (max-width: 720px){#header-box{display:grid;grid-template-columns:auto 2fr;grid-template-rows:auto auto;width:100%;height:168px;align-content:center}#footer-box{display:none}#stats{margin-left:-2px;margin-right:-2px;grid-column:1/3;grid-row:2}.cpm{display:inline}}@media (max-width: 450px){#option{display:grid;grid-template-columns:1fr;grid-template-rows:1fr 1fr}#option>span{display:none}}@media (max-width: 375px){.cpm{display:none}}.pixel .box{border-radius:0}.pixel #logo{font-family:GalmuriMono7}.pixel #date{font-family:Galmuri7}.pixel .selector-trigger,.pixel .selector-item{font-family:inherit}.pixel .selector-menu,.pixel #best-context-menu{border-radius:0}.pixel #best-context-menu button{font-family:inherit}.selector-menu::-webkit-scrollbar{display:none}.selector-menu{scrollbar-width:none;-ms-overflow-style:none}.scroll-indicator{all:unset;box-sizing:border-box;display:flex;flex:0 0 28px;align-items:center;justify-content:center;width:100%;color:inherit;font-size:10px;cursor:pointer;transition:background-color .15s ease}.scroll-indicator:disabled{opacity:.25;cursor:default}#preloader{position:fixed;bottom:0;left:0;visibility:hidden}#date{display:grid;border:0;height:30px;padding:0 10px;background:transparent;font-family:inherit;cursor:pointer}#date span{grid-area:1 / 1;justify-self:end;align-self:center}.date-settings{opacity:0}#date:hover .date-value,#date:focus-visible .date-value{opacity:0}#date:hover .date-settings,#date:focus-visible .date-settings{opacity:1}#date:focus-visible{outline:2px solid currentColor;outline-offset:2px}kbd{font:inherit;font-size:.8em;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.practice-menu{box-sizing:border-box;width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;padding:24px;border:2px solid var(--theme-border);border-radius:14px;color:var(--theme-text);background:var(--theme-background);font-family:inherit;text-shadow:none}.practice-menu::backdrop{background:#0000008c}.practice-menu.theme-editor[open]{display:flex;flex-direction:column;overflow:hidden}.theme-editor>*{flex-shrink:0}.theme-editor .custom-color-fields{flex-shrink:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px;margin:8px -4px}.practice-menu h2{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 16px;font-size:22px}.editor-mode{flex-shrink:0;font-size:15px}.practice-menu p{line-height:1.6}.practice-menu label{display:block;margin:12px 0 6px;font-size:14px}.practice-menu input{box-sizing:border-box;width:100%;min-width:0;border:2px solid var(--theme-border);border-radius:8px;padding:10px;color:inherit;background:var(--theme-menu-input);font:inherit;font-size:14px}.practice-menu input::selection{background:var(--theme-text);color:var(--theme-background)}.practice-menu input::placeholder{color:inherit;opacity:.55}.practice-menu button,.practice-menu a{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:10px 12px;border:2px solid var(--theme-border);border-radius:10px;background:var(--theme-menu-panel);color:inherit;font:inherit;text-decoration:none;cursor:pointer}@supports (corner-shape: superellipse(1.8)){.practice-menu:not(.pixel){corner-shape:superellipse(1.8);border-radius:28px}.practice-menu:not(.pixel) input{corner-shape:superellipse(1.8);border-radius:14px}.practice-menu:not(.pixel) button,.practice-menu:not(.pixel) a{corner-shape:superellipse(1.8);border-radius:18px}.practice-menu:not(.pixel) .custom-theme-preview{corner-shape:superellipse(1.8);border-radius:22px}.practice-menu:not(.pixel) .custom-preview-panel{corner-shape:superellipse(1.8);border-radius:18px}.practice-menu:not(.pixel) input[type=color]::-webkit-color-swatch{corner-shape:superellipse(1.8);border-radius:7px}.practice-menu:not(.pixel) input[type=color]::-moz-color-swatch{corner-shape:superellipse(1.8);border-radius:7px}}.practice-menu-actions{display:grid;gap:10px}.practice-menu button:hover,.practice-menu a:hover{background:color-mix(in srgb,var(--theme-menu-panel),var(--theme-text) 12%)}.practice-menu button:disabled{opacity:.45;cursor:default}.practice-menu :focus-visible{outline:2px solid currentColor;outline-offset:3px}.menu-hint{font-size:12px;opacity:.75}.menu-error{font-size:14px}.editor-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:20px}.font-load-actions{display:flex;align-items:center;gap:12px;margin-top:12px}.font-load-message{flex:1;min-width:0;margin:0;font-size:14px;opacity:.65}#load-custom-font{flex-shrink:0;margin-left:auto}.font-preview{margin-top:16px;padding:16px 0;line-height:1.8;overflow-wrap:anywhere}.custom-color-row{display:grid;grid-template-columns:1fr 44px 100px;align-items:center;gap:10px;margin:10px 0}.custom-color-row label{margin:0}.custom-color-label{display:flex;align-items:center;gap:8px}.practice-menu .shadow-toggle{min-height:28px;padding:4px 8px;font-size:12px}.practice-menu .shadow-toggle[aria-pressed=true]{background:var(--theme-text);color:var(--theme-background)}.custom-color-row input[type=color]{height:40px;padding:3px;cursor:pointer}.practice-menu input[type=color]::-webkit-color-swatch{border:2px solid var(--theme-border);border-radius:4px}.practice-menu input[type=color]::-moz-color-swatch{border:2px solid var(--theme-border);border-radius:4px}.practice-menu.pixel input[type=color]::-webkit-color-swatch{border-radius:0}.practice-menu.pixel input[type=color]::-moz-color-swatch{border-radius:0}.custom-color-row input:last-child{font-family:monospace}.custom-theme-preview{border-radius:12px;padding:16px;background:var(--theme-background);color:var(--theme-text);font-size:15px;text-shadow:var(--theme-text-shadow)}.custom-preview-logo{color:var(--theme-accent);font-family:monospace}.custom-preview-panel{margin-top:10px;padding:12px;border:2px solid var(--theme-border);border-radius:10px;background:var(--theme-panel);box-shadow:var(--theme-box-shadow)}.custom-preview-error{color:var(--theme-error);background:var(--theme-error-background)}.custom-preview-input{margin-top:12px;background:var(--theme-input);border-bottom:2px solid var(--theme-border)}.custom-preview-progress{margin-top:8px;height:3px;width:45%;background:var(--theme-accent)}.settings-notice{position:fixed;bottom:12px;max-width:calc(100% - 32px);padding:12px;border:2px solid currentColor;background:var(--theme-background);font-size:14px}.settings-notice button{margin-left:8px;color:inherit;background:transparent;border:2px solid currentColor;cursor:pointer}.practice-menu.pixel,.practice-menu.pixel input,.practice-menu.pixel button,.practice-menu.pixel a,.practice-menu.pixel .custom-theme-preview,.practice-menu.pixel .custom-preview-panel{border-radius:0}@media (max-width: 450px){.practice-menu{padding:20px}.custom-color-row{grid-template-columns:1fr 40px 88px;gap:6px}}.saved-presets{margin-bottom:20px}.saved-presets ul{list-style:none;padding:0;margin:0 0 12px;max-height:180px;overflow-y:auto;overscroll-behavior:contain}.saved-presets li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:2px solid var(--theme-border)}.preset-name{min-width:0;overflow-wrap:anywhere}.preset-row-actions{display:flex;flex-shrink:0;gap:8px}.repository-label{display:inline-flex;align-items:center;gap:10px}.github-logo{width:20px;height:20px;flex-shrink:0;fill:currentColor}
