*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--font-sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;--color-primary-blue:#d4875e;--color-primary-dark:#c0764f;--color-primary-light:#f5e6db;--color-primary-50:#fdf8f5;--color-accent-green:#5bad7a;--color-accent-orange:#d4a74e;--color-accent-red:#ef4444;--color-status-waiting:#a0a0a0;--color-status-progress:#d4a74e;--color-status-complete:#5bad7a;--color-status-error:#ef4444;--color-difficulty-beginner:#5bad7a;--color-difficulty-intermediate:#d4a74e;--color-difficulty-advanced:#ef4444;--color-text-primary:#1a1a1a;--color-text-secondary:#7a7a7a;--color-text-hint:#a0a0a0;--color-divider:#edeae6;--color-background:#fefdfb;--color-surface:#fff;--color-section-bg:#faf6f1;--color-section-1:#faf8f5;--color-section-2:#f8f4ef;--color-section-3:#faf6f1;--color-section-4:#f5f0ea;--color-section-5:#fff;--color-dark-bg:#0f172a;--color-dark-surface:#1e293b;--spacing-xs:0.5rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-xxl:3rem;--spacing-3xl:4rem;--radius-sm:3px;--radius-md:4px;--radius-lg:5px;--radius-xl:5px;--radius-xxl:5px;--radius-full:5px;--shadow-sm:0 1px 2px rgba(0,0,0,.04);--shadow-md:0 2px 8px rgba(0,0,0,.06);--shadow-lg:0 4px 16px rgba(0,0,0,.08);--shadow-card:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-normal:200ms cubic-bezier(0.4,0,0.2,1);--transition-slow:200ms cubic-bezier(0.4,0,0.2,1);--font-xs:0.75rem;--font-sm:0.8125rem;--font-base:0.875rem;--font-md:1rem;--font-lg:1.125rem;--font-xl:1.25rem;--font-2xl:1.5rem;--font-3xl:1.875rem;--font-4xl:2.25rem;--max-width:1200px;--content-width:960px;--sidebar-width:280px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse{0%,to{opacity:.55}50%{opacity:.3}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}html{font-size:16px;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-gutter:stable}body{overflow-x:clip;font-family:var(--font-sans);color:var(--color-text-primary);background-color:var(--color-background);font-size:var(--font-md);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:normal}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font:inherit;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;transition:background-color var(--transition-normal),color var(--transition-normal),transform var(--transition-fast),box-shadow var(--transition-normal),border-color var(--transition-normal),opacity var(--transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;outline:none}button:hover:not(:disabled){opacity:.88}@media (hover:none){button:active:not(:disabled){opacity:.85}}@media (hover:hover){button:active:not(:disabled){opacity:.85}}button:disabled{pointer-events:none;cursor:default;opacity:.45}button:focus-visible{outline:2px solid var(--color-primary-blue);outline-offset:2px}input,select,textarea{font:inherit;font-size:16px;line-height:1.6;letter-spacing:normal;outline:none;transition:border-color var(--transition-normal),box-shadow var(--transition-normal)}input:focus,select,textarea:focus{outline:none}img{max-width:100%;display:block}.material-icons,img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.material-icons{font-size:16px!important}.material-icons[data-icon=loop]{filter:invert(.85)}.clickable,[role=button],a,label{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.fade-enter{opacity:0}.fade-enter-active{opacity:1;transition:opacity var(--transition-normal)}.skeleton{background:linear-gradient(90deg,var(--color-divider) 25%,#f1f5f9 50%,var(--color-divider) 75%);background-size:200% 100%;animation:shimmer 2s ease-in-out infinite;border-radius:var(--radius-md)}.skeleton-text{height:.875rem;margin-bottom:.5rem;border-radius:var(--radius-sm)}.skeleton-title{height:1.25rem;width:60%;margin-bottom:.75rem;border-radius:var(--radius-sm)}.skeleton-rect{border-radius:var(--radius-lg)}.headline-large,.headline-medium,.headline-small,.title-large,.title-medium,h1,h2,h3,h4,h5,h6{line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}.headline-large{font-size:var(--font-4xl)}.headline-large,.headline-medium{font-weight:700;color:var(--color-text-primary);letter-spacing:-.02em}.headline-medium{font-size:var(--font-3xl)}.headline-small{font-size:var(--font-2xl);font-weight:700;letter-spacing:-.01em}.headline-small,.title-large{color:var(--color-text-primary)}.title-large{font-size:var(--font-xl);font-weight:600}.title-medium{font-weight:500}.body-large,.title-medium{font-size:var(--font-md);color:var(--color-text-primary)}.body-large,.body-medium{font-weight:400}.body-medium{font-size:var(--font-base);color:var(--color-text-primary)}.body-small{font-size:var(--font-xs);font-weight:400;color:var(--color-text-secondary)}.label-large{font-size:var(--font-base)}.label-large,.label-medium{font-weight:500;color:var(--color-text-primary)}.label-medium{font-size:var(--font-xs)}.page-container{max-width:var(--max-width);margin:0 auto;width:100%}.reveal{opacity:0;transform:translateY(8px);transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal.delay-1{transition-delay:40ms}.reveal.delay-2{transition-delay:80ms}.reveal.delay-3{transition-delay:.12s}.reveal.delay-4{transition-delay:.16s}@media (max-width:768px){:root{--spacing-lg:1.25rem;--spacing-xl:1.75rem;--spacing-xxl:2.5rem}}@media (max-width:480px){:root{--spacing-md:0.75rem;--spacing-lg:1rem;--spacing-xl:1.5rem;--spacing-xxl:2rem}.headline-large{font-size:var(--font-2xl)}.headline-medium{font-size:var(--font-xl)}.headline-small{font-size:var(--font-lg)}.title-large{font-size:var(--font-md)}}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:500;font-style:normal;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/jetbrains-mono-latin-700-normal.woff2) format("woff2")}.dtheme{--ink:#15324f;--ink-2:#2c4a6b;--ink-3:#45607b;--coral:#ee8163;--coral-deep:#db6645;--coral-tint:#fbe6dd;--peach:#fbded0;--peach-soft:#fdf0e8;--gold:#cf9b36;--gold-tint:#f6ecd2;--cream:#fbf6ef;--cream-2:#f4ece1;--surface:#fff;--line:#e7ddcf;--line-2:#d8ccb9;--text:#1d2a38;--text-2:#5a6675;--text-3:#8c95a1;--green:#3a9d6e;--mint:#56b894;--amber:#d6a23e;--orange:#e0824b;--red:#cf5546;--r-xs:2px;--r-sm:3px;--r:5px;--sh-1:0 1px 2px rgba(21,50,79,.06),0 1px 3px rgba(21,50,79,.05);--sh-2:0 2px 6px rgba(21,50,79,.07),0 6px 18px rgba(21,50,79,.06);--sh-3:0 8px 30px rgba(21,50,79,.12);--font:var(--font-sans);--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,monospace;--maxw:1180px;font-family:var(--font);background:var(--page-canvas);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.6}:root{--page-canvas:#fbf6ef}html{background-color:var(--page-canvas)}.dtheme *,.dtheme :after,.dtheme :before{box-sizing:border-box}.dtheme ::selection{background:var(--coral-tint);color:var(--ink)}.dtheme h1,.dtheme h2,.dtheme h3,.dtheme h4,.dtheme h5,.dtheme h6{margin:0;color:var(--ink);font-weight:700;letter-spacing:-.01em;line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}.dtheme p{margin:0}.dtheme .muted,.dtheme label,.dtheme li,.dtheme p,.dtheme small{word-break:keep-all;overflow-wrap:anywhere}.dtheme a{color:inherit;text-decoration:none}.dtheme button{font-family:inherit;cursor:pointer}.dtheme input,.dtheme select,.dtheme textarea{font-family:inherit;line-height:1.6;letter-spacing:normal}.dtheme .mono{font-family:var(--mono)}.dtheme .mono,.dtheme .tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dtheme.app{min-height:100vh;display:flex;flex-direction:column}.dtheme .container{width:100%;max-width:var(--container-max,var(--maxw));margin:0 auto;padding-left:28px;padding-right:28px}.dtheme .nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:hsla(35,60%,96%,.86);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.dtheme .nav-inner{height:62px;display:flex;align-items:center;gap:26px}.dtheme .brand{display:flex;align-items:center;gap:10px}.dtheme .brand img{width:34px;height:34px;border-radius:var(--r);display:block}.dtheme .brand b{font-size:19px;color:var(--ink);letter-spacing:-.02em;font-weight:800}.dtheme .nav-links{display:flex;gap:4px;margin-left:8px}.dtheme .nav-link{padding:7px 13px;border-radius:var(--r);font-size:14.5px;font-weight:500;white-space:nowrap;color:var(--text-2);transition:background .14s,color .14s;border:1px solid transparent;cursor:pointer}.dtheme .nav-link:hover{background:var(--cream-2);color:var(--ink)}.dtheme .nav-link.active{background:var(--ink);color:#fff}.dtheme .nav-right{margin-left:auto;display:flex;align-items:center;gap:12px}.dtheme .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--r);cursor:pointer;font-weight:600;font-size:14px;padding:9px 16px;line-height:1.25;transition:background .15s,color .15s,border-color .15s,transform .04s,box-shadow .15s;white-space:nowrap}.dtheme .btn:active{transform:translateY(1px)}.dtheme .btn-primary{background:var(--coral);color:#fff;box-shadow:var(--sh-1)}.dtheme .btn-primary:hover{background:var(--coral-deep)}.dtheme .btn-ink{background:var(--ink);color:#fff}.dtheme .btn-ink:hover{background:#0e2438}.dtheme .btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.dtheme .btn-ghost:hover{background:var(--cream-2);border-color:var(--ink-3)}.dtheme .btn-secondary{background:var(--cream-2);color:var(--ink);border-color:var(--line-2)}.dtheme .btn-secondary:hover{background:var(--ink);color:#fff;border-color:var(--ink)}.dtheme .btn-quiet{background:transparent;color:var(--text-2);padding:8px 12px}.dtheme .btn-quiet:hover{background:var(--cream-2);color:var(--ink)}.dtheme .btn-sm{padding:7px 12px;font-size:13px}.dtheme .btn-lg{padding:12px 22px;font-size:15px}.dtheme .btn:disabled{opacity:.45;cursor:not-allowed}.dtheme .btn-block{width:100%}.dtheme .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}.dtheme .card-pad{padding:18px}.dtheme .card-hover{transition:box-shadow .16s,border-color .16s,transform .16s}.dtheme .card-hover:hover{box-shadow:var(--sh-2);border-color:var(--line-2);transform:translateY(-2px)}.dtheme .chip{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:4px 10px;border-radius:var(--r-sm);font-size:12.5px;font-weight:500;background:var(--cream-2);color:var(--text-2);border:1px solid var(--line)}.dtheme .chip-coral{background:var(--coral-tint);color:var(--coral-deep);border-color:#f3cdbf}.dtheme .chip-ink{background:var(--ink);color:#fff;border-color:var(--ink)}.dtheme .chip-gold{background:var(--gold-tint);color:#9a7016;border-color:#e8d6a6}.dtheme .chip-mint{background:#def0e7;color:#2c7a57;border-color:#b9e0cd}.dtheme .chip-outline{background:transparent}.dtheme .badge-lvl{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;white-space:nowrap;border-radius:var(--r);font-weight:600;font-size:13px;letter-spacing:.01em;background:var(--ink);color:#fff}.dtheme .badge-lvl .dot{width:7px;height:7px;border-radius:50%;background:var(--coral)}.dtheme .field{width:100%}.dtheme .label{display:block;font-size:13px;font-weight:500;color:var(--text-2);margin-bottom:7px}.dtheme .input,.dtheme .textarea{width:100%;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);padding:10px 13px;font-size:16px;color:var(--text);transition:border-color .14s,box-shadow .14s;outline:none}.dtheme .input:focus,.dtheme .textarea:focus{border-color:var(--coral);box-shadow:0 0 0 3px var(--coral-tint)}.dtheme .textarea{resize:vertical;min-height:96px;line-height:1.6}.dtheme .bar{height:7px;background:var(--cream-2);border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line)}.dtheme .bar>i{display:block;height:100%;background:var(--coral);border-radius:var(--r-sm);transition:width .4s ease}.dtheme .bar.gold>i{background:var(--gold)}.dtheme .bar.ink>i{background:var(--ink)}.dtheme .rail{display:flex;align-items:center;gap:0}.dtheme .rail-step{display:flex;align-items:center;gap:9px}.dtheme .rail-dot{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r);font-size:12px;font-weight:600;background:var(--cream-2);color:var(--text-3);border:1px solid var(--line)}.dtheme .rail-step.done .rail-dot{background:var(--ink);color:#fff;border-color:var(--ink)}.dtheme .rail-step.active .rail-dot{background:var(--coral);color:#fff;border-color:var(--coral)}.dtheme .rail-label{font-size:13px;font-weight:500;color:var(--text-3)}.dtheme .rail-step.active .rail-label{color:var(--ink)}.dtheme .rail-step.done .rail-label{color:var(--text-2)}.dtheme .rail-line{width:26px;height:2px;background:var(--line-2);margin:0 8px}.dtheme .eyebrow{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--coral-deep)}.dtheme .divider{height:1px;background:var(--line);border:0;margin:0}.dtheme .muted{color:var(--text-2)}.dtheme .stack{display:flex;flex-direction:column}.dtheme .row{display:flex;align-items:center}.dtheme .fade-in{animation:dt-fade .4s ease backwards}@keyframes dt-fade{0%{opacity:0;transform:translateY(8px)}}.dtheme .scrim{position:fixed;top:0;left:0;width:100%;height:100vh;height:100dvh;background:rgba(21,50,79,.42);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto;overscroll-behavior:contain}.dtheme .spinner{width:34px;height:34px;border-radius:50%;margin:0 auto;border:3px solid var(--cream-2);border-top-color:var(--coral);animation:dt-spin .8s linear infinite}@keyframes dt-spin{to{transform:rotate(1turn)}}.dtheme .sheet-in{animation:dt-sheet .28s cubic-bezier(.2,.8,.2,1) both}@keyframes dt-sheet{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dtheme .bar>i,.dtheme .fade-in,.dtheme .mascot-bob,.dtheme .sheet-in,.dtheme .spinner,.dtheme .tip-line{animation:none!important}.dtheme .fade-in,.dtheme .sheet-in,.dtheme .tip-line{opacity:1!important;transform:none!important}}@keyframes dt-mbob{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}@keyframes dt-tipline{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.dtheme .mascot-bob{animation:dt-mbob 3.4s ease-in-out infinite;transform-origin:50% 90%}.dtheme .tip-line{animation:dt-tipline .5s ease both}.dtheme .chip-word{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:5px;font-size:16px;font-weight:600;color:var(--ink);background:var(--surface);cursor:pointer;border:1px solid var(--ink);box-shadow:var(--sh-1);transition:transform .1s,background .12s}.dtheme .chip-word:hover{background:var(--cream-2)}.dtheme .chip-word:active{transform:scale(.95)}.dtheme .chip-word-bank{border-color:var(--line-2);color:var(--ink-2);box-shadow:none}.dtheme .chip-word-bank:hover{border-color:var(--coral);color:var(--ink)}.dtheme .cloze-input{font-family:inherit;font-size:17px;font-weight:600;color:var(--coral-deep);text-align:center;border:none;border-bottom:2.5px solid var(--coral);background:var(--surface);padding:2px 4px;margin:0 2px;border-radius:3px 3px 0 0;outline:none}.dtheme .cloze-input::placeholder{color:var(--line-2);font-weight:400;letter-spacing:1px}.dtheme .cloze-input:focus{background:var(--coral-tint)}.dtheme .cloze-input-expr{border-bottom-color:var(--gold);color:#9a7016;border-bottom-width:3px}.dtheme .cloze-input-expr:focus{background:var(--gold-tint)}.dtheme .blank{display:inline-block;border-bottom:2.5px solid var(--line-2);min-width:1.4em;text-align:center;color:transparent;transition:all .2s}.dtheme .blank.on{border-bottom-color:var(--coral);color:var(--ink)}.dtheme .spinner-inline{width:1em;height:1em;border-width:2px;margin:0;flex:none}.dtheme .btn:active{transform:none}.dtheme .btn:not(:disabled):hover{box-shadow:var(--sh-2)}.dtheme .skeleton-block{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}.dtheme .card-pad>.skeleton,.dtheme .skeleton,.dtheme .skeleton-block>.skeleton{border-radius:var(--r-sm)}@media (max-width:640px){.dtheme .container{padding-left:16px;padding-right:16px}.dtheme .nav-inner{height:auto;min-height:56px;gap:10px;flex-wrap:wrap;padding-block:9px}.dtheme .brand{order:1}.dtheme .brand img{width:28px;height:28px}.dtheme .brand b{font-size:16px}.dtheme .nav-right{order:2;margin-left:auto;gap:8px;min-width:0}.dtheme .nav-right>div>.btn{max-width:42vw}.dtheme .nav-right .btn>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dtheme .nav-links{order:3;width:100%;margin-left:0;overflow-x:auto;scrollbar-width:none}.dtheme .nav-links::-webkit-scrollbar{display:none}.dtheme .nav-link{font-size:13.5px;padding:6px 10px}.dtheme h1{font-size:clamp(21px,6.2vw,26px)}.dtheme h2{font-size:clamp(18px,5.2vw,22px)}.dtheme h3{font-size:clamp(16px,4.4vw,18px)}.dtheme .card-pad{padding:14px}.dtheme .btn{font-size:13.5px;padding:8px 14px}.dtheme .btn-sm{font-size:12.5px;padding:6px 10px}.dtheme .btn-lg{font-size:14.5px;padding:11px 18px}.dtheme .chip{font-size:12px;padding:4px 9px}.dtheme .card-pad>.skeleton-block,.dtheme .skeleton-block{padding:14px}}@media (max-width:400px){.dtheme .card-pad{padding:12px}}.dtheme .notification-item{white-space:normal;min-width:0;max-width:100%;overflow:hidden}.dtheme .notification-item>*{min-width:0;max-width:100%}.dtheme .nav-username{min-width:0;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:640px){.dtheme .nav-username{max-width:92px}}