html{font-size:62.5%}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:#f8f9fa;color:#212529;font-size:1.6rem;line-height:1.5;scrollbar-width:none}body::-webkit-scrollbar{display:none}.button-wrap-link{display:flex;text-decoration:none}.app-container{width:100%;padding:0}.site-footer{border-top:1px solid #e2e8f0;margin-top:4rem;padding:2.4rem 2rem 10rem;text-align:center}.site-footer__nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem 1.6rem;margin-bottom:1.2rem}.site-footer__link{font-size:1.3rem;color:#475569;text-decoration:none;transition:color .15s}.site-footer__link:hover{color:#0f172a;text-decoration:underline;text-underline-offset:.2rem}.site-footer__copyright{font-size:1.2rem;color:#94a3b8;margin:0}.popover{position:relative;display:inline-flex;align-items:center}.popover__trigger{display:inline-flex;align-items:center;cursor:pointer;flex:1;min-width:0}.popover__trigger .btn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover--sm{height:2.4rem}.popover--md{height:3.2rem}.popover--lg{height:4rem}.popover__content{position:absolute;top:calc(100% + .6rem);left:0;z-index:100;min-width:30rem;max-height:36rem;overflow-y:auto;background:#fff;border:1px solid #e2e8f0;border-radius:.8rem;box-shadow:0 4px 24px #0000001f}.popover__title{padding:1rem 1.2rem .6rem;font-size:1.1rem;font-weight:600;color:#94a3b8}.popover__list{list-style:none;margin:0;padding:0 .4rem .4rem}.popover__item{display:flex;align-items:center;gap:.8rem;padding:.7rem .8rem;border-radius:.5rem;cursor:pointer;transition:background .12s}.popover__item:hover,.popover__item--active{background:#f1f5f9}.popover__item--active:hover{background:#e2e8f0}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #0f172a;border-radius:.4rem;background:#0f172a;color:#fff;white-space:nowrap;cursor:pointer;text-decoration:none;transition:all .15s}.btn:hover{background:#1e293b;border-color:#1e293b}.btn--sm{padding:.3rem .7rem;font-size:1.2rem}.btn--md{padding:.5rem 1.2rem;font-size:1.3rem}.btn--lg{padding:.7rem 1.8rem;font-size:1.5rem}.btn--light{background:#fff;color:#334155;border-color:#cbd5e1}.btn--light:hover{background:#f1f5f9;border-color:#94a3b8}.btn--secondary{background:#f1f5f9;color:#475569;border-color:#e2e8f0}.btn--secondary:hover{background:#e2e8f0;border-color:#cbd5e1}.btn--ghost{background:transparent;color:#94a3b8;border-color:transparent}.btn--ghost:hover{background:transparent;color:#475569;border-color:transparent;text-decoration:underline;text-underline-offset:.2rem}.btn--dashed{background:transparent;color:#0f172a;border-style:dashed;border-color:#cbd5e1}.btn--dashed:hover{background:#f8fafc;border-color:#94a3b8}.btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.btn--pause{color:#fff;border-color:transparent;animation:btn-pause-bg 2s ease infinite}.btn--pause:hover{border-color:transparent}@keyframes btn-pause-bg{0%,to{background-color:#0f172a}50%{background-color:#64748b}}.classroom-entry{display:flex;align-items:center;gap:.6rem;min-width:0}.classroom-entry__popover{height:auto;min-width:0}.classroom-entry__trigger{gap:.9rem;padding:.7rem 1.4rem;text-align:left;line-height:normal}.classroom-entry__trigger svg{flex-shrink:0}.classroom-entry__trigger-text{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-width:0}.classroom-entry__trigger-label{font-size:1.1rem;line-height:1.3rem;font-weight:500;color:#94a3b8}.classroom-entry__trigger-detail{max-width:24rem;font-size:1.3rem;line-height:1.6rem;font-weight:600;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:767px){.classroom-entry__trigger-detail{max-width:100%}}.classroom-entry__chevron{margin-left:.2rem;color:#94a3b8}.classroom-entry__teacher{flex-shrink:0}.classroom-entry__content{left:0;right:auto;min-width:100%;width:max-content;max-width:32rem}.classroom-entry__item{padding:0}.classroom-entry__link{display:flex;flex-direction:column;gap:.2rem;width:100%;padding:1rem 1.2rem;color:inherit;text-decoration:none}.classroom-entry__label{font-size:1.4rem;font-weight:600;color:#0f172a}.classroom-entry__hint{font-size:1.2rem;color:#64748b}.classroom-entry__not-me{display:block;width:calc(100% - .8rem);margin:0 .4rem .4rem;padding:.7rem;font-size:1.2rem;color:#64748b;background:transparent;border:0;border-top:.1rem solid #e2e8f0;border-radius:0 0 .5rem .5rem;cursor:pointer}.classroom-entry__not-me:hover{background:#f1f5f9;color:#0f172a}.icon-btn{display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:.4rem;background:transparent;cursor:pointer;transition:all .15s}.icon-btn:hover{background:#f1f5f9;border-color:#e2e8f0}.icon-btn--sm{padding:.3rem}.icon-btn--md{padding:.5rem}.icon-btn--lg{padding:.7rem}.tooltip{position:relative;display:inline-flex}.tooltip:after{content:attr(data-label);position:absolute;background:#0f172a;color:#f8fafc;font-size:1.2rem;font-weight:500;white-space:nowrap;padding:.4rem .8rem;border-radius:.6rem;pointer-events:none;opacity:0;transition:opacity .15s ease,transform .15s ease;z-index:100}.tooltip:before{content:"";position:absolute;pointer-events:none;opacity:0;transition:opacity .15s ease,transform .15s ease;z-index:101}.tooltip:hover:after,.tooltip:hover:before{opacity:1}.tooltip--top:after{bottom:calc(100% + .6rem);left:50%;transform:translate(-50%) translateY(.4rem)}.tooltip--top:before{bottom:calc(100% + .1rem);left:50%;transform:translate(-50%) translateY(.4rem);border:.5rem solid transparent;border-top-color:#0f172a;border-bottom:0}.tooltip--top:hover:after{transform:translate(-50%) translateY(0)}.tooltip--top:hover:before{transform:translate(-50%) translateY(0)}.tooltip--bottom:after{top:calc(100% + .6rem);left:50%;transform:translate(-50%) translateY(-.4rem)}.tooltip--bottom:before{top:calc(100% + .1rem);left:50%;transform:translate(-50%) translateY(-.4rem);border:.5rem solid transparent;border-bottom-color:#0f172a;border-top:0}.tooltip--bottom:hover:after{transform:translate(-50%) translateY(0)}.tooltip--bottom:hover:before{transform:translate(-50%) translateY(0)}.tooltip--left:after{right:calc(100% + .6rem);top:50%;transform:translateY(-50%) translate(.4rem)}.tooltip--left:before{right:calc(100% + .1rem);top:50%;transform:translateY(-50%) translate(.4rem);border:.5rem solid transparent;border-left-color:#0f172a;border-right:0}.tooltip--left:hover:after{transform:translateY(-50%) translate(0)}.tooltip--left:hover:before{transform:translateY(-50%) translate(0)}.tooltip--right:after{left:calc(100% + .6rem);top:50%;transform:translateY(-50%) translate(-.4rem)}.tooltip--right:before{left:calc(100% + .1rem);top:50%;transform:translateY(-50%) translate(-.4rem);border:.5rem solid transparent;border-right-color:#0f172a;border-left:0}.tooltip--right:hover:after{transform:translateY(-50%) translate(0)}.tooltip--right:hover:before{transform:translateY(-50%) translate(0)}.level-card{position:relative;border:.1rem solid #e2e8f0;padding:1.8rem 1.5rem 1.5rem;border-radius:2rem;transition:all .2s ease;background-color:#fff;overflow:visible;cursor:pointer}.level-card:hover{box-shadow:0 .4rem 1.6rem #0000001a;border-color:#cbd5e1}.level-card__number{position:absolute;top:1rem;left:1rem;width:2.4rem;height:2.4rem;border-radius:50%;background:#f1f5f9;border:.1rem solid #e2e8f0;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;color:#94a3b8;line-height:1;-webkit-user-select:none;user-select:none}.level-card__fold{position:absolute;top:0;right:0;width:4rem;height:4rem;pointer-events:none;overflow:hidden;border-top-right-radius:2rem}.level-card__fold:before{content:"";position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 4rem 4rem 0;border-color:transparent #475569 transparent transparent}.level-card__fold-text{position:absolute;left:67%;top:33%;transform:translate(-50%,-50%) rotate(45deg);color:#f8fafc;font-size:.9rem;font-weight:700;line-height:1;white-space:nowrap;z-index:1;-webkit-user-select:none;user-select:none}.level-card__title{margin:.6rem 0 .3rem;font-size:1.5rem;font-weight:600;color:#0f172a;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level-card__subtitle{color:#64748b;font-size:1.3rem;margin-bottom:.8rem;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level-card__stars{display:flex;justify-content:center;gap:.2rem;margin-bottom:.6rem}.level-card__stars--empty{visibility:hidden}.level-card__star{fill:none;stroke:#cbd5e1;stroke-width:1.5}.level-card__star--filled{fill:#0f172a;stroke:#0f172a}.level-card__lock{position:absolute;top:.9rem;right:.9rem;color:#94a3b8;line-height:0}.level-card--locked{background-color:#f8fafc}.level-card--locked .level-card__title{color:#94a3b8}.level-card--locked .level-card__subtitle{color:#cbd5e1}.level-card__challenge{position:absolute;bottom:1.2rem;left:1.2rem}.level-card__record{position:absolute;bottom:1.2rem;right:1.2rem}.level-card__record .icon-btn:disabled{opacity:.25;cursor:default}.dashboard-intro{max-width:76rem;margin:6rem auto 0;padding:0 2rem;color:#475569}.dashboard-intro__title{font-size:1.6rem;font-weight:700;color:#334155;margin:2.8rem 0 .8rem}.dashboard-intro__text{font-size:1.35rem;line-height:1.75;margin:0 0 .8rem}.dashboard-intro__links{margin:0;padding-left:1.8rem;font-size:1.35rem;line-height:2}.dashboard-intro__link{color:#2563eb;text-decoration:none}.dashboard-intro__link:hover{color:#1d4ed8;text-decoration:underline;text-underline-offset:.2rem}.dashboard-intro__link-desc{color:#64748b}.modal-overlay{position:fixed;inset:0;background-color:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1.5rem;animation:fadeIn .2s ease-out}.modal{background-color:var(--color-surface, #fff);border-radius:1.5rem;box-shadow:0 10px 30px #00000080;display:flex;flex-direction:column;width:100%;max-width:480px;max-height:90vh;animation:slideUp .3s cubic-bezier(.16,1,.3,1);overflow:hidden}.modal--sm{max-width:320px}.modal--md{max-width:480px}.modal--lg{max-width:640px}.modal--auto{max-width:auto}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 1.75rem 1rem;flex-shrink:0}.modal__header-content{flex:1;display:flex;align-items:center;gap:.75rem}.modal__title{margin:0;font-size:2rem;font-weight:700;color:var(--color-text-primary, #0f172a)}.modal__close-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;background:transparent;color:var(--color-text-tertiary, #94a3b8);cursor:pointer;border-radius:.5rem;transition:all .2s ease}.modal__close-btn:hover{background-color:var(--color-surface-hover, #f1f5f9);color:var(--color-text-primary, #0f172a)}.modal__body{padding:0 1.75rem 1.5rem;overflow-y:auto;color:var(--color-text-secondary, #334155);font-size:1.6rem;line-height:1.6;display:flex;flex-direction:column;gap:1.25rem}.modal__body::-webkit-scrollbar{width:6px}.modal__body::-webkit-scrollbar-track{background:transparent}.modal__body::-webkit-scrollbar-thumb{background:var(--color-border, #e2e8f0);border-radius:3px}.modal__footer{display:flex;align-items:center;gap:.75rem;padding:1rem 1.75rem 1.5rem;flex-shrink:0}.modal__footer--left{justify-content:flex-start}.modal__footer--center{justify-content:center}.modal__footer--right{justify-content:flex-end}.modal__footer--between{justify-content:space-between}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.add-level-modal__form{display:flex;flex-direction:column;height:100%;flex:1;min-height:0}.add-level-modal__body-override{padding-top:0;flex:1}.add-level-modal__field{display:flex;flex-direction:column;gap:.6rem}.add-level-modal__field--grow{flex:1;min-height:16rem;display:flex;flex-direction:column}.add-level-modal__label{font-size:1.3rem;font-weight:600;color:#334155}.add-level-modal__required{color:#ef4444;margin-left:.2rem}.add-level-modal__optional{font-weight:400;color:#94a3b8;font-size:1.2rem;margin-left:.3rem}.add-level-modal__input{height:3.8rem;border:1px solid #e2e8f0;border-radius:.6rem;padding:0 1.2rem;font-size:1.4rem;font-family:inherit;color:#0f172a;outline:none;background:#f8fafc;transition:border-color .12s}.add-level-modal__input::placeholder{color:#cbd5e1}.add-level-modal__input:focus{border-color:#94a3b8;background:#fff}.add-level-modal__textarea{flex:1;border:1px solid #e2e8f0;border-radius:.6rem;padding:1rem 1.2rem;font-size:1.4rem;font-family:inherit;color:#0f172a;outline:none;background:#f8fafc;resize:none;line-height:1.7;transition:border-color .12s;min-height:14rem}.add-level-modal__textarea::placeholder{color:#cbd5e1}.add-level-modal__textarea:focus{border-color:#94a3b8;background:#fff}.custom-level-group__legend{display:flex;align-items:center;gap:.8rem}.custom-level-group__add-btn{display:flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:50%;border:1.5px solid #cbd5e1;background:#fff;color:#64748b;cursor:pointer;transition:border-color .12s,background .12s,color .12s;flex-shrink:0}.custom-level-group__add-btn:hover{border-color:#0f172a;background:#0f172a;color:#fff}.custom-level-group__card-wrap{position:relative}.custom-level-group__card-wrap:hover .custom-level-group__delete-btn{opacity:1}.custom-level-group__delete-btn{position:absolute;top:.8rem;right:.8rem;z-index:10;display:flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:.5rem;border:none;background:#f1f5f9;color:#94a3b8;cursor:pointer;opacity:0;transition:opacity .15s,background .12s,color .12s}.custom-level-group__delete-btn:hover{background:#fee2e2;color:#ef4444}.custom-level-group__empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:1.2rem;padding:4rem 0;color:#94a3b8}.custom-level-group__empty p{font-size:1.4rem;margin:0}.social-login-btn{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:3.6rem;border-radius:.6rem;border:1px solid transparent;font-size:1.3rem;font-weight:600;font-family:inherit;cursor:pointer;transition:opacity .15s,background .15s,border-color .15s}.social-login-btn:hover{opacity:.88}.social-login-btn__icon{position:absolute;left:1.2rem;display:flex;align-items:center;justify-content:center;width:1.8rem;height:1.8rem}.social-login-btn--naver{background:#03c75a;color:#fff}.social-login-btn--kakao{background:#fee500;color:#191600}.social-login-btn--google{background:#fff;color:#3c4043;border-color:#dadce0}.social-login-btn--google:hover{opacity:1;background:#f8fafc}.settings-panel__popover .settings-panel__content{max-height:none;overflow:visible}.settings-panel__popover{height:auto}.settings-panel__popover .popover__trigger{flex:0}.settings-panel__content{right:0;left:auto;min-width:26rem;top:calc(100% + .8rem)}.settings-panel__avatar{width:3.2rem;height:3.2rem;border-radius:50%;background:#0f172a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .15s;flex-shrink:0}.settings-panel__avatar:hover{opacity:.8}.settings-panel__profile{display:flex;gap:1.2rem;align-items:center;padding:1.6rem 1.2rem 1.2rem}.settings-panel__avatar-large{width:4.4rem;height:4.4rem;border-radius:50%;background:#0f172a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:600;flex-shrink:0;-webkit-user-select:none;user-select:none}.settings-panel__name-section{display:flex;flex-direction:column;gap:.4rem;min-width:0;flex:1}.settings-panel__name-row{display:flex;align-items:center;gap:.5rem}.settings-panel__name{font-size:1.5rem;font-weight:600;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-panel__edit-btn{color:#94a3b8;flex-shrink:0}.settings-panel__edit-btn:hover{color:#0f172a}.settings-panel__name-input{font-size:1.5rem;font-weight:600;color:#0f172a;border:1px solid #94a3b8;border-radius:.4rem;padding:.2rem .6rem;outline:none;background:#f8fafc;width:100%;font-family:inherit}.settings-panel__name-input:focus{border-color:#0f172a}.settings-panel__name-hint{font-size:1.2rem;color:#94a3b8;margin:0}.settings-panel__divider{height:1px;background:#e2e8f0;margin:0 1.2rem}.settings-panel__options{padding:.8rem 1.2rem}.settings-panel__option-row{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:.5rem 0}.settings-panel__option-label{font-size:1.3rem;color:#334155;font-weight:500}.settings-panel__select{appearance:none;background:#f8fafc 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='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right .8rem center;border:1px solid #e2e8f0;border-radius:.5rem;padding:.4rem 2.4rem .4rem .8rem;font-size:1.3rem;font-family:inherit;color:#0f172a;cursor:pointer;outline:none;transition:border-color .12s}.settings-panel__select:focus,.settings-panel__select:hover{border-color:#94a3b8}.settings-panel__login-section{padding:1.2rem 1.2rem 1.4rem;display:flex;flex-direction:column;gap:1rem}.settings-panel__login-desc{font-size:1.2rem;color:#64748b;margin:0;line-height:1.6}.settings-panel__collapsible{overflow:hidden;max-height:24rem;opacity:1;transition:max-height .3s ease,opacity .3s ease}.settings-panel__collapsible--collapsed{max-height:0;opacity:0}.settings-panel__social{display:flex;flex-direction:column;gap:.8rem;max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .3s ease,margin-top .3s ease}.settings-panel__social--open{max-height:24rem;opacity:1;margin-top:.2rem}.toggle{position:relative;width:3.5rem;height:2.1rem;border-radius:1.05rem;border:none;background:#cbd5e1;cursor:pointer;padding:0;transition:background .22s cubic-bezier(.4,0,.2,1);flex-shrink:0}.toggle--on{background:#22c55e}.toggle--disabled{opacity:.45;cursor:not-allowed}.toggle__thumb{position:absolute;top:.25rem;left:.25rem;width:1.6rem;height:1.6rem;border-radius:50%;background:#fff;box-shadow:0 .1rem .4rem #00000038;transition:transform .22s cubic-bezier(.4,0,.2,1)}.toggle--on .toggle__thumb{transform:translate(1.4rem)}.bottom-sheet{position:fixed;inset:0;z-index:200;pointer-events:none}.bottom-sheet--open{pointer-events:auto}.bottom-sheet--open .bottom-sheet__overlay{opacity:1}.bottom-sheet--open .bottom-sheet__panel{transform:translateY(0)}.bottom-sheet__overlay{position:absolute;inset:0;background:#0006;opacity:0;transition:opacity .28s}.bottom-sheet__panel{position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:1.4rem 1.4rem 0 0;transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);max-height:85vh;overflow-y:auto}.bottom-sheet__handle-area{display:flex;justify-content:center;padding:1.2rem 0 .6rem;cursor:grab;touch-action:none}.bottom-sheet__handle{width:4rem;height:.4rem;background:#e2e8f0;border-radius:99rem}.bottom-sheet__body{padding-bottom:env(safe-area-inset-bottom,1.6rem)}@keyframes group-nav-target-fade{0%,57%{opacity:1}to{opacity:0}}.group-nav__list{list-style:none;margin:0;padding:0}.group-nav__btn{display:flex;align-items:center;gap:1rem;width:100%;background:none;border:none;cursor:pointer;padding:.4rem 0}.group-nav__dot{flex-shrink:0;width:.7rem;height:.7rem;border-radius:50%;background:#cbd5e1;transition:background .2s,transform .2s}.group-nav__dot--target{background:#0f172a;transform:scale(1.5);box-shadow:0 0 0 .7rem #0003;transition:box-shadow .7s,transform .2s;animation:group-nav-target-fade .7s forwards}.group-nav__dot--active{background:#0f172a;transform:scale(1.3);transition:transform .8s;box-shadow:0 0 0 .25rem #0003}.group-nav__dot--completed{background:#475569}.group-nav__label{flex:1;font-size:1.2rem;font-weight:500;color:#0f172a;white-space:nowrap;text-align:right;transition:opacity .2s}.group-nav__label--dim{opacity:.25}.group-nav__label:hover{opacity:1}.group-nav--side{display:none}@media(min-width:768px){.group-nav--side{display:flex;flex-direction:column;align-items:flex-end;gap:1.2rem;position:fixed;top:2.4rem;right:2.4rem;transform:none;z-index:50;width:14rem}.group-nav--side .group-nav__nav{width:100%;min-height:0}.group-nav--side .group-nav__viewport{width:100%;max-height:calc(100vh - 12rem);overflow:hidden}.group-nav--side .group-nav__viewport--fade{mask-image:linear-gradient(to bottom,transparent 0,black 2.4rem,black calc(100% - 2.4rem),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 2.4rem,black calc(100% - 2.4rem),transparent 100%)}.group-nav--side .group-nav__list{display:flex;flex-direction:column;gap:.56rem;transition:transform .4s cubic-bezier(.4,0,.2,1);will-change:transform;padding-right:.6rem;padding-top:50vh;padding-bottom:50vh}.group-nav--side .group-nav__item{position:relative;isolation:isolate}.group-nav--side .group-nav__item:not(:last-child):after{content:"";position:absolute;right:.3rem;top:50%;width:.1rem;height:calc(100% + .56rem);background:#cbd5e1;z-index:-1}}.group-nav--bottom{display:flex;align-items:center;position:fixed;bottom:0;left:0;right:0;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:.1rem solid #e2e8f0;padding:1rem 1.6rem;z-index:50}.group-nav--bottom .group-nav__list{flex:1;display:flex;flex-direction:row;gap:0;justify-content:center;align-items:center;flex-wrap:wrap;row-gap:.8rem}.group-nav--bottom .group-nav__btn{padding:.6rem .5rem}.group-nav--bottom .group-nav__profile-btn{width:3.2rem;height:3.2rem;border-radius:50%;background:#0f172a;color:#fff;border:none;font-size:1.4rem;font-weight:600;font-family:inherit;cursor:pointer;flex-shrink:0;transition:opacity .15s;margin:0 .7rem 0 2rem}.group-nav--bottom .group-nav__profile-btn:hover{opacity:.8}@media(min-width:768px){.group-nav--bottom{display:none}}.ad-slot{min-height:12rem;margin:2rem 0}.ad-slot .adsbygoogle{min-height:12rem}.dashboard{padding:2rem 2rem 6rem}@media(min-width:768px){.dashboard{padding-bottom:90vh;padding-right:18.4rem}}.dashboard__header{display:flex;align-items:center;gap:1.6rem;margin-bottom:3rem}@media(max-width:767px){.dashboard__header{flex-direction:column;align-items:flex-start;gap:1.4rem}}.dashboard__header-actions{display:flex;align-items:center;gap:.8rem;margin-left:auto}@media(max-width:767px){.dashboard__header-actions{margin-left:0;width:100%}.dashboard__header-actions>.btn:last-child{flex-shrink:0}}.dashboard__resume-btn{gap:.9rem;padding:.7rem 1.4rem;text-align:left}.dashboard__resume-btn svg{flex-shrink:0}@media(max-width:767px){.dashboard__resume-btn{min-width:0}}.dashboard__resume-text{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-width:0}.dashboard__resume-label{font-size:1.1rem;font-weight:500;color:#cbd5e1}.dashboard__resume-levels{max-width:34rem;font-size:1.3rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:767px){.dashboard__resume-levels{max-width:100%}}.dashboard__title{font-size:4rem;font-weight:200;color:#0f172a}.dashboard__group{border:.5rem solid #e2e8f0;border-radius:4rem;padding:2rem;margin:2rem 0;min-width:0;transition:border-color .3s ease}.dashboard__group--perfect{border-color:#0f172a}.dashboard__group-title{display:flex;align-items:center;gap:.6rem;font-size:1.6rem;font-weight:600;color:#334155;padding:0 .8rem}.dashboard__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(22rem,1fr));gap:1.6rem}.dashboard__modal-body-override{padding-top:2rem}.dashboard__modal-message{font-size:1.5rem;color:#0f172a;line-height:1.6;text-align:center;margin:0}.group-achievement{display:inline-flex;align-items:center;gap:.1rem;color:#0f172a;line-height:0}.group-achievement--unlocked{opacity:.7}.typing-char{display:inline-flex;flex-direction:column;align-items:stretch;text-align:center;font-family:inherit;font-size:3.2rem;line-height:1.2;transition:all .1s ease}.typing-char--non-en{min-width:.4em}.typing-char__target{padding-bottom:.4rem;border-bottom:.3rem solid transparent;transition:inherit;white-space:pre-wrap}.typing-char__input{font-size:2.4rem;color:#000;height:3rem;display:flex;align-items:center;justify-content:center;margin-top:.8rem;white-space:pre-wrap}.typing-char--state-pending .typing-char__target,.typing-char--state-active .typing-char__target{color:#000}.typing-char--state-completed .typing-char__target{color:#888}.typing-char--status-none .typing-char__target{border-bottom-color:transparent}.typing-char--status-correct .typing-char__target{border-bottom-color:#0bf}.typing-char--status-incorrect .typing-char__target{border-bottom-color:#ff2400}.typing-char--status-corrected .typing-char__target{border-bottom-color:orange}.typing-char--state-active .typing-char__target{position:relative}.typing-char--state-active .typing-char__target:after{content:"";position:absolute;left:0;bottom:-.3rem;width:100%;height:.3rem;background-color:#0003;animation:blink 1s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.button-wrap-link{text-decoration:none;color:inherit}.typing-stats__content .button-wrap-link{position:absolute;left:2rem}.typing-stats{width:100%;font-family:Inter,sans-serif}.typing-stats__content{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:0;padding:.8rem 1.2rem;border-bottom:1px solid #e2e8f0;justify-content:center;overflow:hidden}@media(min-width:64em){.typing-stats__content{flex-wrap:nowrap;height:5rem;padding:0 2rem}}.typing-stats__content>*:not(.replay-board__progress-fill):not(.button-wrap-link){position:relative}.typing-stats__mode-toggle{position:static;margin-right:auto}@media(min-width:64em){.typing-stats__mode-toggle{position:absolute;left:2rem;margin-right:0}}.typing-stats__item{display:flex;align-items:center;gap:.5rem;flex-shrink:0;padding:0 1rem}@media(min-width:64em){.typing-stats__item{padding:0 1.4rem}}.typing-stats__item:first-child{padding-left:0}.typing-stats__item:last-child{padding-right:0}.typing-stats__label{font-size:1.1rem;font-weight:500;color:#94a3b8;white-space:nowrap}.typing-stats__value-group{display:flex;align-items:baseline;gap:.3rem}.typing-stats__unit{font-size:1.1rem;font-weight:600;color:#64748b;white-space:nowrap}.typing-stats__divider{flex-shrink:0;width:1px;height:1.6rem;background-color:#e2e8f0}.typing-stats__dot{width:.6rem;height:.6rem;border-radius:50%;background-color:#cbd5e1;flex-shrink:0;transition:background-color .3s ease}.typing-stats--active .typing-stats__dot{background-color:#ef4444;animation:pulse-red 1.5s infinite}.typing-stats__pb{font-size:1rem;font-weight:500;color:#94a3b8;background-color:#f1f5f9;border:1px solid #e2e8f0;border-radius:.4rem;padding:.15rem .5rem;white-space:nowrap;transition:color .3s ease,background-color .3s ease,border-color .3s ease}.typing-stats__pb--beating{color:#16a34a;background-color:#f0fdf4;border-color:#bbf7d0}.rolling-number{display:flex;align-items:center;height:1.6rem;overflow:hidden;font-size:1.7rem;font-weight:800;color:#0f172a}.rolling-number__digit-container{width:1ch;height:1.6rem;position:relative;overflow:hidden}.rolling-number__digit-strip{display:flex;flex-direction:column;transition:transform .45s cubic-bezier(.45,.05,.55,.95)}.rolling-number__digit{height:2rem;display:flex;justify-content:center;align-items:center}@keyframes pulse-red{0%{transform:scale(.95);box-shadow:0 0 #ef444499}70%{transform:scale(1);box-shadow:0 0 0 5px #ef444400}to{transform:scale(.95);box-shadow:0 0 #ef444400}}.keyboard{-webkit-user-select:none;user-select:none;width:100%}.keyboard svg{display:block}.keyboard__layout rect{stroke:#d1d5db;fill:#fff;transition:fill 1.5s,stroke .3s,stroke-width .3s}.keyboard__layout rect.keyboard__key--next{fill:#0f1e5047;stroke:#0f1e5099;transition:fill 0s,stroke 0s,stroke-width 0s}.keyboard__layout rect.keyboard__key--status-correct{fill:#fff!important;stroke:#0f1e5080!important}.keyboard__layout rect.keyboard__key--status-incorrect{fill:#fff!important;stroke:#ff2400!important;stroke-width:.4rem!important}.keyboard__layout>rect:first-child{fill:#f8fafc;stroke:#e2e8f0}.keyboard__labels{fill:#1e293b;font-family:inherit;pointer-events:none}.keyboard__labels text{transition:fill .1s}.keyboard__labels .keyboard__label--small{font-size:1rem;font-weight:600}.snackbar{position:absolute;bottom:2rem;left:50%;transform:translate(-50%) translateY(0);padding:1rem 1.6rem;background:#0f172a;color:#fff;font-size:1.4rem;border-radius:.8rem;white-space:nowrap;pointer-events:none;opacity:1;animation:snackbar-in .18s ease,snackbar-out .22s ease 1.8s forwards}@keyframes snackbar-in{0%{opacity:0;transform:translate(-50%) translateY(.8rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes snackbar-out{to{opacity:0;transform:translate(-50%) translateY(.8rem)}}.typing-board{display:flex;flex-direction:column;width:100%;flex:1;min-height:0;background-color:#fff;overflow:hidden}@media(min-width:64em){.typing-board{flex:none;border-radius:1.6rem;box-shadow:0 4px 25px -5px #0000001a,0 1px 4px #0000001a}}.typing-board__hidden-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.typing-board__display{position:relative;flex:1;min-height:0;padding:2rem;border:.5rem solid #fff;background-color:#fff;overflow-y:auto}@media(min-width:40em){.typing-board__display{padding:3rem 4rem}}@media(min-width:64em){.typing-board__display{flex:none;height:36rem}}.typing-board__display::-webkit-scrollbar{width:6px}.typing-board__display::-webkit-scrollbar-track{background:transparent}.typing-board__display::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:3px}.typing-board__display::-webkit-scrollbar-thumb:hover{background:#cbd5e1}.typing-board__chars{display:flex;flex-direction:column;gap:3rem;width:100%}.typing-board__line{display:flex;flex-wrap:wrap;row-gap:3rem}.typing-board__ime-warn{position:relative;height:0}.typing-board__ime-warn .snackbar{bottom:auto;top:1rem}.typing-board__keyboard-area{background-color:#f1f5f9;border-top:1px solid #e2e8f0;display:flex;flex-direction:column;align-items:center;width:100%;flex-shrink:0}.typing-board__keyboard-wrap{display:flex;justify-content:center;width:100%;padding:1rem}@media(min-width:40em){.typing-board__keyboard-wrap{padding:1rem 2rem}}@media(min-width:64em){.typing-board__keyboard-wrap{padding:1rem 3rem}}.result-modal__body-override{padding-top:3.2rem;display:flex;flex-direction:column;align-items:center;gap:3.2rem}.result-modal__stars{display:flex;gap:.8rem;align-items:flex-end}.result-modal__stars .result-modal__star:nth-child(2){transform:translateY(-1rem)}.result-modal__star{font-size:5.6rem;color:transparent;-webkit-text-stroke:.2rem #0f172a}.result-modal__star--filled{color:#0f172a;animation:star-pop .4s cubic-bezier(.34,1.56,.64,1) both}.result-modal__stats{display:flex;align-items:center;gap:2.4rem}.result-modal__stat{display:flex;flex-direction:column;align-items:center;gap:.4rem}.result-modal__stat-value{font-size:3.2rem;font-weight:200;color:#0f172a;line-height:1}.result-modal__stat-value small{font-size:1.6rem;font-weight:500;color:#64748b}.result-modal__stat-label{font-size:1.2rem;color:#94a3b8;font-weight:500}.result-modal__stat-divider{width:1px;height:4rem;background:#e2e8f0}.result-modal__nudge{font-size:1.3rem;color:#000;text-align:center;margin-bottom:-1.6rem}.result-modal__actions{display:flex;gap:1rem}.result-modal__actions .btn--play{display:flex;align-items:center;gap:.8rem}.result-modal__enter-hint{font-size:1rem;opacity:.6;border:1px solid rgba(255,255,255,.4);border-radius:.3rem;padding:.1rem .4rem;animation:enter-hint-in .3s ease both;margin-left:.4rem}@keyframes enter-hint-in{0%{opacity:0;transform:translate(-4px)}to{opacity:.6;transform:translate(0)}}@keyframes star-pop{0%{transform:scale(0) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.level-player{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;padding:0 1.6rem}@media(min-width:64em){.level-player{height:auto;overflow:visible;padding:0 4rem}}.level-player__header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 0;color:#000;gap:1rem}.level-player__title-wrapper{display:flex;align-items:center;gap:1rem;min-width:0}.level-player__title-wrapper .group-badge{background-color:#000;line-height:1;font-size:1.2rem;padding:.5rem 1rem;color:#fff;border-radius:.4rem;text-transform:uppercase}.level-player__title{font-weight:400;font-size:1.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(min-width:40em){.level-player__title{font-size:1.5rem}}.level-player__info{font-size:1.2rem;color:#777}.level-player__back-link{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:#666;transition:all .2s ease}.level-player__back-link:hover{color:#000}.level-player__back-link svg{width:2rem;height:2rem}.level-player__board-container{display:flex;justify-content:center;flex:1;min-height:0}@media(min-width:64em){.level-player__board-container{flex:none}}.level-player__error{display:flex;justify-content:center;align-items:center;height:300px;font-size:1.8rem;color:#ff6b6b}.replay-board__controls{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.2rem;padding:.8rem 1.2rem;width:100%;border-bottom:1px solid #e2e8f0}@media(min-width:64em){.replay-board__controls{flex-wrap:nowrap;padding:0 2rem;height:5rem}}.replay-board__controls>*:not(.replay-board__progress-fill){position:relative}.replay-board__buttons{display:flex;align-items:center;gap:.6rem;height:2.4rem}.replay-board__speed{display:flex;gap:.3rem}.replay-board__speed-btn{padding:.3rem .7rem;border:1px solid #e2e8f0;border-radius:.4rem;background:#fff;font-size:1.2rem;cursor:pointer;transition:all .15s}.replay-board__speed-btn--active{background:#1e293b;color:#fff;border-color:#1e293b}.replay-board__speed-btn:hover:not(.replay-board__speed-btn--active){background:#f1f5f9}.replay-board__progress-fill{position:absolute;top:0;left:0;height:100%;background:#e2e8f0;will-change:width;pointer-events:none;transition:width .25s cubic-bezier(.34,1.56,.64,1)}.replay-board__stats-summary{display:flex;gap:1.2rem;font-size:1.2rem;color:#64748b}.replay-board__stats-summary span{white-space:nowrap}.replay-board__left{display:flex;align-items:center;gap:.4rem;width:31rem}.replay-board__popover-label{flex:1;display:flex;align-items:center;gap:.4rem;font-size:1.2rem;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:25rem}.replay-board__popover-stats{font-size:1.1rem;color:#94a3b8;white-space:nowrap}.replay-board__popover-bookmark{flex-shrink:0}.replay-board__latest-badge{display:inline-block;margin-left:.5rem;padding:.1rem .5rem;font-size:1rem;font-weight:600;color:#334155;background:#f1f5f9;border:1px solid #94a3b8;border-radius:.3rem;white-space:nowrap}.challenge-result__body{padding-top:3.2rem;display:flex;flex-direction:column;align-items:center;gap:2.4rem}.challenge-result__new-best{display:flex;align-items:center;gap:.6rem;font-size:1.4rem;font-weight:700;color:#0f172a;background:#fef9c3;border:1px solid #fde047;border-radius:9999px;padding:.4rem 1.2rem;animation:badge-pop .4s cubic-bezier(.34,1.56,.64,1) both}.challenge-result__score-block{display:flex;flex-direction:column;align-items:center;gap:.4rem}.challenge-result__score{font-size:6.4rem;font-weight:200;color:#0f172a;line-height:1;letter-spacing:-.04em}.challenge-result__score-label{font-size:1.2rem;color:#94a3b8;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.challenge-result__stats{display:flex;align-items:center;gap:2.4rem}.challenge-result__stat{display:flex;flex-direction:column;align-items:center;gap:.4rem}.challenge-result__stat-value{font-size:2.8rem;font-weight:200;color:#0f172a;line-height:1}.challenge-result__stat-value small{font-size:1.4rem;font-weight:500;color:#64748b}.challenge-result__stat-label{font-size:1.2rem;color:#94a3b8;font-weight:500}.challenge-result__stat-divider{width:1px;height:4rem;background:#e2e8f0}.challenge-result__prev-best{font-size:1.3rem;color:#64748b;margin:-.8rem 0}.challenge-result__invalidated{font-size:1.3rem;color:#ef4444;text-align:center}.challenge-result__share{display:inline-flex;align-items:center;gap:.6rem;font-size:1.3rem;font-weight:500;color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.8rem;padding:.6rem 1.4rem;cursor:pointer;transition:background .15s ease,border-color .15s ease}.challenge-result__share:hover{background:#f1f5f9;border-color:#cbd5e1}.challenge-result__share--copied{color:#16a34a;border-color:#86efac;background:#f0fdf4}@keyframes badge-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.challenge-player{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;padding:0 1.6rem}@media(min-width:64em){.challenge-player{height:auto;overflow:visible;padding:0 4rem}}.challenge-player--login{align-items:center;justify-content:center}.challenge-player__login-prompt{display:flex;flex-direction:column;align-items:center;gap:2.4rem;max-width:36rem;text-align:center}.challenge-player__login-message{font-size:1.5rem;color:#475569}.challenge-player__header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 0;color:#000;gap:1rem}.challenge-player__title-wrapper{display:flex;align-items:center;gap:1rem;min-width:0}.challenge-player__title-wrapper .group-badge{background-color:#000;line-height:1;font-size:1.2rem;padding:.5rem 1rem;color:#fff;border-radius:.4rem;text-transform:uppercase}.challenge-player__title{font-weight:400;font-size:1.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(min-width:40em){.challenge-player__title{font-size:1.5rem}}.challenge-player__mode-badge{flex-shrink:0;font-size:1.1rem;font-weight:600;color:#fff;background:#0f172a;border-radius:.4rem;padding:.4rem .9rem;letter-spacing:.04em;text-transform:uppercase}.challenge-player__back-link{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:#666;transition:all .2s ease}.challenge-player__back-link:hover{color:#000}.challenge-player__back-link svg{width:2rem;height:2rem}.challenge-player__board-container{display:flex;justify-content:center;flex:1;min-height:0}@media(min-width:64em){.challenge-player__board-container{flex:none}}.challenge-player__error{display:flex;justify-content:center;align-items:center;height:300px;font-size:1.8rem;color:#ff6b6b}.challenge-record{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;padding:0 1.6rem}@media(min-width:64em){.challenge-record{height:auto;overflow:visible;padding:0 4rem}}.challenge-record__header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 0;color:#000;gap:1rem}.challenge-record__title-wrapper{display:flex;align-items:center;gap:1rem;min-width:0}.challenge-record__title{font-weight:400;font-size:1.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(min-width:40em){.challenge-record__title{font-size:1.5rem}}.challenge-record__mode-badge{flex-shrink:0;font-size:1.1rem;font-weight:600;color:#fff;background:#0f172a;border-radius:.4rem;padding:.4rem .9rem;letter-spacing:.04em;text-transform:uppercase}.challenge-record__meta{display:flex;align-items:center;gap:1.2rem;flex-shrink:0}.challenge-record__score{font-size:1.3rem;color:#475569}.challenge-record__score strong{font-weight:700;color:#0f172a}.challenge-record__player{font-size:1.2rem;font-weight:600;color:#0f172a}.challenge-record__date{font-size:1.2rem;color:#94a3b8}.challenge-record__back-link{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:#666;transition:all .2s ease}.challenge-record__back-link:hover{color:#000}.challenge-record__back-link svg{width:2rem;height:2rem}.challenge-record__board-container{display:flex;justify-content:center;flex:1;min-height:0}@media(min-width:64em){.challenge-record__board-container{flex:none}}.challenge-record__error{display:flex;justify-content:center;align-items:center;height:300px;font-size:1.8rem;color:#ff6b6b}.privacy{max-width:72rem;margin:0 auto;padding:2.4rem 2rem 6rem;color:#334155;line-height:1.75}.privacy__header{display:flex;align-items:center;gap:1rem;margin-bottom:2.4rem}.privacy__back-link{display:inline-flex;align-items:center;color:#64748b;transition:color .15s}.privacy__back-link:hover{color:#0f172a}.privacy__title{font-size:2.4rem;font-weight:700;color:#0f172a;margin:0}.privacy__intro{font-size:1.4rem;color:#475569;margin:0 0 2.4rem}.privacy__section{margin-bottom:2.8rem}.privacy__section h2{font-size:1.7rem;font-weight:600;color:#0f172a;margin:0 0 1rem}.privacy__section p{font-size:1.4rem;margin:0 0 .8rem}.privacy__section ul{margin:0;padding-left:1.8rem}.privacy__section ul li{font-size:1.4rem;margin-bottom:.4rem}.privacy__section a{color:#2563eb;text-decoration:underline;text-underline-offset:.2rem}.privacy__section a:hover{color:#1d4ed8}.privacy__section strong{color:#0f172a;font-weight:600}.privacy__table{width:100%;border-collapse:collapse;margin:1.2rem 0;font-size:1.3rem}.privacy__table th,.privacy__table td{border:1px solid #e2e8f0;padding:.8rem 1rem;text-align:left;vertical-align:top}.privacy__table th{background:#f8fafc;font-weight:600;color:#0f172a;white-space:nowrap}.privacy__note{font-size:1.3rem!important;color:#64748b;background:#f8fafc;border-left:.3rem solid #cbd5e1;padding:.8rem 1.2rem;border-radius:.4rem;margin-top:1rem!important}.privacy__date{font-size:1.3rem;color:#94a3b8;margin-top:3.2rem;padding-top:1.6rem;border-top:1px solid #e2e8f0}.create-class__label{display:block;font-size:1.4rem;font-weight:600;color:#334155;margin-bottom:.8rem}.create-class__input{width:100%;padding:1rem 1.2rem;font-size:1.6rem;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.8rem;outline:none;transition:border-color .15s ease}.create-class__input::placeholder{color:#94a3b8}.create-class__input:focus{border-color:#0f172a}.create-class__hint{margin-top:.8rem;font-size:1.3rem;color:#64748b}.class-card{display:flex;flex-direction:column;gap:1.2rem;padding:1.8rem 2rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:1.2rem;box-shadow:0 .1rem .3rem #0f172a0a;cursor:pointer;text-align:left;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.class-card:hover{border-color:#cbd5e1;box-shadow:0 .4rem 1.2rem #0f172a14;transform:translateY(-.2rem)}.class-card:focus-visible{outline:.2rem solid #0f172a;outline-offset:.2rem}.class-card__name{font-size:1.9rem;font-weight:700;color:#0f172a}.class-card__meta{display:flex;gap:1.4rem;font-size:1.3rem;color:#64748b}.class-card__meta-item{display:inline-flex;align-items:center;gap:.4rem}.class-card__code-row{display:flex;align-items:center;gap:.8rem;padding-top:1.2rem;border-top:.1rem solid #f1f5f9}.class-card__code-label{font-size:1.2rem;color:#94a3b8}.class-card__code{font-size:1.6rem;font-weight:700;letter-spacing:.1em;color:#0f172a;font-family:SF Mono,Menlo,monospace}.class-card__copy{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;padding:.5rem;color:#64748b;background:transparent;border:none;border-radius:.6rem;cursor:pointer;transition:background .15s ease,color .15s ease}.class-card__copy:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.class-card__copy:disabled{opacity:.4;cursor:default}.archived-classes{margin-top:3.2rem}.archived-classes__toggle{display:inline-flex;align-items:center;gap:.6rem;padding:.7rem 1.2rem;font-size:1.35rem;font-weight:600;color:#64748b;background:transparent;border:none;border-radius:.8rem;cursor:pointer}.archived-classes__toggle:hover{color:#0f172a;background:#f1f5f9}.archived-classes__toggle .archived-classes__chevron{transition:transform .15s ease}.archived-classes__toggle--open .archived-classes__chevron{transform:rotate(180deg)}.archived-classes__empty{padding:1.6rem;font-size:1.35rem;color:#94a3b8}.archived-classes__list{display:flex;flex-direction:column;gap:.6rem;margin-top:1rem;list-style:none}.archived-classes__item{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:1.2rem 1.4rem;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:.8rem;text-decoration:none;transition:border-color .15s ease}.archived-classes__item:hover{border-color:#cbd5e1}.archived-classes__name{font-size:1.5rem;font-weight:600;color:#475569}.archived-classes__date{font-size:1.25rem;color:#94a3b8;white-space:nowrap}.teacher-home{max-width:96rem;margin:0 auto;padding:3.2rem 2.4rem 6rem}.teacher-home__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1.6rem;margin-bottom:3.2rem}.teacher-home__title{font-size:3rem;font-weight:800;letter-spacing:-.02em;color:#0f172a}.teacher-home__subtitle{margin-top:.6rem;font-size:1.5rem;color:#64748b}.teacher-home__status{font-size:1.5rem;color:#64748b}.teacher-home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(28rem,1fr));gap:1.6rem}.teacher-home__empty{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:6rem 2rem;text-align:center;background:#f8fafc;border:.1rem dashed #cbd5e1;border-radius:1.6rem}.teacher-home__empty-title{font-size:1.9rem;font-weight:700;color:#0f172a}.teacher-home__empty-desc{font-size:1.4rem;color:#64748b;margin-bottom:.8rem}.teacher-home--login{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:2.4rem}.teacher-home__login-card{width:100%;max-width:40rem;display:flex;flex-direction:column;gap:1.2rem;padding:3.2rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:1.6rem;box-shadow:0 .8rem 2.4rem #0f172a14;text-align:center}.teacher-home__login-title{font-size:2.4rem;font-weight:800;color:#0f172a}.teacher-home__login-desc{font-size:1.5rem;color:#64748b}.teacher-home__home-link{margin-top:.8rem;font-size:1.3rem;color:#94a3b8;text-decoration:none}.teacher-home__home-link:hover{color:#64748b}@media(max-width:40em){.teacher-home{padding:2.4rem 1.6rem 4rem}.teacher-home__header{flex-direction:column}}.roster-paste{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;min-height:32rem}.roster-paste__col{display:flex;flex-direction:column;min-width:0}.roster-paste__hint{font-size:1.3rem;line-height:1.6;color:#64748b;margin-bottom:.8rem}.roster-paste__hint code{padding:.1rem .5rem;font-size:1.2rem;background:#f1f5f9;border-radius:.4rem;color:#0f172a}.roster-paste__textarea{flex:1;width:100%;min-height:28rem;padding:1.2rem;font-size:1.5rem;line-height:1.7;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.8rem;resize:vertical;outline:none}.roster-paste__textarea:focus{border-color:#0f172a}.roster-paste__textarea::placeholder{color:#94a3b8}.roster-paste__preview-title{font-size:1.3rem;font-weight:600;color:#334155;margin-bottom:.8rem}.roster-paste__preview{flex:1;overflow-y:auto;max-height:32rem;border:.1rem solid #e2e8f0;border-radius:.8rem;background:#f8fafc}.roster-paste__table{width:100%;border-collapse:collapse;font-size:1.4rem}.roster-paste__table th,.roster-paste__table td{padding:.8rem 1.2rem;text-align:left;border-bottom:.1rem solid #e2e8f0}.roster-paste__table th{position:sticky;top:0;background:#f1f5f9;font-weight:600;color:#64748b;font-size:1.2rem}.roster-paste__table td{color:#0f172a}.roster-paste__th-num,.roster-paste__td-num{width:5rem;color:#64748b}.roster-paste__empty{padding:3rem 1.2rem;text-align:center;font-size:1.3rem;color:#94a3b8}.roster-paste__row--dup td{color:#b91c1c;background:#fef2f2}.roster-paste__error{margin-top:.8rem;padding:.8rem 1.2rem;font-size:1.3rem;font-weight:600;color:#b91c1c;background:#fef2f2;border:.1rem solid #fecaca;border-radius:.8rem}.roster-paste__footnote{font-size:1.2rem;color:#94a3b8}.roster-paste__actions{display:inline-flex;gap:.8rem}@media(max-width:40em){.roster-paste{grid-template-columns:1fr}}.roster-table__error{margin-bottom:1rem;padding:.8rem 1.2rem;font-size:1.3rem;font-weight:600;color:#b91c1c;background:#fef2f2;border:.1rem solid #fecaca;border-radius:.8rem}.roster-table__table{width:100%;border-collapse:collapse;font-size:1.5rem}.roster-table__table th,.roster-table__table td{padding:.8rem 1.2rem;text-align:left;border-bottom:.1rem solid #e2e8f0}.roster-table__table th{font-size:1.2rem;font-weight:600;color:#64748b}.roster-table__table td{color:#0f172a}.roster-table__row{transition:background .15s ease}.roster-table__row--dragging{opacity:.35}.roster-table__row--over td{border-top:.2rem solid #0f172a}.roster-table__row--editing{background:#f8fafc}.roster-table__th-grip,.roster-table__td-grip{width:3.6rem;padding-right:0}.roster-table__grip{display:inline-flex;align-items:center;color:#cbd5e1;cursor:grab}.roster-table__grip:hover{color:#64748b}.roster-table__grip:active{cursor:grabbing}.roster-table__th-num,.roster-table__td-num{width:7rem;color:#64748b}.roster-table__th-status{width:8rem}.roster-table__th-actions,.roster-table__td-actions{width:10rem;text-align:right;white-space:nowrap}.roster-table__input{width:100%;padding:.6rem .8rem;font-size:1.4rem;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.6rem;outline:none}.roster-table__input:focus{border-color:#0f172a}.roster-table__input--num{width:6.4rem}.roster-table__badge{display:inline-block;padding:.2rem .8rem;font-size:1.2rem;font-weight:600;color:#94a3b8;background:#f1f5f9;border-radius:999px}.roster-table__badge--in{color:#15803d;background:#dcfce7}.roster-table__claimed-at{margin-left:.6rem;font-size:1.1rem;color:#94a3b8;white-space:nowrap}.roster-table__foot{display:flex;justify-content:flex-start;margin-top:.8rem}.delete-class{display:flex;flex-direction:column;gap:1.2rem}.delete-class__warning{font-size:1.4rem;line-height:1.6;color:#475569;padding:1.2rem 1.4rem;background:#fef2f2;border:.1rem solid #fecaca;border-radius:.8rem}.delete-class__warning strong{color:#b91c1c}.delete-class__instruction{font-size:1.35rem;color:#64748b}.delete-class__instruction code{padding:.1rem .6rem;font-size:1.3rem;font-weight:600;color:#0f172a;background:#f1f5f9;border-radius:.4rem}.delete-class__input{width:100%;padding:1rem 1.2rem;font-size:1.5rem;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.8rem;outline:none}.delete-class__input:focus{border-color:#b91c1c}.delete-class__input::placeholder{color:#cbd5e1}.delete-class__confirm:not(:disabled){background:#b91c1c;border-color:#b91c1c}.delete-class__confirm:not(:disabled):hover{background:#991b1b;border-color:#991b1b}.editor-item{padding:1.4rem 1.6rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:1rem}.editor-item__head{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem}.editor-item__seq{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;font-size:1.3rem;font-weight:700;color:#fff;background:#0f172a;border-radius:999px}.editor-item__form{flex-shrink:0;padding:.5rem .8rem;font-size:1.3rem;color:#334155;background:#f8fafc;border:.1rem solid #cbd5e1;border-radius:.6rem;cursor:pointer}.editor-item__title{flex:1;min-width:0;padding:.5rem .8rem;font-size:1.4rem;color:#0f172a;background:transparent;border:none;border-bottom:.1rem solid transparent;outline:none}.editor-item__title:focus{border-bottom-color:#cbd5e1}.editor-item__title::placeholder{color:#94a3b8}.editor-item__actions{display:inline-flex;gap:.2rem}.editor-item__actions button{display:inline-flex;align-items:center;justify-content:center;padding:.5rem;color:#64748b;background:transparent;border:none;border-radius:.5rem;cursor:pointer}.editor-item__actions button:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.editor-item__actions button:disabled{opacity:.3;cursor:default}.editor-item__remove:hover:not(:disabled){color:#dc2626!important;background:#fee2e2!important}.editor-item__text{width:100%;padding:1rem 1.2rem;font-size:1.6rem;line-height:1.7;color:#0f172a;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:.8rem;resize:vertical;outline:none}.editor-item__text:focus{border-color:#0f172a;background:#fff}.editor-item__text::placeholder{color:#94a3b8}.editor-item__warnings{list-style:none;margin-top:.8rem;display:flex;flex-direction:column;gap:.4rem}.editor-item__warning{display:flex;align-items:center;gap:.5rem;font-size:1.25rem;color:#b45309}.editor-item__warning svg{flex-shrink:0}.level-browser__chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.6rem}.level-browser__chip{padding:.5rem 1.2rem;font-size:1.3rem;font-weight:500;color:#64748b;background:#f1f5f9;border:.1rem solid transparent;border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease}.level-browser__chip:hover{background:#e2e8f0}.level-browser__chip--active{color:#fff;background:#0f172a}.level-browser__chip--accent{color:#6d28d9;background:#f3e8ff}.level-browser__chip--accent:hover{background:#e9d5ff}.level-browser__chip--accent.level-browser__chip--active{color:#fff;background:#6d28d9}.level-browser__body{display:grid;grid-template-columns:1fr 24rem;gap:1.6rem;min-height:30rem}.level-browser__list{list-style:none;display:flex;flex-direction:column;gap:.4rem;max-height:36rem;overflow-y:auto}.level-browser__row{width:100%;display:flex;align-items:center;gap:1rem;padding:.9rem 1.2rem;text-align:left;background:transparent;border:.1rem solid #e2e8f0;border-radius:.8rem;cursor:pointer;transition:background .15s ease,border-color .15s ease}.level-browser__row:hover{background:#f8fafc}.level-browser__row--selected{background:#f1f5f9;border-color:#94a3b8}.level-browser__row--accent{border-color:#e9d5ff}.level-browser__row--accent:hover{background:#faf5ff}.level-browser__row--accent.level-browser__row--selected{background:#f3e8ff;border-color:#a78bfa}.level-browser__checkbox{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.8rem;height:1.8rem;color:#fff;background:#fff;border:.1rem solid #cbd5e1;border-radius:.4rem}.level-browser__row--selected .level-browser__checkbox{background:#0f172a;border-color:#0f172a}.level-browser__row--accent.level-browser__row--selected .level-browser__checkbox{background:#6d28d9;border-color:#6d28d9}.level-browser__row-text{display:flex;flex-direction:column;gap:.2rem;min-width:0}.level-browser__row-title{font-size:1.45rem;font-weight:600;color:#0f172a}.level-browser__row-snippet{font-size:1.25rem;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-browser__selected{padding:.4rem .4rem .4rem 1.6rem;border-left:.1rem solid #f1f5f9;max-height:36rem;overflow-y:auto}.level-browser__selected-label{margin-bottom:.8rem;font-size:1.2rem;font-weight:600;color:#94a3b8}.level-browser__selected-empty{font-size:1.3rem;line-height:1.6;color:#cbd5e1}.level-browser__selected-list{list-style:none;display:flex;flex-direction:column;gap:.4rem;counter-reset:selected}.level-browser__selected-item{display:flex;align-items:center;gap:.6rem;padding:.6rem .8rem;background:#f8fafc;border-radius:.6rem;counter-increment:selected}.level-browser__selected-item:before{content:counter(selected);flex-shrink:0;font-size:1.15rem;font-weight:600;color:#94a3b8;min-width:1.6rem;text-align:center}.level-browser__selected-text{flex:1;display:flex;flex-direction:column;min-width:0}.level-browser__selected-title{font-size:1.35rem;font-weight:600;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-browser__selected-group{font-size:1.15rem;color:#94a3b8}.level-browser__selected-group--accent{color:#7c3aed}.level-browser__remove{flex-shrink:0;display:inline-flex;padding:.3rem;color:#94a3b8;background:transparent;border:none;border-radius:.4rem;cursor:pointer}.level-browser__remove:hover{color:#b91c1c;background:#fef2f2}@media(max-width:40em){.level-browser__body{grid-template-columns:1fr}.level-browser__selected{padding-left:.4rem;border-left:none;border-top:.1rem solid #f1f5f9;padding-top:1.2rem}}.publish-dialog__status{padding:2rem 0;font-size:1.4rem;color:#64748b}.publish-dialog__all{font-size:1.3rem;font-weight:600;color:#0f172a;background:transparent;border:none;cursor:pointer;margin-bottom:1rem;padding:.4rem 0}.publish-dialog__all:hover{text-decoration:underline}.publish-dialog__list{list-style:none;display:flex;flex-direction:column;gap:.4rem;max-height:34rem;overflow-y:auto}.publish-dialog__row{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border:.1rem solid #e2e8f0;border-radius:.8rem;cursor:pointer}.publish-dialog__row:hover{background:#f8fafc}.publish-dialog__row input{width:1.7rem;height:1.7rem;accent-color:#0f172a;cursor:pointer}.publish-dialog__row-name{font-size:1.5rem;font-weight:600;color:#0f172a}.publish-dialog__row-code{margin-left:auto;font-size:1.3rem;letter-spacing:.08em;color:#94a3b8;font-family:SF Mono,Menlo,monospace}.publish-dialog__note{font-size:1.2rem;color:#94a3b8}.publish-dialog__actions{display:inline-flex;gap:.8rem}.assignment-composer__settings{display:flex;flex-direction:column;gap:1.6rem;padding:2rem;margin-bottom:2.4rem;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:1.2rem}.assignment-composer__name-input{width:100%;padding:1rem 1.2rem;font-size:1.8rem;font-weight:600;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.8rem;outline:none}.assignment-composer__name-input:focus{border-color:#0f172a}.assignment-composer__name-input::placeholder{color:#94a3b8;font-weight:400}.assignment-composer__field{display:flex;flex-direction:column;gap:.6rem}.assignment-composer__field-label{font-size:1.3rem;font-weight:600;color:#475569}.assignment-composer__mode{display:flex;gap:.8rem}.assignment-composer__mode-btn{flex:1;display:flex;flex-direction:column;gap:.2rem;padding:1rem 1.2rem;text-align:left;background:#fff;border:.15rem solid #e2e8f0;border-radius:.8rem;cursor:pointer;transition:border-color .15s ease}.assignment-composer__mode-btn strong{font-size:1.5rem;color:#0f172a}.assignment-composer__mode-btn em{font-size:1.25rem;font-style:normal;color:#94a3b8}.assignment-composer__mode-btn--active{border-color:#0f172a;background:#f1f5f9}.assignment-composer__select{padding:.9rem 1.2rem;font-size:1.5rem;color:#0f172a;background:#fff;border:.1rem solid #cbd5e1;border-radius:.8rem;outline:none}.assignment-composer__select:focus{border-color:#0f172a}.assignment-composer__items{display:flex;flex-direction:column;gap:1rem}.assignment-composer__items-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.assignment-composer__items-title{font-size:1.7rem;font-weight:700;color:#0f172a}.assignment-composer__items-title span{font-size:1.4rem;font-weight:500;color:#94a3b8;margin-left:.4rem}.assignment-composer__warn-count{font-size:1.3rem;font-weight:600;color:#b45309;background:#fef3c7;padding:.3rem .9rem;border-radius:999px}.assignment-composer__empty{padding:2.4rem;text-align:center;font-size:1.4rem;color:#94a3b8;background:#f8fafc;border:.1rem dashed #cbd5e1;border-radius:.8rem}.assignment-composer__add-actions{display:flex;gap:.8rem;margin-top:.8rem}.assignment-composer__add{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:1.1rem;font-size:1.4rem;font-weight:600;color:#334155;background:#fff;border:.15rem dashed #cbd5e1;border-radius:.8rem;cursor:pointer;transition:border-color .15s ease,background .15s ease}.assignment-composer__add:hover{border-color:#94a3b8;background:#f8fafc}.assignment-composer__footer{display:flex;justify-content:flex-end;gap:.8rem;margin-top:2rem}@media(max-width:40em){.assignment-composer__mode,.assignment-composer__add-actions{flex-direction:column}}.class-detail{max-width:80rem;margin:0 auto;padding:2.4rem 2.4rem 6rem}.class-detail__status{font-size:1.5rem;color:#64748b;padding:2rem 0}.class-detail__back{display:inline-flex;align-items:center;gap:.4rem;font-size:1.4rem;color:#64748b;text-decoration:none;margin-bottom:1.6rem}.class-detail__back:hover{color:#0f172a}.class-detail__header{display:flex;align-items:center;justify-content:space-between;gap:1.6rem;flex-wrap:wrap;margin-bottom:2.4rem}.class-detail__heading{display:flex;align-items:center;gap:1rem}.class-detail__name{font-size:2.8rem;font-weight:800;letter-spacing:-.02em;color:#0f172a}.class-detail__archived-badge{padding:.3rem 1rem;font-size:1.2rem;font-weight:600;color:#64748b;background:#f1f5f9;border:.1rem solid #e2e8f0;border-radius:999px;white-space:nowrap}.class-detail__archived-note{padding:1.2rem 1.4rem;margin-bottom:2rem;font-size:1.35rem;line-height:1.5;color:#64748b;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:.8rem}.class-detail__header-actions{display:flex;align-items:center;gap:1rem}.class-detail__delete.btn{color:#b91c1c}.class-detail__delete.btn:hover{color:#991b1b;background:#fef2f2;text-decoration:none}.class-detail__tabs{display:flex;gap:.4rem;margin-bottom:2.4rem;border-bottom:.1rem solid #e2e8f0}.class-detail__tab{display:inline-flex;align-items:center;gap:.5rem;padding:1rem 1.6rem;margin-bottom:-.1rem;font-size:1.6rem;font-weight:600;color:#94a3b8;background:transparent;border:none;border-bottom:.2rem solid transparent;cursor:pointer;transition:color .15s ease,border-color .15s ease}.class-detail__tab:hover{color:#475569}.class-detail__tab--active{color:#0f172a;border-bottom-color:#0f172a}.class-detail__tab-count{font-size:1.3rem;font-weight:500;color:#cbd5e1}.class-detail__tab--active .class-detail__tab-count{color:#94a3b8}.class-detail__composer{padding:2rem;margin-bottom:2.4rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:1.2rem}.class-detail__composer-title{font-size:1.8rem;font-weight:700;color:#0f172a;margin-bottom:1.6rem}.class-detail__code-box{display:inline-flex;align-items:center;gap:.8rem;padding:.8rem 1.2rem;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:.8rem}.class-detail__code-label{font-size:1.2rem;color:#94a3b8}.class-detail__code{font-size:1.8rem;font-weight:700;letter-spacing:.12em;color:#0f172a;font-family:SF Mono,Menlo,monospace}.class-detail__copy{display:inline-flex;padding:.4rem;color:#64748b;background:transparent;border:none;border-radius:.5rem;cursor:pointer}.class-detail__copy:hover:not(:disabled){background:#e2e8f0;color:#0f172a}.class-detail__copy:disabled{opacity:.4;cursor:default}.class-detail__section{margin-bottom:3.6rem}.class-detail__section-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:1.2rem;margin-bottom:1.4rem}.class-detail__section-head--right{justify-content:flex-end}.class-detail__lock{flex:1;display:flex;align-items:flex-start;gap:1rem;padding:1.2rem 1.4rem;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:.8rem;font-size:1.35rem;line-height:1.5;color:#475569}.class-detail__lock strong{color:#0f172a}.class-detail__lock-note{color:#94a3b8;font-style:normal}.class-detail__empty{padding:2.4rem;text-align:center;font-size:1.4rem;color:#94a3b8;background:#f8fafc;border:.1rem dashed #cbd5e1;border-radius:.8rem}.class-detail__subnote{margin-top:.8rem;font-size:1.3rem;color:#94a3b8}.class-detail__assignments{display:flex;flex-direction:column;gap:.8rem;list-style:none}.class-detail__assignment{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:1.4rem 1.6rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:.8rem;text-decoration:none;transition:border-color .15s ease,background .15s ease}.class-detail__assignment:hover{border-color:#cbd5e1;background:#f8fafc}.class-detail__assignment-title{display:block;font-size:1.6rem;font-weight:600;color:#0f172a}.class-detail__assignment-meta{display:block;margin-top:.3rem;font-size:1.3rem;color:#64748b}.class-detail__assignment-hint{font-size:1.2rem;color:#cbd5e1;white-space:nowrap}@media(max-width:40em){.class-detail{padding:1.6rem 1.6rem 4rem}}.assignment-editor{max-width:76rem;margin:0 auto;padding:2.4rem 2.4rem 8rem}.assignment-editor--gate{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:8rem 2rem;font-size:1.5rem;color:#64748b}.assignment-editor__gate-link{color:#0f172a;font-weight:600}.assignment-editor__header{display:flex;align-items:center;gap:1.2rem;margin-bottom:2.4rem}.assignment-editor__back{display:inline-flex;align-items:center;gap:.4rem;font-size:1.4rem;color:#64748b;text-decoration:none}.assignment-editor__back:hover{color:#0f172a}.assignment-editor__title{flex:1;font-size:2.2rem;font-weight:800;color:#0f172a}@media(max-width:40em){.assignment-editor{padding:1.6rem 1.6rem 6rem}}.assignment-result{max-width:92rem;margin:0 auto;padding:2.4rem 2.4rem 6rem}.assignment-result__status{padding:2rem 0;font-size:1.5rem;color:#64748b}.assignment-result__back{display:inline-flex;align-items:center;gap:.4rem;font-size:1.4rem;color:#64748b;text-decoration:none;margin-bottom:1.6rem}.assignment-result__back:hover{color:#0f172a}.assignment-result__header{display:flex;align-items:center;justify-content:space-between;gap:1.6rem;flex-wrap:wrap;margin-bottom:2rem}.assignment-result__title{font-size:2.6rem;font-weight:800;letter-spacing:-.02em;color:#0f172a}.assignment-result__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-bottom:2.4rem}.assignment-result__stat{display:flex;flex-direction:column;gap:.4rem;padding:1.6rem 2rem;background:#f8fafc;border:.1rem solid #e2e8f0;border-radius:1rem}.assignment-result__stat-value{font-size:2.4rem;font-weight:800;color:#0f172a}.assignment-result__stat-label{font-size:1.3rem;color:#64748b}.assignment-result__table-wrap{overflow-x:auto;border:.1rem solid #e2e8f0;border-radius:1rem}.assignment-result__table{width:100%;border-collapse:collapse;font-size:1.4rem;white-space:nowrap}.assignment-result__table th,.assignment-result__table td{padding:1rem 1.2rem;text-align:left;border-bottom:.1rem solid #f1f5f9}.assignment-result__table th{background:#f8fafc;font-size:1.2rem;font-weight:600;color:#64748b;position:sticky;top:0}.assignment-result__table td{color:#0f172a}.assignment-result__table tbody tr:last-child td{border-bottom:none}.assignment-result__row--absent td{color:#94a3b8;background:#fcfcfd}.assignment-result__flag{display:inline-block;margin-left:.5rem;padding:.1rem .6rem;font-size:1.1rem;font-weight:600;border-radius:999px}.assignment-result__flag--late{color:#b45309;background:#fef3c7}.assignment-result__flag--sus{color:#b91c1c;background:#fee2e2}@media(max-width:40em){.assignment-result__stats{grid-template-columns:1fr}}.join-page{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:2.4rem;background:#f8fafc}.join-page__card{width:100%;max-width:40rem;display:flex;flex-direction:column;gap:1.4rem;padding:3.2rem 2.8rem;background:#fff;border:.1rem solid #e2e8f0;border-radius:1.6rem;box-shadow:0 .8rem 2.4rem #0f172a14}.join-page__status{text-align:center;font-size:1.5rem;color:#64748b}.join-page__error{font-size:1.4rem;color:#dc2626;text-align:center}.join-page__banner{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.join-page__class{font-size:1.4rem;font-weight:700;color:#0f172a;padding:.3rem .9rem;background:#f1f5f9;border-radius:999px}.join-page__meta{font-size:1.3rem;color:#94a3b8}.join-page__title{font-size:2.4rem;font-weight:800;color:#0f172a;line-height:1.3}.join-page__subtitle{font-size:1.4rem;color:#64748b;margin-top:-.6rem}.join-page__label{font-size:1.3rem;font-weight:600;color:#475569;margin-top:.6rem}.join-page__select,.join-page__code-input{width:100%;padding:1.2rem 1.4rem;font-size:1.7rem;color:#0f172a;background:#fff;border:.15rem solid #cbd5e1;border-radius:.9rem;outline:none}.join-page__select:focus,.join-page__code-input:focus{border-color:#0f172a}.join-page__select:disabled,.join-page__code-input:disabled{opacity:.6}.join-page__code-input{text-align:center;letter-spacing:.25em;font-weight:700;text-transform:uppercase;font-family:SF Mono,Menlo,monospace}.join-page--wide{flex-direction:column;align-items:center;justify-content:flex-start;gap:3.2rem;padding:6rem 3.2rem 8rem}.join-page__hero{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}.join-page__prompt{font-size:1.6rem;color:#64748b}.join-page__name-grid{width:100%;max-width:92rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(10.4rem,1fr));gap:1.6rem;justify-items:center}.join-page__name-circle{width:10.4rem;height:10.4rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;padding:.8rem;background:#fff;border:.15rem solid #e2e8f0;border-radius:50%;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease,box-shadow .15s ease}.join-page__name-circle:hover:not(:disabled){border-color:#94a3b8;transform:translateY(-.2rem);box-shadow:0 .4rem 1.2rem #0f172a1a}.join-page__name-circle:disabled{opacity:.6;cursor:default}.join-page__name-circle--selected{background:#0f172a;border-color:#0f172a;box-shadow:0 .4rem 1.4rem #0f172a4d}.join-page__name-circle--taken{opacity:.75;background:#f1f5f9}.join-page__name-circle-taken{font-size:1.05rem;font-weight:600;color:#94a3b8}.join-page__name-circle-num{font-size:1.2rem;font-weight:500;color:#94a3b8}.join-page__name-circle--selected .join-page__name-circle-num{color:#ffffffa6}.join-page__name-circle-name{font-size:1.6rem;font-weight:700;color:#0f172a;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.join-page__name-circle--selected .join-page__name-circle-name{color:#fff}.join-page__name-input{max-width:32rem;text-align:center}.join-page__taken-note{max-width:52rem;margin:0 auto;padding:1rem 1.6rem;font-size:1.3rem;line-height:1.5;color:#92400e;background:#fef3c7;border-radius:.8rem;text-align:center}.join-page__actions{display:flex;justify-content:center}@media(max-width:40em){.join-page--wide{padding:3.2rem 1.6rem 6rem;gap:2.4rem}.join-page__name-grid{grid-template-columns:repeat(auto-fill,minmax(8.8rem,1fr));gap:1.2rem}.join-page__name-circle{width:8.8rem;height:8.8rem}.join-page__name-circle-name{font-size:1.45rem}}.student-play{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.student-play__status{padding:4rem 2rem;text-align:center;font-size:1.5rem;color:#64748b}.student-play__gate{display:flex;flex-direction:column;align-items:center;gap:1.2rem;padding:8rem 2rem;font-size:1.5rem;color:#475569}.student-play__evicted-title{font-size:1.8rem;font-weight:700;color:#0f172a}.student-play__evicted-desc{max-width:44rem;text-align:center;line-height:1.6;font-size:1.4rem}.student-play__banner{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:1.2rem 2rem;background:#0f172a;color:#fff;flex-shrink:0}.student-play__banner-info{display:flex;align-items:center;gap:1rem;min-width:0}.student-play__banner-class{font-size:1.6rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-play__banner-progress{flex-shrink:0;font-size:1.4rem;font-weight:600;color:#cbd5e1;padding:.2rem .9rem;background:#ffffff1f;border-radius:999px}.student-play__banner-actions{display:flex;align-items:center;gap:.8rem;flex-shrink:0}.student-play__settings{height:auto}.student-play__settings-btn{display:inline-flex;align-items:center;justify-content:center;padding:.6rem;color:#cbd5e1;background:transparent;border:.1rem solid rgba(255,255,255,.25);border-radius:.6rem;cursor:pointer}.student-play__settings-btn:hover{background:#ffffff1a;color:#fff}.student-play__settings-content{right:0;left:auto;min-width:26rem;padding:1.4rem 1.6rem;color:#0f172a}.student-play__leave{flex-shrink:0;font-size:1.3rem;color:#cbd5e1;background:transparent;border:.1rem solid rgba(255,255,255,.25);border-radius:.6rem;padding:.5rem 1rem;cursor:pointer}.student-play__leave:hover{background:#ffffff1a;color:#fff}.student-play__board{flex:1;min-height:0}.student-play__submitting{text-align:center;font-size:1.3rem;color:#64748b;padding:.8rem}.student-play__done{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;padding:4rem 2rem;text-align:center}.student-play__done-check{display:flex;align-items:center;justify-content:center;width:8rem;height:8rem;font-size:4rem;color:#fff;background:#16a34a;border-radius:999px}.student-play__done-title{font-size:2.6rem;font-weight:800;color:#0f172a}.student-play__done-desc{font-size:1.5rem;color:#64748b;margin-bottom:1rem}.content-page{max-width:72rem;margin:0 auto;padding:2.4rem 2rem 2rem;color:#334155;line-height:1.75}.content-page__header{display:flex;align-items:center;gap:1rem;margin-bottom:2.4rem}.content-page__back-link{display:inline-flex;align-items:center;color:#64748b;transition:color .15s}.content-page__back-link:hover{color:#0f172a}.content-page__title{font-size:2.4rem;font-weight:700;color:#0f172a;margin:0}.content-page__intro{font-size:1.4rem;color:#475569;margin:0 0 2.4rem}.content-page__section{margin-bottom:2.8rem}.content-page__section h2{font-size:1.7rem;font-weight:600;color:#0f172a;margin:0 0 1rem}.content-page__section h3{font-size:1.45rem;font-weight:600;color:#0f172a;margin:1.6rem 0 .6rem}.content-page__section p{font-size:1.4rem;margin:0 0 .8rem}.content-page__section ul,.content-page__section ol{margin:0 0 .8rem;padding-left:1.8rem}.content-page__section ul li,.content-page__section ol li{font-size:1.4rem;margin-bottom:.4rem}.content-page__section a{color:#2563eb;text-decoration:underline;text-underline-offset:.2rem}.content-page__section a:hover{color:#1d4ed8}.content-page__section strong{color:#0f172a;font-weight:600}.content-page__table{width:100%;border-collapse:collapse;margin:1.2rem 0;font-size:1.3rem}.content-page__table th,.content-page__table td{border:1px solid #e2e8f0;padding:.8rem 1rem;text-align:left;vertical-align:top}.content-page__table th{background:#f8fafc;font-weight:600;color:#0f172a;white-space:nowrap}.content-page__note{font-size:1.3rem;color:#64748b;background:#f8fafc;border-left:.3rem solid #cbd5e1;padding:.8rem 1.2rem;border-radius:.4rem;margin:1rem 0}.content-page__date{font-size:1.3rem;color:#94a3b8;margin-top:3.2rem;padding-top:1.6rem;border-top:1px solid #e2e8f0}.content-page__cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1.2rem;margin:1.6rem 0}.content-page__card{display:block;border:1px solid #e2e8f0;border-radius:.6rem;padding:1.4rem 1.6rem;text-decoration:none;transition:border-color .15s,box-shadow .15s}.content-page__card:hover{border-color:#cbd5e1;box-shadow:0 .4rem 1.2rem #0f172a0f}.content-page__card-title{font-size:1.5rem;font-weight:600;color:#0f172a;margin:0 0 .4rem}.content-page__card-desc{font-size:1.3rem;color:#64748b;margin:0}.content-page__cta{margin-top:.8rem}.content-page__keys{display:flex;flex-wrap:wrap;gap:.4rem;margin:1.2rem 0}.content-page__key{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:3.2rem;padding:.6rem .4rem;border:1px solid #e2e8f0;border-radius:.5rem;background:#f8fafc;font-size:1.3rem;line-height:1.3}.content-page__key--home{border-color:#2563eb;background:#eff6ff;color:#1d4ed8;font-weight:600}.content-page__key small{font-size:1rem;color:#94a3b8}.content-page__deflist{margin:1.2rem 0}.content-page__deflist dt{font-size:1.4rem;font-weight:600;color:#0f172a;margin-top:1rem}.content-page__deflist dd{font-size:1.4rem;margin:.2rem 0 0;color:#475569}
