:root{--ink:#243c34;--muted:#64776f;--green:#235e4a;--soft:#eaf3eb;--line:#dce4d9;--paper:#fffdf8;--cream:#f5f5ed;--gold:#f0c869;--error:#a94029;font-family:ui-rounded,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ad6820;outline-offset:4px}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:var(--green)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.75rem,3.3vw,2.8rem);line-height:1.3;letter-spacing:-.05em;margin-bottom:14px}h2{font-size:1.32rem;letter-spacing:-.025em}h3{font-size:1.1rem}p{line-height:1.7}small,.small{font-size:.84rem;line-height:1.6}.muted{color:var(--muted)}.eyebrow{font-size:.75rem;font-weight:800;letter-spacing:.13em;color:var(--green);margin-bottom:16px}.skip{position:fixed;left:15px;top:-100px;background:white;padding:10px;z-index:20}.skip:focus{top:12px}header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{max-width:1180px;margin:auto;display:flex;align-items:center;gap:24px;padding:18px 30px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:850;font-size:1.06rem;text-decoration:none;white-space:nowrap}.brand-icon{background:var(--green);color:white;border-radius:14px;padding:9px;font-size:1.1rem}.header-nav{display:flex;gap:8px;align-items:center;margin-left:auto}.nav-link{padding:10px 14px;background:none;border:0;border-radius:12px;color:var(--ink);font-size:.9rem;text-decoration:none}.nav-link:hover,.nav-link.current{background:var(--soft)}.demo-pill,.badge{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:700;border-radius:20px;padding:6px 10px;background:var(--soft);color:var(--green);white-space:nowrap}.demo-pill{background:#fff0c9;color:#725123}.badge.pending{background:#fff0c9;color:#77500e}.badge.done{background:#dceee0;color:#235e4a}.badge.gray{background:#eff0eb;color:#637069}.connection{max-width:1120px;margin:0 auto;font-size:.83rem;line-height:1.7;padding:0 10px}.connection:not(:empty){margin-top:12px;padding:10px 16px;border:1px solid #e3cba2;border-radius:12px;background:#fff3d9}main{max-width:1180px;margin:auto;padding:42px 30px 80px;min-height:70vh}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border:1px solid var(--green);border-radius:13px;padding:12px 21px;background:var(--green);color:white;font-weight:700;text-decoration:none;line-height:1.3}.button:hover{filter:brightness(.96)}.button.secondary{background:var(--paper);color:var(--green);border-color:var(--line)}.button.ghost{background:transparent;color:var(--green);border-color:transparent}.button.danger{background:#a94029;border-color:#a94029}.button.small{font-size:.85rem;min-height:40px;padding:9px 14px}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 3px 0 #263c3403}.hero{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;margin-bottom:28px}.hero p{margin-bottom:0;max-width:640px}.hero-art{font-size:4rem;border-radius:50%;background:#e4eddd;width:132px;height:132px;display:grid;place-items:center;border:10px solid #edf1e7}.intro{max-width:760px;margin:25px auto}.intro .card{padding:36px}.intro .intro-mark{font-size:2rem;margin-bottom:24px}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.stack{display:grid;gap:20px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.profiles{grid-template-columns:repeat(2,minmax(0,1fr));max-width:820px}.profile{padding:30px;text-align:left;display:block;color:var(--ink);text-decoration:none;transition:transform .15s,border-color .15s}.profile:hover{transform:translateY(-3px);border-color:#84a68e}.profile .avatar{font-size:2.5rem;background:var(--soft);border-radius:20px;width:80px;height:80px;display:grid;place-items:center;margin-bottom:24px}.profile h2{font-size:1.7rem}.profile-footer{display:flex;justify-content:space-between;align-items:center;color:var(--green);font-weight:700}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:26px}.section-top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:4px 0 18px}.section-top h2{margin:0}.days{display:flex;gap:8px;overflow:auto;padding:4px 2px 14px;margin-bottom:6px}.day{border:1px solid var(--line);background:var(--paper);border-radius:13px;min-width:65px;min-height:44px;color:var(--muted)}.day.selected{background:var(--green);border-color:var(--green);color:white}.activity-list{display:grid;gap:14px}.activity-card{display:grid;grid-template-columns:60px minmax(0,1fr) auto;gap:18px;align-items:center;padding:22px}.subject-icon{width:58px;height:58px;border-radius:17px;font-size:1.65rem;display:grid;place-items:center;background:var(--soft)}.subject-icon.math{background:#faebd4}.subject-icon.korean{background:#e3ecef}.subject-icon.english{background:#ece6f3}.subject-icon.puzzle{background:#f4e3db}.activity-card h3{margin:8px 0 6px}.activity-card p{font-size:.88rem;margin:0}.side-card{padding:22px}.side-card .big-number{font-size:2.4rem;font-weight:800;letter-spacing:-.06em;margin:14px 0}.side-card p:last-child{margin-bottom:0}.journey{display:flex;align-items:center;gap:8px;margin:16px 0}.journey span{width:34px;height:34px;border-radius:50%;background:var(--soft);display:grid;place-items:center}.journey span.filled{background:var(--green);color:white}.empty{text-align:center;padding:36px 24px;color:var(--muted)}.notice{padding:15px 18px;background:#edf3e8;border-radius:13px;line-height:1.7;font-size:.9rem}.notice.warn{background:#fff0d5}.notice.error{background:#fae7df;color:#853e2a}.parent-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 26px;border-bottom:1px solid var(--line);padding-bottom:12px}.parent-tabs a{border-radius:10px;padding:11px 16px;text-decoration:none;color:var(--muted)}.parent-tabs a.current{background:var(--green);color:white}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:flex;flex-direction:column;gap:8px;font-size:.9rem;font-weight:650}.field input,.field select,.field textarea,input[type=password]{width:100%;border:1px solid #cbd6ca;background:white;border-radius:10px;min-height:45px;padding:10px 12px;color:var(--ink)}.field textarea{min-height:120px;resize:vertical}.field small{font-weight:400;color:var(--muted)}form .actions{margin-top:20px}.row{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}.divider{height:1px;background:var(--line);margin:20px 0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.86rem}th,td{padding:14px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.78rem;color:var(--muted)}td small{display:block}.review-list{display:grid;gap:12px}.review-row{padding:18px 20px;display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center}.review-row h3{margin:6px 0}.checklist{display:grid;gap:12px;line-height:1.6;font-size:.92rem;margin:20px 0}.checklist label{display:flex;gap:10px;align-items:flex-start}.checklist input{width:20px;height:20px;flex-shrink:0}.preview-body{padding:20px;background:var(--cream);border-radius:14px;line-height:1.9}.preview-body p{margin-bottom:10px}.question-review{border-top:1px solid var(--line);padding:16px 0}.question-review strong{display:block;margin-bottom:8px}.question-review p{font-size:.9rem;margin:5px 0}.mono{font-family:ui-monospace,monospace;font-size:.85rem}details>summary{cursor:pointer;font-weight:700;padding:12px 0}.sticker-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.sticker{min-height:130px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;text-align:center}.sticker .art{font-size:2.4rem}.sticker.unclaimed{background:#fff4ce;border-style:dashed}.sticker button{width:100%}.loading{padding:80px;text-align:center;color:var(--muted)}.footer-note{font-size:.8rem;color:var(--muted);text-align:center;margin-top:35px;line-height:1.7}.full-span{grid-column:1/-1}.space-top{margin-top:22px}#toast{position:fixed;z-index:40;left:50%;bottom:24px;transform:translateX(-50%);background:#233e34;color:white;padding:14px 22px;border-radius:14px;box-shadow:0 6px 30px #0002;max-width:min(90vw,600px);font-size:.9rem}dialog{border:1px solid var(--line);border-radius:24px;max-width:800px;width:calc(100vw - 32px);max-height:90vh;overflow:auto;padding:28px;color:var(--ink);background:var(--paper);box-shadow:0 20px 100px #0003}dialog::backdrop{background:#172d2466}dialog .dialog-header{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px}dialog h2{margin:0}dialog .dialog-error{color:var(--error);margin:12px 0;line-height:1.6}.nowrap{white-space:nowrap}.sync-action{font-size:.8rem;margin-left:10px}.pending-line{color:#76550f;font-size:.8rem}
@media(max-width:800px){main{padding:30px 20px 65px}.header-inner{padding:14px 20px;gap:12px}.home-grid{grid-template-columns:1fr}.home-aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-art{width:100px;height:100px;font-size:3rem}.header-nav{gap:0}.nav-link{padding:10px}.sticker-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){main{padding:25px 16px 56px}.header-inner{padding:12px 16px;flex-wrap:wrap;gap:6px}.brand{font-size:.97rem}.brand-icon{padding:7px;border-radius:10px}.header-nav{font-size:.8rem}.header-nav .nav-link{font-size:.8rem;padding:9px 8px}.demo-pill{font-size:.68rem;padding:4px 7px}.hero{grid-template-columns:1fr;gap:12px;margin-bottom:22px}.hero-art{display:none}h1{font-size:1.85rem}.hero p{font-size:.92rem}.profiles,.intro-grid,.form-grid{grid-template-columns:1fr}.profile{padding:24px}.profile .avatar{width:60px;height:60px;font-size:2rem;margin-bottom:18px}.profile h2{font-size:1.45rem}.activity-card{grid-template-columns:44px minmax(0,1fr);padding:18px;gap:12px}.subject-icon{width:44px;height:44px;border-radius:13px;font-size:1.4rem}.activity-card>.button{grid-column:1/-1;width:100%;margin-top:2px}.activity-card h3{font-size:1.08rem}.home-aside{grid-template-columns:1fr}.card{border-radius:18px}.review-row{grid-template-columns:1fr;gap:8px}.review-row .actions{justify-content:flex-end}.sticker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intro .card{padding:25px}.day{min-width:55px}.parent-tabs{gap:3px}.parent-tabs a{padding:10px;font-size:.85rem}dialog{padding:22px}.grid{grid-template-columns:1fr}.section-top{align-items:flex-start}.small-mobile{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* 자료실은 읽을 내용과 선택 도구를 작은 화면에서도 나란히 밀어내지 않는다. */
.library-card{display:grid;gap:16px}.library-card h3{margin:12px 0 8px}.library-card p{margin-bottom:8px}.library-choice{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 10px}.library-choice input{width:20px;height:20px;accent-color:var(--green)}.library-selection{padding:14px;background:var(--soft);border-radius:14px}.preview-body,.question-review,.notice{overflow-wrap:anywhere}.parent-tabs{flex-wrap:wrap}
@media(max-width:520px){.library-selection>.button{flex:1 1 auto}.library-card{padding:18px}.library-card>.actions>.button{flex:1 1 auto}}
/* 펫 방: 모바일에서도 친구와 조작을 먼저 보여 준다. */
.gem-badge{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border-radius:14px;background:#efe8fa;color:#68449a;font-weight:800;font-size:.94rem;white-space:nowrap}.gem-badge>span{color:#9469c6;font-size:1.25rem}.pet-home-card{display:flex;gap:12px;align-items:center;padding:18px;flex-wrap:wrap}.pet-home-card .eyebrow{font-size:.7rem;margin-bottom:8px;display:block}.pet-home-card h2{margin:0 0 9px;font-size:1.05rem;overflow-wrap:anywhere}.pet-home-card .actions{margin-top:12px}.pet-mini{width:75px;flex-shrink:0}.pet-art{display:block;width:100%;height:auto}.pet-page-top{margin-bottom:16px}.pet-page-top h1{max-width:760px;overflow-wrap:anywhere}.pet-nav{margin-bottom:24px}.pet-adoption{margin-top:24px}.pet-species-field{border:0;padding:0;margin:24px 0 0;min-width:0}.pet-species-field legend{font-weight:700;margin-bottom:12px}.pet-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.pet-choice{cursor:pointer;position:relative;display:block;min-width:0}.pet-choice input{position:absolute;top:10px;left:10px;width:18px;height:18px;z-index:1;accent-color:var(--green)}.pet-choice>span{display:flex;flex-direction:column;align-items:center;padding:14px 8px 10px;border:2px solid var(--line);border-radius:18px;background:#f8f7f0}.pet-choice input:checked+span{border-color:var(--green);background:#eaf3eb}.pet-choice input:focus-visible+span{outline:3px solid #ad6820;outline-offset:3px}.pet-choice .pet-art{max-width:140px}.pet-selected{font-size:.8rem;height:22px;margin-top:6px;visibility:hidden}.pet-choice input:checked+span .pet-selected{visibility:visible}.pet-room-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start}.pet-room{overflow:hidden;padding:20px}.pet-room-scene{height:340px;position:relative;background:linear-gradient(#e7eef2 0%,#e7eef2 70%,#e1ceb4 70%,#eee0ca 100%);border-radius:18px;overflow:hidden}.pet-character{position:absolute;width:230px;bottom:17px;left:50%;transform:translateX(-50%);z-index:3}.pet-window{position:absolute;border:8px solid #fffdf5;box-shadow:0 2px 0 #cbdcd9;width:85px;height:96px;border-radius:40px 40px 7px 7px;background:#c3deec;top:30px;right:22px;font-size:3.5rem;text-align:center;color:white}.pet-room-caption{text-align:center;padding-top:22px}.pet-room-caption h2{overflow-wrap:anywhere;margin-bottom:8px}.pet-room-caption p{margin-bottom:8px}.pet-care-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pet-care{padding:14px 5px;display:flex;flex-direction:column;gap:8px;min-width:0}.pet-care>span{font-size:1.65rem}.pet-care strong{font-size:.86rem}.pet-care small{font-size:.8rem}.pet-shop-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.pet-shop-item{text-align:center;padding:24px 15px}.pet-shop-item h2{font-size:1.2rem}.pet-shop-item .button{width:100%;padding:12px 8px}.pet-item-art{font-size:3.3rem;border-radius:22px;background:#f3efdf;display:grid;place-items:center;min-height:120px;margin-bottom:20px}.pet-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.pet-summary-grid .notice>p{margin:12px 0}.pet-bed{position:absolute;bottom:22px;left:calc(50% - 120px);width:240px;height:65px;border-radius:50%;background:#b795ac;border:9px solid #d3b9ca;z-index:2}.pet-house{position:absolute;bottom:60px;left:13px;font-size:12rem;color:#b27f56;line-height:1;z-index:1}.pet-ball{position:absolute;bottom:23px;right:25px;width:40px;height:40px;border-radius:50%;background:linear-gradient(50deg,#f2cc6e 50%,#7eaabd 50%);color:transparent;z-index:4}.pet-shop-item .small{margin-top:14px;margin-bottom:0}.pet-adoption .field{max-width:400px}
@media(max-width:900px){.pet-choices{grid-template-columns:repeat(3,minmax(0,1fr))}.pet-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pet-room-grid{grid-template-columns:1fr}.pet-home-card{flex-wrap:nowrap}.pet-room-scene{height:320px}}
@media(max-width:520px){.pet-page-top{align-items:flex-start}.pet-page-top h1{font-size:1.65rem}.pet-nav .button{font-size:.82rem;padding:10px 12px}.pet-choices{gap:8px}.pet-choice>span{padding:14px 5px 8px}.pet-choice strong{font-size:.9rem}.pet-choice input{top:6px;left:6px}.pet-selected{font-size:.7rem}.pet-room{padding:14px}.pet-room-scene{height:285px}.pet-character{width:205px;bottom:12px}.pet-care-grid{gap:8px}.pet-room-grid>.stack>.card{padding:18px}.pet-shop-grid{gap:12px}.pet-shop-item{padding:16px 10px}.pet-item-art{min-height:95px;font-size:2.7rem}.pet-shop-item h2{font-size:1.07rem}.pet-summary-grid{grid-template-columns:1fr}.pet-shop-item .button{font-size:.8rem}.pet-page-top .gem-badge{font-size:.85rem}}
/* 돌봄은 서버가 저장을 확인한 직후 한 번만 반응한다. */
.pet-reaction{position:absolute;inset:0;pointer-events:none;z-index:5}.pet-reaction span{position:absolute;opacity:0;animation:pet-spark 2.8s ease-out 1 both;font-size:2rem;left:24%;top:45%}.pet-reaction span:nth-child(2){left:74%;top:33%;font-size:1.5rem;animation-delay:.15s;color:#b68949}.pet-reaction span:nth-child(3){left:68%;top:50%;animation-delay:.3s;color:#a26396}.pet-celebrating .pet-art{animation:pet-hello 2.6s ease-in-out 1}.pet-celebrating[data-pet-celebration="feed"] .pet-art,.pet-celebrating[data-pet-celebration="treat"] .pet-art{animation:pet-nibble 2.6s ease-in-out 1}.pet-celebrating[data-pet-celebration="walk"] .pet-character{animation:pet-walk 2.8s ease-in-out 1}.pet-park{position:absolute;inset:0;z-index:2;background:linear-gradient(#d4eae8 0%,#d4eae8 65%,#d9e4bc 65%);border-radius:18px;animation:pet-park-fade 3.2s ease 1 forwards}.pet-park span{position:absolute;font-size:4rem;right:15px;top:70px}.pet-park span:first-child{font-size:2.4rem;left:24px;top:18px;color:#be943e}.pet-park span:nth-child(3){left:12px;top:auto;bottom:22px;font-size:2.3rem}.pet-park span:last-child{font-size:1.9rem;top:auto;bottom:16px;right:22px}.pet-celebrating[data-pet-celebration="walk"] .pet-character{z-index:3}
@keyframes pet-hello{0%,100%{transform:translateY(0) rotate(0)}20%,60%{transform:translateY(-10px) rotate(-4deg)}40%,80%{transform:translateY(-4px) rotate(4deg)}}
@keyframes pet-nibble{0%,100%{transform:rotate(0)}20%,60%{transform:translateY(4px) rotate(4deg)}40%,80%{transform:rotate(-3deg)}}
@keyframes pet-walk{0%,100%{transform:translateX(-50%)}25%{transform:translateX(-62%) translateY(-5px)}50%{transform:translateX(-45%)}75%{transform:translateX(-37%) translateY(-5px)}}
@keyframes pet-spark{0%{opacity:0;transform:translateY(15px) scale(.6)}20%,65%{opacity:1}100%{opacity:0;transform:translateY(-65px) scale(1.1)}}
@keyframes pet-park-fade{0%,85%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.pet-celebrating .pet-art,.pet-celebrating .pet-character,.pet-park,.pet-reaction span{animation:none!important}.pet-reaction span{opacity:1}.pet-park{opacity:1}}

/* 제목이 길어져도 닫기 버튼은 한 줄로 유지한다. */
dialog .dialog-header>.button{flex-shrink:0;white-space:nowrap}

/* 외부 강의는 과제·완료 요청을 먼저 배치하며 실제 시청률과 구분한다. */
.ebs-home .activity-list{margin-top:14px}.ebs-study h2{margin:15px 0 10px}.ebs-lesson{margin-top:18px;padding:20px;border-radius:16px;background:var(--soft)}.ebs-lesson .actions{margin-top:18px}.ebs-weekdays{border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;gap:10px;flex-wrap:wrap}.ebs-weekdays legend{font-weight:700;padding:0 5px}.ebs-weekdays label{display:flex;align-items:center;gap:6px;min-height:44px;padding:6px}.ebs-weekdays input{width:20px;height:20px;accent-color:var(--green)}.ebs-history{list-style:none;padding:0}.ebs-history li{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.ebs-history strong{flex:1;min-width:140px}.ebs-study,.ebs-study p{overflow-wrap:anywhere}#ebs-course-form textarea{max-width:100%}@media(max-width:620px){.ebs-study{padding:18px}.ebs-lesson{padding:15px}.ebs-lesson .actions{flex-direction:column;align-items:stretch}.ebs-lesson .actions>.button{width:100%;text-align:center}.ebs-weekdays{gap:3px}.ebs-home .section-top{flex-wrap:wrap}}
.ebs-parent-note{white-space:pre-line;flex-basis:100%;margin:4px 0}.ebs-help summary{cursor:pointer;min-height:28px}.ebs-help p{margin:12px 0 0}@media(max-width:620px){.ebs-study .row{gap:8px}.ebs-help{padding:12px 14px}.ebs-study h2{font-size:1.25rem}}
