/* ==========================================================================
   좋은나무 공통 그림 부품 (1.5.15) — 홈 첫 화면과 같은 그림 언어
   서브페이지: 자동 넘김 없음. 화면에 들어오면 한 번 그려지고 멈춥니다(.is-on).
   ========================================================================== */
.gp-fig{--navy:#1A2B5E;--navy-dk:#0F1A3D;--apr:#E8B4A0;--apr-lt:#FCEBE3;--gold:#C9A961;--gold-dk:#9C8244;--ink-gold:#7A6230;--cream:#FFF8F0;--muted:#5A6480;--line:#EDE5D8;
 --ease:cubic-bezier(.2,.7,.2,1);position:relative;margin:0;padding:0;font-family:var(--gt-sans,"Noto Sans KR",sans-serif);word-break:keep-all;color:var(--navy)}
.gp-fig *{box-sizing:border-box}
.gp-fig ul,.gp-fig ol{list-style:none;margin:0;padding:0}
.gp-fig li{margin:0;padding:0}
.gp-fig a{color:inherit;text-decoration:none}
.gp-fig .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- 궤도 (숫자 없이 — 1.5.23) ---------- */
.gp-orbit{width:100%;max-width:560px;aspect-ratio:760/640;margin:0 auto}
.gp-orbit svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.gp-orbit .gp-disc{fill:#FFF8F0}
.gp-orbit .is-lit .gp-disc{fill:#FCEBE3;stroke:#9C8244}
.gp-orbit .is-dim{opacity:.38}
.gp-orbit .is-dim .gp-disc{stroke-dasharray:3 5}
.gp-core-l{position:absolute;left:50%;top:51.56%;transform:translate(-50%,-50%);text-align:center;color:#FFF8F0;font-family:var(--gt-serif,"Noto Serif KR",serif);font-weight:600;white-space:nowrap;font-size:clamp(15px,2.6vw,24px);line-height:1.15;white-space:nowrap}
.gp-core-l small{display:block;font-size:1.05em;color:var(--gold)}
.gp-plus5{position:absolute;left:19%;top:12%;transform:translate(-50%,-50%);font-family:var(--gt-serif,"Noto Serif KR",serif);font-weight:600;font-size:14px;color:var(--gold-dk);white-space:nowrap}
.gp-plus5 b{font-size:20px;margin-right:2px}
.gp-orbit li{position:absolute;white-space:nowrap}
.gp-orbit li b{display:block;font-size:14.5px;font-weight:500;color:var(--navy)}
.gp-orbit li span{display:block;font-size:12px;color:var(--muted);margin-top:1px}
.gp-orbit li.is-dim{opacity:.5}
.gp-orbit li.is-lit b{color:var(--navy-dk);font-weight:700}
.gp-orbit li a:hover b,.gp-orbit li a:focus-visible b{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--gold)}
.gp-orbit li:nth-child(1){left:50%;top:10%;transform:translate(-50%,-100%);text-align:center}
.gp-orbit li:nth-child(2){left:84.5%;top:41.4%;transform:translate(0,-50%)}
.gp-orbit li:nth-child(3){left:66.2%;top:87.2%;transform:translate(-50%,0);text-align:center}
.gp-orbit li:nth-child(4){left:33.8%;top:87.2%;transform:translate(-50%,0);text-align:center}
.gp-orbit li:nth-child(5){left:15.5%;top:41.4%;transform:translate(-100%,-50%);text-align:right}
.gp-m-core .gp-sat{opacity:.28}.gp-m-core .gp-spokes{opacity:.5}
/* 그려지는 순서 (한 번) */
html.gp-js .gp-orbit .gp-ring,html.gp-js .gp-orbit .gp-live path,html.gp-js .gp-orbit .gp-ico path,html.gp-js .gp-orbit .gp-ico rect,html.gp-js .gp-orbit .gp-ico circle[pathLength]{stroke-dasharray:1;stroke-dashoffset:1}
html.gp-js .gp-orbit .gp-core,html.gp-js .gp-orbit .gp-sat>*{transform-box:fill-box;transform-origin:center}
html.gp-js .gp-orbit .gp-core,html.gp-js .gp-orbit .gp-core-l,html.gp-js .gp-orbit .gp-plus5,html.gp-js .gp-orbit li,html.gp-js .gp-orbit .gp-spokes,html.gp-js .gp-orbit .gp-sat{opacity:0}
.gp-orbit.is-on .gp-core{animation:gpPop .7s var(--ease) forwards}
.gp-orbit.is-on .gp-core-l{animation:gpFade .6s .35s forwards}
.gp-orbit.is-on .gp-ring{animation:gpDraw 1.3s cubic-bezier(.65,0,.35,1) .3s forwards}
.gp-orbit.is-on .gp-sat{animation:gpFade .5s calc(.7s + var(--i)*.12s) forwards}
.gp-orbit.is-on .gp-sat.is-dim{animation:gpFadeDim .5s calc(.7s + var(--i)*.12s) forwards}
.gp-orbit.is-on .gp-ico *{animation:gpDraw .8s cubic-bezier(.65,0,.35,1) calc(.9s + var(--i)*.12s) forwards}
.gp-orbit.is-on li{animation:gpFade .5s calc(1.1s + var(--i)*.12s) forwards}
.gp-orbit.is-on li.is-dim{animation:gpFadeHalf .5s calc(1.1s + var(--i)*.12s) forwards}
.gp-orbit.is-on .gp-spokes{animation:gpFade .6s 1.5s forwards}
.gp-orbit.is-on .gp-plus5{animation:gpFade .6s 1.7s forwards}
.gp-orbit.is-on .gp-live path{animation:gpDraw .6s cubic-bezier(.65,0,.35,1) calc(1.8s + var(--i)*.15s) forwards}
.gp-m-core.is-on .gp-sat{animation:gpFadeCore .5s .7s forwards}
@keyframes gpPop{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:none}}
@keyframes gpFade{to{opacity:1}}
@keyframes gpFadeDim{to{opacity:.38}}
@keyframes gpFadeHalf{to{opacity:.5}}
@keyframes gpFadeCore{to{opacity:.28}}
@keyframes gpDraw{to{stroke-dashoffset:0}}

/* ---------- 타임라인 ---------- */
.gp-tl{width:100%;max-width:620px;margin:0 auto;padding:18px 0 0;min-height:150px}
.gp-tl-line{position:absolute;left:4%;right:4%;top:33px;height:1.5px;background:linear-gradient(90deg,var(--gold) 86%,rgba(201,169,97,0));transform-origin:left center}
.gp-tl ol{position:relative;height:130px}
.gp-tl li{position:absolute;left:var(--x);top:0;transform:translateX(-50%);text-align:center;width:calc(88% / (var(--n) - 1) - 4px);min-width:64px;white-space:normal}
.gp-tl li i{display:block;width:16px;height:16px;margin:8px auto 14px;border-radius:50%;background:#FFF8F0;border:1.5px solid var(--gold-dk)}
.gp-tl li.is-first i{background:var(--navy);border-color:var(--navy)}
.gp-tl li.is-last i{box-shadow:inset 0 0 0 4px #FFF8F0;background:var(--gold-dk)}
.gp-tl li b{display:block;font-size:14.5px;font-weight:600;color:var(--navy);line-height:1.35}
.gp-tl li span{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}
.gp-tl li.is-first,.gp-tl li.is-last{width:calc(88% / (var(--n) - 1) / 2 + 22px);min-width:56px}
.gp-tl li.is-first{transform:translateX(-8px);text-align:left}
.gp-tl li.is-first i{margin-left:0}
.gp-tl li.is-last{transform:translateX(calc(-100% + 8px));text-align:right}
.gp-tl li.is-last i{margin-right:0}
html.gp-js .gp-tl .gp-tl-line{transform:scaleX(0)}
html.gp-js .gp-tl li{opacity:0}
html.gp-js .gp-tl.is-on .gp-tl-line{transform:none;transition:transform 1.4s cubic-bezier(.65,0,.35,1) .2s}
.gp-tl.is-on li{animation:gpFade .5s calc(.35s + var(--i)*1.2s / var(--n)) forwards}

/* ---------- 정물 (교재 · 연구노트 · 영상) ---------- */
.gp-still{width:100%;max-width:520px;aspect-ratio:520/420;margin:0 auto}
.gp-still>*{position:absolute}
.gp-sheet{width:34%;aspect-ratio:724/1024;background:#fff;border:1px solid var(--line);border-radius:3px;box-shadow:0 24px 40px -24px rgba(15,26,61,.30),0 2px 4px rgba(15,26,61,.05);overflow:hidden}
.gp-sheet img{width:100%;height:100%;object-fit:cover;display:block;margin:0}
.gp-still .s1{left:22%;top:4%;--r:-7deg}.gp-still .s2{left:46%;top:8%;--r:5deg}.gp-still .s3{left:34%;top:14%;--r:-1.5deg;overflow:visible}
.gp-still .s3 img{border-radius:3px}
.gp-still .s3::before{content:"";position:absolute;top:-10px;left:50%;width:34%;height:20px;transform:translateX(-50%) rotate(-3deg);background:rgba(232,180,160,.55);border-radius:2px;z-index:2}
.gp-note{left:2%;top:46%;width:48%;padding:0 16px 4px 34px;--r:2.5deg;border-radius:4px;border:1px solid var(--line);background:linear-gradient(90deg,transparent 23px,#E8B4A0 23px,#E8B4A0 24px,transparent 24px),repeating-linear-gradient(180deg,#FFFEFC 0 25px,#EFE4D2 25px 26px);box-shadow:0 24px 40px -24px rgba(15,26,61,.3)}
.gp-note b{display:block;font-family:var(--gt-serif,"Noto Serif KR",serif);font-weight:600;font-size:15px;color:var(--navy-dk);line-height:26px}
.gp-note span{display:block;font-size:13px;line-height:26px;color:#5A6480;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gp-vid{left:52%;top:52%;width:44%;--r:-2deg;background:#fff;border-radius:6px;padding:7px 7px 11px;border:1px solid var(--line);box-shadow:0 24px 40px -24px rgba(15,26,61,.3)}
.gp-vid .scr{aspect-ratio:16/9;border-radius:3px;background:radial-gradient(circle at 100% 0,rgba(201,169,97,.35),transparent 55%),#1A2B5E;display:grid;place-items:center}
.gp-vid .scr svg{width:36px;height:36px}
.gp-vid b{display:block;font-size:13px;font-weight:500;color:var(--navy-dk);margin:8px 4px 2px}
.gp-vid span{display:block;font-size:12px;color:var(--muted);margin:0 4px}
.gp-m-research .gp-note{left:6%;top:40%;width:56%}
.gp-m-research .s1{left:40%;top:2%}.gp-m-research .s2{left:60%;top:8%}.gp-m-research .s3{left:50%;top:14%}
.gp-m-media .gp-note{left:2%;top:8%;width:50%}.gp-m-media .gp-vid{left:47%;top:50%;width:50%}
.gp-still>*{transform:rotate(var(--r,0deg))}
html.gp-js .gp-still>*{opacity:0;transform:translateY(14px) rotate(calc(var(--r,0deg) + 2deg))}
html.gp-js .gp-still.is-on>*{opacity:1;transform:rotate(var(--r,0deg));transition:opacity .7s var(--ease) calc(.2s + var(--o)*.11s),transform .7s var(--ease) calc(.2s + var(--o)*.11s)}

/* ---------- 일주일 (부모교육) ---------- */
.gp-week{width:100%;max-width:460px;margin:0 auto}
.gp-week ol{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.gp-week li{aspect-ratio:1/1.25;border-radius:10px}
.gp-week li.is-gt{background:var(--navy);box-shadow:0 14px 24px -16px rgba(15,26,61,.6)}
.gp-week li.is-home{background:#FCEBE3;border:1px solid #F1D9CC}
.gp-week figcaption{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;margin-top:16px;font-size:13.5px;color:#4A5470}
.gp-week figcaption i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.gp-week .k-gt i{background:var(--navy)}.gp-week .k-home i{background:#FCEBE3;border:1px solid #E8B4A0}
html.gp-js .gp-week li{opacity:0;transform:translateY(10px)}
html.gp-js .gp-week.is-on li{opacity:1;transform:none;transition:opacity .5s var(--ease) calc(.2s + var(--i)*.08s),transform .5s var(--ease) calc(.2s + var(--i)*.08s)}

/* ---------- 첫 화면에 그림을 둘 때 (사진 대신) ---------- */
.gt-c-hero.gt-has-fig::after{display:none!important;content:none!important}
.gt-c-hero .gp-hero-fig{margin-top:28px}
@media (min-width:1024px){
 .gt-c-hero.gt-has-fig > .elementor-container{position:relative}
 .gt-c-hero.gt-c-hero.gt-c-hero .elementor-widget.gp-hero-fig{position:absolute!important;right:max(0px,calc((100% - 1440px) / 2));top:50%;transform:translateY(-50%);width:min(46%,540px)!important;max-width:none!important;margin:0!important}
 .gt-c-hero .gp-hero-fig .gp-tl,.gt-c-hero .gp-hero-fig .gp-week{max-width:none}
}
@media (max-width:1023px){
 .gt-c-hero .gp-hero-fig .gp-orbit{max-width:420px}
}
@media (max-width:600px){
 .gp-orbit li b{font-size:12px}.gp-orbit li span{display:none}
 .gp-plus5{font-size:11px;left:16%}.gp-plus5 b{font-size:15px}
 .gp-tl li b{font-size:12px}.gp-tl li span{font-size:11.5px}
 .gp-tl ol{height:150px}
}

/* ---------- 스크롤하면 부드럽게 나타나기 (한 번만) ---------- */
html.gp-js .gp-rv{opacity:0;transform:translateY(16px)}
html.gp-js .gp-rv.gp-rv-in{opacity:1;transform:none;transition:opacity .8s var(--gt-ease,cubic-bezier(.2,.7,.2,1)),transform .8s cubic-bezier(.2,.7,.2,1)}

@media (prefers-reduced-motion:reduce){
 .gp-fig *,.gp-fig{animation:none!important;transition:none!important}
 html.gp-js .gp-orbit .gp-ring,html.gp-js .gp-orbit .gp-ico *,html.gp-js .gp-orbit .gp-live path{stroke-dashoffset:0!important}
 html.gp-js .gp-orbit .gp-core,html.gp-js .gp-orbit .gp-core-l,html.gp-js .gp-orbit .gp-plus5,html.gp-js .gp-orbit li,html.gp-js .gp-orbit .gp-spokes,html.gp-js .gp-tl li,html.gp-js .gp-week li,html.gp-js .gp-still>*{opacity:1!important}
 html.gp-js .gp-orbit .gp-sat{opacity:1!important}html.gp-js .gp-orbit .gp-sat.is-dim{opacity:.38!important}html.gp-js .gp-orbit li.is-dim{opacity:.5!important}
 html.gp-js .gp-tl .gp-tl-line{transform:none!important}
 html.gp-js .gp-still>*{transform:rotate(var(--r,0deg))!important}
 html.gp-js .gp-week li{transform:none!important}
 html.gp-js .gp-rv{opacity:1!important;transform:none!important;transition:none!important}
}

/* 공간 사진 한 장 (1.5.21) */
.gt-space{max-width:1040px;margin:0 auto;padding:0}
.gt-space__item{margin:0}
.gt-space--two{display:grid;grid-template-columns:1fr 1fr;gap:28px}
@media (max-width:767px){.gt-space--two{grid-template-columns:1fr;gap:22px}}
.gt-space__img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:14px;box-shadow:0 1px 0 rgba(26,43,94,.05),0 18px 40px -24px rgba(26,43,94,.35)}
.gt-space__cap{margin:14px 0 0;text-align:center;font-size:14px;color:#5A6480;letter-spacing:.01em}
.gt-space__cap::before{content:"";display:inline-block;width:18px;height:1px;background:#C9A961;vertical-align:middle;margin-right:10px}
@media (max-width:767px){.gt-space__img{border-radius:10px}.gt-space__cap{font-size:13px;margin-top:10px}}

/* 1.5.30 휴대폰에서 단계가 6개 이상이면 작은 설명은 숨겨 이름끼리 붙지 않게 */
@media (max-width:600px){.gp-tl[style*="--n:6"] li span,.gp-tl[style*="--n:7"] li span{display:none}}

/* 1.5.66 */
.gp-orbit a,.gp-orbit a *{text-decoration:none!important}

/* 1.5.71 — 타임라인 위 보고서 썸네일 */
.gp-tl.has-docs{padding-top:132px}
.gp-tl.has-docs .gp-tl-line{top:147px}
.gp-tl .gp-doc{position:absolute;bottom:calc(100% - 4px);left:50%;width:70px;transform:translateX(-50%) rotate(-3deg);text-decoration:none!important;color:inherit;transition:transform .25s}
.gp-tl .gp-doc:hover{transform:translateX(-50%) rotate(0) translateY(-4px)}
.gp-tl li.is-first .gp-doc{left:0;transform:rotate(-3deg)}
.gp-tl li.is-last .gp-doc{left:auto;right:-10px;transform:rotate(3deg)}
.gp-tl li.is-last .gp-doc:hover{transform:rotate(0) translateY(-4px)}
.gp-doc-pg{display:block;height:88px;background:#fff;border:1px solid #E6DFD3;border-radius:4px;box-shadow:0 6px 14px rgba(15,26,61,.12),3px 3px 0 -1px #fff,3px 3px 0 0 #E6DFD3;overflow:hidden}
.gp-doc-pg img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.gp-doc-lines{display:flex;flex-direction:column;gap:7px;padding:12px 9px}
.gp-doc-lines s{display:block;height:3px;border-radius:2px;background:#E8DCC5}
.gp-doc-lines s:first-child{width:60%;background:#C9A961}
.gp-doc-lines s:nth-child(3){width:80%}.gp-doc-lines s:nth-child(5){width:50%}
.gp-doc-t{display:block;margin-top:6px;font-size:11px;line-height:1.3;color:var(--muted);text-align:center;white-space:nowrap}
.gp-doc-t b{display:block;font-size:11.5px;color:var(--navy);font-weight:600}
html.gp-js .gp-tl .gp-doc{opacity:0}
.gp-tl.is-on .gp-doc{animation:gpFade .5s calc(.6s + var(--i)*1.2s / var(--n)) forwards}
@media (prefers-reduced-motion:reduce){html.gp-js .gp-tl .gp-doc{opacity:1!important;animation:none}}
@media (max-width:600px){.gp-tl.has-docs{padding-top:104px}.gp-tl.has-docs .gp-tl-line{top:119px}.gp-tl .gp-doc{width:52px}.gp-doc-pg{height:66px}.gp-doc-t{font-size:10px}.gp-doc-t b{font-size:10.5px}}
