/* ════════════════════════════════════════════════════════
   지오앤디 랜딩 v2
   레이아웃 개념 = 지적도(cadastral). 1px 헤어라인이 필지 경계처럼 화면을 나누고
   칸마다 면적이 다르다. 값은 전부 design-tokens.css 의 var(--*) 로만 참조한다.
   ════════════════════════════════════════════════════════ */

.wrap{max-width:1360px;margin:0 auto;padding:0 clamp(24px,3vw,48px)}
/* 고정 헤더에 제목이 가리지 않도록 앵커 오프셋을 준다 */
[id]{scroll-margin-top:calc(var(--gnb-height) + var(--space-4))}

/* 스크롤 진행 */
.prog{position:fixed;top:0;left:0;height:2px;width:100%;transform:scaleX(0);transform-origin:0 50%;background:var(--color-primary);z-index:60;pointer-events:none}

/* ── 내비 ──
   히어로 위에 투명하게 얹혀 있다가 스크롤하면 배경이 올라온다.
   배경은 화면 전체 폭(풀블리드), 안쪽 내용만 컨테이너 폭으로 묶는다. */
.nav{position:fixed;top:0;left:0;right:0;z-index:60;background:transparent;border-bottom:1px solid transparent;transition:background var(--duration-state) var(--ease-out),
             border-color var(--duration-state) var(--ease-out)}
.nav.solid{background:var(--color-bg-elevated);border-bottom-color:var(--color-border)}
body.menu-lock{overflow:hidden}
.nav-in{max-width:1360px;margin:0 auto;padding:0 clamp(24px,3vw,48px);height:var(--gnb-height);display:flex;align-items:center;gap:var(--space-8)}
.brand{display:flex;align-items:center;gap:var(--space-3);font-size:21px;font-weight:700;letter-spacing:-.025em;color:var(--geo-white);text-decoration:none;transition:color var(--duration-state) var(--ease-out)}
.brand img{height:34px;width:auto;display:block}
/* 국문 옆에 영문 병기 - 로고 락업의 위계를 그대로 옮긴다(국문 굵게 / 영문 얇게+자간) */
.brand-en{font-size:var(--text-xs);font-weight:600;letter-spacing:.1em;opacity:.9;padding-left:var(--space-3);margin-left:var(--space-1);border-left:1px solid currentColor;line-height:1}
.nav.solid .brand{color:var(--color-primary)}
/* 배경이 바뀌면 로고도 바뀐다.
   .brand img 가 display:block 을 걸고 있어 특이도를 맞춰 줘야 한다 */
.brand .mark-n{display:none}
.nav.solid .brand .mark-w{display:none}
.nav.solid .brand .mark-n{display:block}
.nav nav{display:flex;gap:var(--space-8);margin-left:auto;align-items:center}
.nav nav a{font-size:17px;letter-spacing:-.01em;color:var(--geo-white);text-decoration:none;padding:var(--space-2) 0;border-bottom:2px solid transparent;transition:border-color var(--duration-state) var(--ease-out),color var(--duration-state) var(--ease-out)}
.nav nav a:hover{border-bottom-color:currentColor}
.nav.solid nav a{color:var(--color-text)}
.nav.solid nav a:hover{border-bottom-color:var(--color-primary)}
.nav-toggle{display:none;margin-left:auto;width:var(--control-height-sm);height:var(--control-height-sm);border:1px solid rgba(255,255,255,.5);background:transparent;border-radius:var(--radius-md);font-size:var(--text-lg,22px);cursor:pointer;color:var(--geo-white)}
.nav.solid .nav-toggle{border-color:var(--color-border-ui);background:var(--color-bg-elevated);color:var(--color-text)}
:is(.nav nav a,.nav-toggle,.calc-go,.f-input,.rbtn,.ask-go,.v-cta,.band-link):focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}

/* ── 히어로 : 논지 + 계산기 ── */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden;background:var(--geo-navy-900)}
/* 풀블리드 영상 : 화면 전체를 덮고 활성 슬라이드만 보인다 */
.hero-media{position:absolute;inset:0}
.hero-media>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1000ms var(--ease-out);/* 영상 자체를 밝게 인코딩했으므로 여기서는 거의 누르지 않는다 */
  filter:brightness(.94) saturate(1.05)}
.hero-media>video[data-on]{opacity:1}
.hero-scrim{position:absolute;inset:0;/* 카피가 앉는 좌하단만 국소로 눌러 가독성을 확보하고, 나머지는 영상을 살린다 */
  background:radial-gradient(95% 78% at 0% 52%, rgba(6,24,42,.92) 0%, rgba(6,24,42,.66) 34%, rgba(6,24,42,.22) 62%, transparent 80%),
             linear-gradient(180deg,rgba(6,24,42,.55) 0%,transparent 22%,transparent 64%,rgba(6,24,42,.5) 100%)}
.hero-in{position:relative;z-index:1;width:100%;max-width:1360px;margin:0 auto;padding:calc(var(--gnb-height) + var(--space-16)) clamp(24px,3vw,48px) var(--space-16)}

/* LCP 요소라 첫 슬라이드에는 진입 애니메이션을 걸지 않는다 */
.slides{position:relative;min-height:clamp(210px,17vw,290px)}
.slide{position:absolute;inset:0;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out)}
.slide[data-on]{position:relative;opacity:1;transform:none;pointer-events:auto}
.slide h1,.slide .h1{margin:0;font-size:clamp(42px,4.8vw,78px);font-weight:var(--w-display);line-height:1.12;letter-spacing:-.03em;color:var(--geo-white);text-shadow:0 2px 24px rgba(6,24,42,.55)}
.slide p{margin-top:var(--space-8);max-width:40ch;font-size:var(--text-lg,22px);line-height:var(--leading-normal);color:var(--geo-white);text-shadow:0 2px 18px rgba(6,24,42,.7)}
.hero-act{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-12)}
.btn-solid,.btn-line{display:inline-flex;align-items:center;height:var(--control-height);padding:0 var(--space-8);border-radius:var(--radius-md);text-decoration:none;font-size:var(--text-base);font-weight:var(--w-head);transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.btn-solid{background:var(--color-primary);color:var(--color-text-on-primary);border:1px solid transparent}
.btn-solid:hover{background:var(--color-primary-hover)}
.btn-line{background:transparent;color:var(--geo-white);border:1px solid rgba(255,255,255,.5)}
.btn-line:hover{background:rgba(255,255,255,.1);border-color:var(--geo-white)}
.hero-dots{display:flex;gap:var(--space-2);margin-top:var(--space-12)}
.hdot{width:56px;height:var(--control-height-sm);padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center;position:relative}
/* 트랙 */
.hdot::before{content:'';width:44px;height:2px;background:rgba(255,255,255,.28);transition:background var(--duration-state) var(--ease-out)}
.hdot:hover::before{background:rgba(255,255,255,.5)}
/* 진행바 - 활성 슬라이드에서 재생 시간만큼 차오른다 */
.hdot i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:2px;overflow:hidden;pointer-events:none}
.hdot i::after{content:'';display:block;width:100%;height:100%;background:var(--geo-white);transform:scaleX(0);transform-origin:0 50%}
.hdot[aria-selected="true"] i::after{animation:hprog var(--hero-dur,8000ms) linear forwards}
.hdot[aria-selected="true"].paused i::after{animation-play-state:paused}
@keyframes hprog{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.hdot:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:2px}
@media (prefers-reduced-motion: reduce){
  .hdot[aria-selected="true"] i::after{animation:none;transform:scaleX(1)}
}

/* 계산기 = 시그니처. 흰 필지 한 장이 어두운 대지 위에 놓인 모양 */
.calc{background:rgba(255,255,255,.05);border-radius:var(--radius-md);padding:var(--space-8);border:1px solid var(--color-border);border-color:rgba(255,255,255,.16)}
.calc-head{padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border);border-bottom-color:rgba(255,255,255,.16)}
.calc-kicker{display:block;font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.1em;color:var(--color-primary)}
.calc-head p{margin-top:var(--space-2);font-size:var(--text-base);color:var(--geo-navy-100)}
.calc-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-6)}
.f{display:block}
.f-wide{grid-column:1 / -1}
.f-label{display:block;font-size:var(--text-sm);font-weight:var(--w-head);margin-bottom:var(--space-2);color:var(--geo-white)}
.f-row{display:flex;gap:var(--space-2)}
.f-input{width:100%;height:var(--control-height);padding:0 var(--space-4);font-family:inherit;font-size:var(--text-base);color:var(--geo-ink);background:var(--geo-white);border:1px solid var(--color-border-ui);border-radius:var(--radius-md);border-color:rgba(255,255,255,.3)}
.f-input:focus{border-color:var(--geo-white);box-shadow:inset 0 0 0 1px var(--geo-navy-500);outline:none}
.f-unit{width:92px;flex:none}
.f-hint{display:block;margin-top:var(--space-2);font-size:var(--text-xs);color:var(--geo-navy-300)}
.calc-go{width:100%;margin-top:var(--space-6);height:var(--control-height);border:0;cursor:pointer;background:var(--color-primary);color:var(--color-text-on-primary);font-family:inherit;font-size:var(--text-base);font-weight:var(--w-head);border-radius:var(--radius-md);transition:background var(--duration-state) var(--ease-out)}
.calc-go:hover{background:var(--color-primary-hover)}
.calc-go:active{background:var(--color-primary-active)}

/* 결과 = 필지 3칸. 숫자가 주인공이라 tabular-nums 로 자리를 고정한다 */
/* hidden 속성이 display:block 에 밀려 결과가 계산 전에도 0 으로 떠 있었다 */
.calc-out[hidden]{display:none}
.calc-out{display:block;margin-top:var(--space-8);padding-top:var(--space-8);border-top:1px solid var(--color-border);border-top-color:rgba(255,255,255,.16)}
.parcel{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.16);border:1px solid var(--color-border);border-color:rgba(255,255,255,.16)}
.parcel-cell{background:var(--color-bg-elevated);padding:var(--space-4)}
.p-label{display:block;font-size:var(--text-xs);color:var(--geo-navy-300)}
.p-num{display:block;margin-top:var(--space-2);font-size:34px;font-weight:var(--w-num);color:var(--geo-white);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1}
.p-num em{font-style:normal;font-size:var(--text-sm);font-weight:var(--w-body);color:var(--geo-navy-300);margin-left:3px}
.verdict{display:flex;gap:var(--space-3);align-items:flex-start;margin-top:var(--space-6)}
/* 판정을 색만으로 알리지 않는다 - 기호와 굵은 문장을 함께 둔다 */
.v-sig{flex:none;width:24px;height:24px;margin-top:2px;border-radius:var(--radius-md);display:grid;place-items:center;font-size:var(--text-xs);font-weight:var(--w-head)}
.v-sig.ok{background:var(--color-success-subtle);color:var(--color-success)}
.v-sig.ok::before{content:'✓'}
.v-sig.mid{background:var(--color-warning-subtle);color:var(--color-warning)}
.v-sig.mid::before{content:'!'}
.v-sig.no{background:var(--color-error-subtle);color:var(--color-error)}
.v-sig.no::before{content:'!'}
.verdict b{font-size:var(--text-h3);font-weight:var(--w-head);line-height:1.4;color:var(--geo-white)}
.v-msg{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--geo-navy-100)}
.v-cta{display:inline-block;margin-top:var(--space-6);font-size:var(--text-base);font-weight:var(--w-head);color:var(--geo-white);text-decoration:none;border-bottom:1px solid var(--geo-navy-300);padding-bottom:2px;min-height:var(--control-height-sm)}
.calc-note{margin-top:var(--space-6);font-size:var(--text-xs);line-height:1.7;color:var(--color-text-muted)}

/* ── 수치 : 필지처럼 헤어라인으로 나눈다 ── */
/* (v2 에서 딸려온 옛 .figures 규칙 제거 — 아래 다크 밴드 정의가 유일하다) */

/* ── 공통 섹션 제목 ── */
.sec-h{font-size:clamp(30px,2.9vw,46px);font-weight:var(--w-head);line-height:1.24;letter-spacing:-.02em}
.sec-sub{margin-top:var(--space-4);max-width:56ch;font-size:var(--text-base);color:var(--color-text-muted)}

/* ── 지주공동사업 : 어두운 대지 ── */
.band{position:relative;overflow:hidden;background:var(--geo-navy-800);color:var(--geo-white);padding-block:clamp(56px,5.5vw,88px)}
.band-bg{position:absolute;inset:-8% 0;background-size:cover;background-position:center;opacity:.14;will-change:transform}
.band-in{position:relative;z-index:1}
.band-h{font-size:clamp(30px,3.2vw,50px);font-weight:var(--w-head);line-height:1.2;letter-spacing:-.02em}
.band-sub{margin-top:var(--space-6);max-width:46ch;font-size:var(--text-lg,22px);color:var(--geo-navy-100)}

.chain{list-style:none;counter-reset:none;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.16);margin-top:clamp(40px,5vw,72px);border:1px solid rgba(255,255,255,.16)}
.chain li{background:var(--geo-navy-800);padding:var(--space-8)}
.chain-who{display:block;font-size:var(--text-xs);letter-spacing:.08em;color:var(--geo-navy-300)}
.chain b{display:block;margin:var(--space-3) 0;font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white);line-height:1.35}
.chain p{font-size:var(--text-sm);color:var(--geo-navy-100)}

.compare{margin-top:clamp(40px,5vw,72px)}
.cmp{width:100%;border-collapse:collapse;font-size:var(--text-base);table-layout:fixed}
.cmp caption{text-align:left;font-size:var(--text-sm);color:var(--geo-navy-300);padding-bottom:var(--space-4)}
.cmp th,.cmp td{padding:var(--space-4) var(--space-4) var(--space-4) 0;text-align:left;border-bottom:1px solid rgba(255,255,255,.14);vertical-align:baseline}
.cmp thead th{font-size:var(--text-xs);font-weight:var(--w-head);color:var(--geo-navy-300);border-bottom-color:rgba(255,255,255,.5);white-space:nowrap}
.cmp tbody td{color:var(--geo-navy-100)}
.cmp tbody td:first-child,.cmp th:first-child{color:var(--geo-white)}
.cmp .hi{color:var(--geo-white);font-weight:var(--w-head)}
.caution{margin-top:var(--space-8);padding-left:var(--space-6);border-left:4px solid var(--geo-slate-500);font-size:var(--text-sm);line-height:1.75;color:var(--geo-navy-100);max-width:70ch}
.caution b{color:var(--geo-white);margin-right:var(--space-1)}
.band-link{display:inline-block;margin-top:var(--space-8);min-height:var(--control-height-sm);padding:var(--space-3) var(--space-6);border:1px solid rgba(255,255,255,.45);border-radius:var(--radius-md);color:var(--geo-white);text-decoration:none;font-size:var(--text-base);font-weight:var(--w-head);transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.band-link:hover{background:rgba(255,255,255,.1);border-color:var(--geo-white)}

/* ── 진행 절차 : 실제 순서라 번호가 정보다 ── */
.steps-sec{padding-block:clamp(56px,5.5vw,88px);background:var(--geo-navy-900)}
.steps{list-style:none;display:block;grid-template-columns:repeat(7,1fr);gap:1px;background:none;border:1px solid var(--color-border);margin-top:clamp(32px,4vw,56px);border-top:1px solid var(--color-border);border-left:0;border-top-color:rgba(255,255,255,.16)}
.steps li{background:transparent;padding:var(--space-6) var(--space-6) var(--space-6) 0;display:grid;grid-template-columns:72px minmax(0,1fr);gap:var(--space-6);border-bottom:1px solid var(--color-border);border-bottom-color:rgba(255,255,255,.16)}
.steps i{font-style:normal;display:block;font-size:var(--text-h3);font-weight:var(--w-num);color:var(--geo-navy-300);font-variant-numeric:tabular-nums;line-height:1.3}
.steps b{display:block;margin-top:var(--space-3);font-size:var(--text-h3);font-weight:var(--w-head);line-height:1.4;color:var(--geo-white)}
.steps .key{background:rgba(255,255,255,.07);padding-left:var(--space-6);box-shadow:inset 3px 0 0 var(--geo-white)}

.steps .key em{display:inline-block;margin-top:var(--space-2);font-style:normal;font-size:var(--text-xs);color:var(--geo-navy-900);font-weight:var(--w-head);background:var(--geo-white);padding:2px var(--space-2);border-radius:var(--radius-md)}

/* ── 사람 ── */
.team-sec{padding-block:clamp(72px,9vw,132px);border-top:1px solid var(--color-border);background:var(--geo-navy-800);position:relative;overflow:hidden}
.roles{margin-top:clamp(32px,4vw,56px);border-top:1px solid var(--color-border)}
.roles article{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:clamp(16px,4vw,64px);padding:var(--space-8) 0;border-bottom:1px solid var(--color-border);align-items:baseline}
.role-who{font-size:var(--text-h3);font-weight:var(--w-head);color:var(--color-primary)}
.roles b{display:block;font-size:var(--text-h3);font-weight:var(--w-head);margin-bottom:var(--space-2)}
.roles p{font-size:var(--text-base);color:var(--color-text-muted)}
.people{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--color-border);border:1px solid var(--color-border);margin-top:clamp(40px,5vw,72px)}
.people article{background:var(--color-bg-elevated);padding:var(--space-6)}
.people .pos{font-size:var(--text-xs);letter-spacing:.08em;color:var(--color-text-muted)}
.people b{display:block;margin:var(--space-2) 0 var(--space-3);font-size:var(--text-h3);font-weight:var(--w-head)}
.people p{font-size:var(--text-sm);color:var(--color-text-muted)}

/* ── 현장 ── */
.work{position:relative;overflow:hidden;background:var(--geo-navy-800);color:var(--geo-white);padding-block:clamp(56px,5.5vw,88px)}
.work-bg{position:absolute;inset:-8% 0;background-size:cover;background-position:center;opacity:.14;will-change:transform}
.work-in{position:relative;z-index:1}
.work-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-12);flex-wrap:wrap}
.work-head h2{font-size:clamp(28px,2.8vw,44px);font-weight:var(--w-head);letter-spacing:-.02em;line-height:1.24}
.work-count{display:flex;align-items:baseline;gap:var(--space-2)}
.work-count b{font-size:clamp(48px,5vw,74px);font-weight:var(--w-display);color:var(--geo-white);font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1}
.work-count span{font-size:var(--text-lg,22px);color:var(--geo-navy-300)}

.reel{margin-top:clamp(32px,4vw,56px)}
.reel-track{list-style:none;display:flex;gap:var(--space-6);overflow-x:auto;scrollbar-width:none}
.reel-track::-webkit-scrollbar{display:none}
.reel-track>li{flex:0 0 calc((100% - var(--space-6)) / 2);min-width:0}
.shot{aspect-ratio:16/10;background-size:cover;background-position:center;background-color:var(--geo-navy-900);position:relative}
.shot.none{display:grid;place-items:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12)}
.shot.none span{font-size:var(--text-xs);color:var(--geo-navy-300)}
.reel-track figcaption{padding-top:var(--space-4)}
.reel-track b{display:block;font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white)}
.reel-track p{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--geo-navy-100)}
.tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}
.tag{display:inline-flex;align-items:center;height:24px;padding:0 var(--space-2);border:1px solid rgba(255,255,255,.4);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--w-badge);color:var(--geo-white)}
.reel-ctl{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-6);gap:var(--space-4)}
.reel-pos{font-size:var(--text-xs);color:var(--geo-navy-300);font-variant-numeric:tabular-nums}
.reel-btns{display:flex;gap:var(--space-2)}
.rbtn{width:var(--control-height-sm);height:var(--control-height-sm);cursor:pointer;background:transparent;border:1px solid rgba(255,255,255,.34);border-radius:var(--radius-md);color:var(--geo-white);font-size:var(--text-sm);transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.rbtn:hover{background:rgba(255,255,255,.1);border-color:var(--geo-white)}

.work-sub{margin-top:clamp(56px,7vw,104px);font-size:var(--text-h2);font-weight:var(--w-head);margin-bottom:clamp(24px,2.4vw,32px);line-height:1.28;letter-spacing:-.015em;color:var(--geo-white)}
.work-note{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.7;max-width:72ch;opacity:.82}


/* ── 검토 요청 ── */
.ask{padding-block:clamp(56px,5.5vw,88px)}
.ask-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,6vw,104px);align-items:start}
.ask-copy h2{font-size:clamp(30px,2.9vw,46px);font-weight:var(--w-head);line-height:1.24;letter-spacing:-.02em}
.ask-copy>p{margin-top:var(--space-6);font-size:var(--text-base);color:var(--color-text-muted);max-width:44ch}
.ask-contact{margin-top:var(--space-12);border-top:1px solid var(--color-border);border-top-color:rgba(255,255,255,.16)}
.ask-contact div{display:grid;grid-template-columns:100px 1fr;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--color-border);border-bottom-color:rgba(255,255,255,.16)}
.ask-contact dt{font-size:var(--text-sm);color:var(--geo-navy-300)}
.ask-contact dd{font-size:var(--text-base)}
.ask-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.f-area{height:132px;padding:var(--space-3) var(--space-4);line-height:var(--leading-normal);resize:vertical;background:var(--geo-white);color:var(--geo-ink)}
.f-check{grid-column:1 / -1;display:inline-flex;align-items:center;gap:var(--space-3);min-height:var(--control-height-sm);font-size:var(--text-sm);cursor:pointer;color:var(--geo-navy-100)}
.f-check input{width:20px;height:20px;accent-color:var(--color-primary);cursor:pointer}
.ask-go{grid-column:1 / -1;height:var(--control-height);border:0;cursor:pointer;background:var(--color-primary);color:var(--color-text-on-primary);border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-base);font-weight:var(--w-head);transition:background var(--duration-state) var(--ease-out)}
.ask-go:hover{background:var(--color-primary-hover)}

/* ── 푸터 ── */
.foot{background:var(--geo-navy-800);color:var(--geo-white)}
.foot-in{display:flex;justify-content:space-between;gap:var(--space-12);flex-wrap:wrap;padding-block:clamp(48px,6vw,80px)}
.foot-logo{height:88px;width:auto;display:block}
.foot-cols p{font-size:var(--text-sm);color:var(--geo-navy-100);line-height:2}
.foot-band{background:var(--geo-slate-500);padding:var(--space-4) 0}
.foot-band-in{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;font-size:var(--text-xs);color:rgba(255,255,255,.9)}
.foot-legal{display:flex;flex-direction:column;gap:6px;min-width:0}
.foot-biz{margin:0;color:rgba(255,255,255,.9);letter-spacing:-.01em;font-size:var(--text-xs);line-height:1.7}
.foot-note{margin:0;color:rgba(255,255,255,.7);max-width:56ch;line-height:1.65}
.foot-end{display:flex;align-items:center;gap:var(--space-6);flex-shrink:0}
.foot-copy{margin:0;color:rgba(255,255,255,.62);white-space:nowrap}
.foot-top-link{display:inline-flex;align-items:center;gap:9px;min-height:44px;font-size:16px;font-weight:600;color:rgba(255,255,255,.72);text-decoration:none;transition:color var(--duration-state) var(--ease-out),gap var(--duration-state) var(--ease-out)}
.foot-top-link::before{content:'';width:8px;height:8px;border-left:1.5px solid currentColor;border-top:1.5px solid currentColor;transform:rotate(45deg) translate(1px,1px)}
.foot-top-link:hover{color:var(--geo-white);gap:13px}

@media (max-width:1080px){
  .foot-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12) var(--space-8)}
}
@media (max-width:768px){
  .nav nav{gap:0}
  .nav-item>a{height:auto}
  .has-sub>a::after{display:none}
  .submenu{position:static;transform:none;opacity:1;visibility:visible;pointer-events:auto;
    border:0;background:none;padding:0 0 var(--space-2) var(--space-4);min-width:0}
  .submenu a{padding:var(--space-2) 0}
  .foot-top{grid-template-columns:1fr}
  .foot-band-in{flex-direction:column;align-items:flex-start;gap:var(--space-2)}
}


/* 검토 상태 배지 — 색만으로 구분하지 않고 글자로 구분한다 */
.st{display:inline-flex;align-items:center;height:24px;padding:0 var(--space-2);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--w-badge);border:1px solid rgba(255,255,255,.28);color:var(--geo-navy-100)}
.st.on{border-color:var(--geo-white);color:var(--geo-white);font-weight:var(--w-head)}

@media (max-width:760px){ .orbit-panel{border-left:0;padding-left:0;min-height:0} }

/* 총괄 체계 배경 영상 */
.team-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.team-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,37,61,.94) 0%,rgba(13,37,61,.72) 40%,
    rgba(13,37,61,.78) 70%,rgba(13,37,61,.95) 100%)}
.team-sec>.wrap{position:relative;z-index:1}
@media (max-width:768px){
  /* 영상 로드 전 배경으로 포스터를 깐다 — 로드되면 영상이 덮는다 */
  .team-sec{background-image:url('../assets/video/d-grid-poster.jpg');background-size:cover;
    background-position:center}
}
@media (prefers-reduced-motion: reduce){ .team-bg{display:none} }

/* ── 진행 절차 표 : 우리가 하는 일 / 토지주가 하실 일 ── */
.flow-table{width:100%;min-width:720px;border-collapse:collapse;table-layout:fixed;margin-top:clamp(32px,3vw,48px)}
.flow-table th,.flow-table td{padding:var(--space-5) var(--space-4) var(--space-5) 0;text-align:left;vertical-align:baseline;border-bottom:1px solid rgba(255,255,255,.14)}
.flow-table thead th{font-size:var(--text-xs);font-weight:var(--w-head);color:var(--geo-navy-300);border-bottom-color:rgba(255,255,255,.45);white-space:nowrap;padding-bottom:var(--space-3)}
.flow-table .fn{font-size:var(--text-h3);font-weight:var(--w-num);color:var(--geo-navy-300);font-variant-numeric:tabular-nums;transition:color var(--duration-state) var(--ease-out)}
.flow-table .fs{font-size:var(--text-base);font-weight:var(--w-head);color:var(--geo-white)}
.flow-table td{font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.7}
.flow-table .fnone{color:var(--geo-navy-300)}
.flow-table tbody tr{transition:background var(--duration-state) var(--ease-out)}
.flow-table tbody tr:hover{background:rgba(255,255,255,.05)}
.flow-table tbody tr:hover .fn{color:var(--geo-white)}
/* 토지주가 결정하는 단 하나의 행 */
.flow-table tr.key{background:rgba(255,255,255,.08)}
.flow-table tr.key .fn,.flow-table tr.key .fs{color:var(--geo-white)}
.flow-table tr.key td{color:var(--geo-white)}
.flow-table tr.key b{font-weight:var(--w-head)}
.flow-table tr.key td:first-child{box-shadow:inset 3px 0 0 var(--geo-white);padding-left:var(--space-4)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* 내비 CTA — 메뉴가 아니라 행동 버튼이다. 채워서 메뉴와 무게를 분리한다 */
.nav .nav-cta{position:relative;display:inline-flex;align-items:center;height:42px;padding:0 24px;margin-left:30px;border:1px solid transparent;border-radius:2px;font-size:17px;font-weight:600;letter-spacing:-.01em;text-decoration:none;background:var(--geo-white);color:var(--geo-navy-900);transition:background var(--duration-state) var(--ease-out),color var(--duration-state) var(--ease-out),transform var(--duration-state) var(--ease-out)}
.nav .nav-cta::before{content:'';position:absolute;left:-15px;top:50%;transform:translateY(-50%);width:1px;height:20px;background:rgba(255,255,255,.28)}
.nav .nav-cta:hover{background:var(--geo-navy-100);transform:translateY(-1px)}
.nav .nav-cta:active{transform:translateY(0)}
.nav.solid .nav-cta{background:var(--geo-navy-900);color:var(--geo-white)}
.nav.solid .nav-cta::before{background:var(--color-border)}
.nav.solid .nav-cta:hover{background:var(--geo-navy-500)}
@media (max-width:900px){.nav .nav-cta{margin:12px 0 0;width:100%;justify-content:center}.nav .nav-cta::before{display:none}}

/* 현장 전체 보기 — 실적 서브페이지로 */
.work-all{display:inline-flex;align-items:center;gap:10px;margin-top:18px;font-size:18px;font-weight:600;color:var(--geo-white);text-decoration:none;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.4);transition:border-color var(--duration-state) var(--ease-out),gap var(--duration-state) var(--ease-out)}
.work-all i{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
.work-all:hover{border-bottom-color:var(--geo-white);gap:16px}

/* ── 마무리 CTA : 페이지의 끝을 세운다 ───────────────────── */
.finale{position:relative;min-height:88vh;display:flex;align-items:center;background:var(--geo-navy-900);color:var(--geo-white);overflow:hidden;padding:120px 0;text-align:center}
.finale-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.finale-veil{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 55%,rgba(6,24,42,.34) 0%,rgba(6,24,42,.80) 62%,rgba(6,24,42,.94) 100%),
    linear-gradient(to bottom,rgba(6,24,42,.88) 0%,rgba(6,24,42,.42) 26%,rgba(6,24,42,.42) 74%,rgba(6,24,42,.92) 100%)}
.finale-in{position:relative;z-index:1;max-width:940px}
.finale-eyebrow{font-family:'Outfit',sans-serif;font-size:14px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--geo-navy-100);margin:0 0 30px}
.finale-h{font-size:clamp(40px,5.4vw,76px);font-weight:600;line-height:1.16;letter-spacing:-.025em;margin:0 0 28px;color:var(--geo-white);text-shadow:0 2px 40px rgba(6,24,42,.5)}
.finale-lead{font-size:clamp(19px,1.6vw,23px);line-height:1.75;color:var(--geo-navy-100);margin:0 0 48px}
.finale-act{display:flex;gap:32px;align-items:center;justify-content:center;flex-wrap:wrap}
.finale-go{position:relative;display:inline-flex;align-items:center;gap:14px;height:68px;padding:0 44px;font-size:20px;font-weight:600;letter-spacing:-.01em;text-decoration:none;border-radius:2px;background:var(--geo-white);color:var(--geo-navy-900);overflow:hidden;transition:transform var(--duration-state) var(--ease-out),box-shadow var(--duration-state) var(--ease-out)}
.finale-go i{width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform var(--duration-state) var(--ease-out)}
.finale-go:hover{transform:translateY(-2px);box-shadow:0 14px 40px rgba(0,0,0,.34)}
.finale-go:hover i{transform:rotate(-45deg) translate(3px,3px)}
.finale-go:active{transform:translateY(0)}
.finale-tel{font-family:'Outfit',sans-serif;font-size:26px;font-weight:600;letter-spacing:.02em;color:var(--geo-white);text-decoration:none;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.34);transition:border-color var(--duration-state) var(--ease-out)}
.finale-tel:hover{border-bottom-color:var(--geo-white)}
.finale-note{margin:44px 0 0;font-size:16px;color:var(--geo-navy-100);opacity:.78}
@media (max-width:760px){
  .finale{min-height:auto;padding:88px 0}
  .finale-act{flex-direction:column;gap:24px}
  .finale-go{width:100%;justify-content:center}
}

/* 지오앤디는 어떤 회사인가 — 오빗 앞에 놓는 한 문단 */
.whois{margin:clamp(40px,4vw,60px) 0 clamp(48px,5vw,72px);padding-left:clamp(20px,2.2vw,30px);border-left:2px solid rgba(255,255,255,.34);max-width:74ch}
.whois-line{margin:0 0 16px;font-size:clamp(22px,2.2vw,30px);font-weight:600;line-height:1.5;letter-spacing:-.015em;color:var(--geo-white);text-wrap:balance}
.whois-line b{font-weight:600;color:var(--geo-white);box-shadow:inset 0 -.42em 0 rgba(110,140,168,.34)}
.whois-sub{margin:0 0 24px;font-size:19px;line-height:1.8;color:var(--geo-navy-100)}
.whois-go{display:inline-flex;align-items:center;gap:10px;font-size:18px;font-weight:600;color:var(--geo-white);text-decoration:none;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.4);transition:border-color var(--duration-state) var(--ease-out),gap var(--duration-state) var(--ease-out)}
.whois-go i{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
.whois-go:hover{border-bottom-color:var(--geo-white);gap:16px}

/* 히어로 버튼 — 영상 위라 면이 묻힌다. 튀지 않게 경계와 바탕만 살린다 */
.hero-act .btn-solid{background:rgba(6,24,42,.86);border:1px solid rgba(255,255,255,.34);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 6px 24px rgba(0,0,0,.28)}
.hero-act .btn-solid:hover{background:var(--geo-white);border-color:var(--geo-white);color:var(--geo-navy-900)}
.hero-act .btn-line{background:rgba(6,24,42,.42);border-color:rgba(255,255,255,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 6px 24px rgba(0,0,0,.22)}
.hero-act .btn-line:hover{background:rgba(255,255,255,.16);border-color:var(--geo-white)}

.whois-brand{font-family:'Outfit',sans-serif;font-size:14px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--geo-navy-100);margin:0 0 18px}

/* ── 심볼 : 선이 그려진 뒤 면이 채워진다 ─────────────────────
   PNG 를 인라인 SVG 로 바꿔서 stroke-dashoffset 을 쓴다 */
.brand .gdmark{width:30px;height:34px;display:block;overflow:visible}
.brand .gd-f{stroke-width:26;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:4200;stroke-dashoffset:4200;fill-opacity:0;animation:gdDraw 900ms cubic-bezier(.4,0,.2,1) both,
            gdFill 420ms ease-out both}
.brand .gd-front{animation-delay:180ms, 900ms}
.brand .gd-side{animation-delay:420ms, 1080ms}
.brand .gd-shade{animation-delay:600ms, 1220ms}
.brand .gd-ground{animation-delay:780ms, 1360ms}
@keyframes gdDraw{to{stroke-dashoffset:0}}
@keyframes gdFill{from{fill-opacity:0;stroke-width:26}to{fill-opacity:1;stroke-width:0}}

/* 투명 내비에서는 흰색으로 */
.nav:not(.solid) .brand .gd-f{stroke:var(--geo-white)}
.nav:not(.solid) .brand .gd-front{fill:var(--geo-white)}
.nav:not(.solid) .brand .gd-side{fill:rgba(255,255,255,.82)}
.nav:not(.solid) .brand .gd-shade{fill:rgba(255,255,255,.62)}
.nav:not(.solid) .brand .gd-ground{fill:rgba(255,255,255,.44)}

/* 다시 보고 싶을 때 */
.brand:hover .gd-f{animation:gdDraw 760ms cubic-bezier(.4,0,.2,1) both,gdFill 380ms ease-out both}
.brand:hover .gd-front{animation-delay:0ms, 700ms}
.brand:hover .gd-side{animation-delay:170ms, 850ms}
.brand:hover .gd-shade{animation-delay:320ms, 980ms}
.brand:hover .gd-ground{animation-delay:460ms, 1100ms}

@media (prefers-reduced-motion:reduce){
  .brand .gd-f,.brand:hover .gd-f{animation:none;stroke-dashoffset:0;fill-opacity:1;stroke-width:0}
}

/* 푸터 심볼 — 스크롤로 닿으면 그려진다 */
.foot .gdmark-foot{width:96px;height:110px;display:block;overflow:visible}
.foot .gdmark-foot .gd-f{stroke:var(--geo-white);stroke-width:22;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:4200;stroke-dashoffset:4200;fill-opacity:0}
.foot .gdmark-foot .gd-front{fill:var(--geo-white)}
.foot .gdmark-foot .gd-side{fill:rgba(255,255,255,.80)}
.foot .gdmark-foot .gd-shade{fill:rgba(255,255,255,.58)}
.foot .gdmark-foot .gd-ground{fill:rgba(255,255,255,.40)}
.foot .gdmark-foot.in .gd-f{animation:gdDraw 1000ms cubic-bezier(.4,0,.2,1) both,gdFillFoot 460ms ease-out both}
@keyframes gdFillFoot{from{fill-opacity:0;stroke-width:22}to{fill-opacity:1;stroke-width:0}}
.foot .gdmark-foot.in .gd-front{animation-delay:0ms, 980ms}
.foot .gdmark-foot.in .gd-side{animation-delay:260ms, 1180ms}
.foot .gdmark-foot.in .gd-shade{animation-delay:480ms, 1360ms}
.foot .gdmark-foot.in .gd-ground{animation-delay:700ms, 1540ms}
@media (prefers-reduced-motion:reduce){
  .foot .gdmark-foot .gd-f{stroke-dashoffset:0;fill-opacity:1;stroke-width:0;animation:none}
}
.nav.solid .brand-en{opacity:1;color:var(--geo-navy-500);font-weight:700}
.nav.solid .brand-ko,.nav.solid .brand{color:var(--geo-navy-900)}

/* 문의 블록의 CTA 버튼이 하단 밴드에 바로 붙어 잘려 보인다 */
.foot .foot-top{padding-bottom:clamp(40px,4vw,64px)}


/* ════════════════════════════════════════════
   통합본 추가 블록
   ════════════════════════════════════════════ */

/* ── 계산기 섹션 ── */
.calc-sec{background:var(--geo-navy-050);border-bottom:1px solid var(--color-border);padding-block:clamp(64px,8vw,120px)}
.calc-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,6vw,96px);align-items:stretch}
/* 왼쪽 마지막 문단을 폼 바닥선에 붙인다 — 계산 전에도 좌우 아래끝이 같다 */
.calc-lead{display:flex;flex-direction:column}
.calc-lead .calc-basis{margin-top:auto}
.calc-lead h2{font-size:clamp(30px,2.9vw,46px);font-weight:var(--w-head);line-height:1.24;letter-spacing:-.02em}
.calc-lead>p{margin-top:var(--space-6);font-size:20px;color:var(--geo-navy-100);max-width:30ch;line-height:1.9;text-wrap:pretty}
.calc-basis{margin-top:var(--space-8);font-size:16px;line-height:1.8;color:var(--geo-navy-300);padding-left:var(--space-4);border-left:2px solid var(--color-border);border-left-color:rgba(255,255,255,.2)}
.parcel>div{background:var(--geo-navy-800);padding:var(--space-4)}
.ex-role{font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.06em;color:var(--color-primary)}
.ex-tag{margin-top:auto;padding-top:var(--space-6);font-size:var(--text-xs);color:var(--color-text-muted)}
.fear{margin-top:clamp(32px,4vw,56px);background:rgba(255,255,255,.06);color:var(--geo-white);padding:var(--space-8);border-radius:var(--radius-md);font-size:var(--text-base);line-height:1.8;border:1px solid rgba(255,255,255,.16)}
.fear b{display:block;font-size:var(--text-h3);font-weight:var(--w-head);margin-bottom:var(--space-3)}

/* ── 지주공동사업 ── */
.how{position:relative;overflow:hidden;background:var(--geo-navy-800);color:var(--geo-white);padding-block:clamp(72px,9vw,132px)}
.how-bg{position:absolute;inset:-8% 0;background-size:cover;background-position:center;opacity:.12;will-change:transform}
.how-in{position:relative;z-index:1}
.how-h{font-size:clamp(28px,3vw,46px);font-weight:var(--w-head);line-height:1.28;letter-spacing:-.02em;text-align:center;max-width:22ch;margin-inline:auto}

.quote-block{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,64px);margin-top:clamp(40px,5vw,72px);align-items:start}
.quote-block blockquote{background:var(--geo-navy-900);padding:var(--space-12) var(--space-8);border-radius:var(--radius-md)}
.q-label{font-size:var(--text-xs);color:var(--geo-navy-300);letter-spacing:.06em}
.q-body{margin-top:var(--space-8);font-size:clamp(24px,2.2vw,34px);font-weight:var(--w-head);line-height:1.4;color:var(--geo-white)}
.q-lead{font-size:var(--text-base);line-height:1.8;color:var(--geo-navy-100)}
.q-lead b{color:var(--geo-white);font-weight:var(--w-head)}
.q-rows{margin-top:var(--space-8);border-top:1px solid rgba(255,255,255,.16)}
.q-rows div{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--space-6);padding:var(--space-4) 0;border-bottom:1px solid rgba(255,255,255,.16)}
.q-rows dt{font-size:var(--text-sm);color:var(--geo-white);font-weight:var(--w-head)}
.q-rows dd{font-size:var(--text-sm);color:var(--geo-navy-100)}
.how .caution{margin-top:clamp(32px,4vw,56px);padding-left:var(--space-6);border-left:4px solid var(--geo-slate-500);font-size:var(--text-sm);line-height:1.8;color:var(--geo-navy-100);max-width:78ch}
.how .caution b{color:var(--geo-white);font-weight:var(--w-head);margin-right:var(--space-1)}
.how-link{display:inline-block;margin-top:var(--space-8);min-height:var(--control-height-sm);padding:var(--space-3) var(--space-6);border:1px solid rgba(255,255,255,.45);border-radius:var(--radius-md);color:var(--geo-white);text-decoration:none;font-size:var(--text-base);font-weight:var(--w-head);transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.how-link:hover{background:rgba(255,255,255,.1);border-color:var(--geo-white)}
.steps li p{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--geo-navy-100);max-width:72ch}
.steps .key i{color:var(--color-primary)}
.work-head>div>p{margin-top:var(--space-4);font-size:var(--text-base);color:var(--geo-navy-100);max-width:52ch}
.work-head strong{color:var(--geo-white)}
.mosaic{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:var(--space-4);margin-top:clamp(32px,4vw,56px)}
.mosaic figure{position:relative;margin:0;overflow:hidden;background:var(--geo-navy-900)}
.mosaic figure:first-child{grid-column:span 2;grid-row:span 2}
.mosaic .shot{position:absolute;inset:0;background-size:cover;background-position:center}
.mosaic .shot.none{display:grid;place-items:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12)}
.mosaic .shot.none span{font-size:var(--text-xs);color:var(--geo-navy-300)}
.mosaic figcaption{position:absolute;left:0;right:0;bottom:0;padding:var(--space-10) var(--space-4) var(--space-4);background:linear-gradient(180deg,transparent,rgba(6,24,42,.55) 34%,rgba(6,24,42,.96) 78%)}
.mosaic b{display:block;font-size:var(--text-base);font-weight:var(--w-head);color:var(--geo-white);line-height:1.35;text-shadow:0 1px 10px rgba(6,24,42,.85)}
.mosaic figure:first-child b{font-size:var(--text-h3)}
.mosaic p{margin-top:var(--space-1);font-size:var(--text-xs);color:var(--geo-navy-100);text-shadow:0 1px 8px rgba(6,24,42,.85)}
.mosaic .tags{display:flex;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap}
.mosaic .tag{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border:1px solid rgba(255,255,255,.42);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--geo-white)}
.briefs{width:100%;border-collapse:collapse;margin-top:var(--space-8);table-layout:fixed;min-width:640px}
.briefs th,.briefs td{padding:var(--space-4) var(--space-4) var(--space-4) 0;text-align:left;border-bottom:1px solid rgba(255,255,255,.16);vertical-align:baseline}
.briefs thead th{font-size:var(--text-xs);font-weight:var(--w-head);color:var(--geo-navy-300);border-bottom-color:rgba(255,255,255,.5)}
.briefs tbody td{font-size:var(--text-base);color:var(--geo-navy-100)}
.briefs tbody td:first-child{color:var(--geo-white);font-weight:var(--w-head)}

/* ── 반응형 ── */
@media (max-width:1080px){
  .calc-grid{grid-template-columns:1fr;gap:var(--space-12)}
    .quote-block{grid-template-columns:1fr}
  .mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:minmax(150px,auto)}
  .mosaic figure:first-child{grid-column:span 2;grid-row:span 1}
}
@media (max-width:768px){
    .chain{grid-template-columns:1fr}
  .steps li{grid-template-columns:44px minmax(0,1fr);gap:var(--space-4)}
  .q-rows div{grid-template-columns:1fr;gap:var(--space-1)}
  .mosaic{grid-template-columns:1fr}
  .mosaic figure:first-child{grid-column:span 1}
  .calc-fields{grid-template-columns:1fr}
  .parcel{grid-template-columns:1fr}
}
@media (prefers-reduced-motion: reduce){
  .hero-media>video{display:none}
  .hero{background-image:url('../assets/video/x-veo-poster-v2.jpg');background-size:cover;
    background-position:center}
  .slide{transition:none}
}


/* ── 사업영역 ── */
.biz{padding-block:clamp(72px,7vw,116px);border-bottom:0;position:relative;overflow:hidden;background:var(--geo-navy-900);color:var(--geo-white)}
.sec-fill{margin-top:var(--space-4);font-size:var(--text-lg,22px);color:var(--color-text-muted);max-width:56ch}
.biz-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:var(--space-12);border-top:1px solid var(--color-border)}
.biz-cols article{padding:var(--space-8) var(--space-8) var(--space-8) 0;border-right:1px solid var(--color-border)}
.biz-cols article:last-child{border-right:0}
.biz-cols article:not(:first-child){padding-left:var(--space-8)}
.biz-k{font-size:var(--text-h3);font-weight:var(--w-head);color:var(--color-primary)}
.biz-cols b{display:block;margin:var(--space-3) 0 var(--space-3);font-size:var(--text-h3);font-weight:var(--w-head);line-height:1.35}
.biz-cols article p:last-child{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.75}

.biz-sub{margin-top:clamp(40px,4vw,64px);font-size:var(--text-h2);font-weight:var(--w-head)}
.fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--color-border);border:1px solid var(--color-border);margin-top:var(--space-8)}
.field{background:var(--color-bg-elevated);padding:var(--space-8);text-decoration:none;color:inherit;display:flex;flex-direction:column;transition:background var(--duration-state) var(--ease-out)}
.field:hover{background:var(--color-primary-subtle)}
.field b{font-size:var(--text-h3);font-weight:var(--w-head)}
.field p{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.75}
.field-go{margin-top:auto;padding-top:var(--space-6);font-size:var(--text-xs);font-weight:var(--w-head);color:var(--color-primary)}
.field:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:-3px}

.how-kicker{text-align:center;font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.1em;color:var(--geo-navy-300);margin-bottom:var(--space-4)}

@media (max-width:1080px){
  .biz-cols{grid-template-columns:1fr}
  .biz-cols article{border-right:0;border-bottom:1px solid var(--color-border);
    padding:var(--space-6) 0}
  .biz-cols article:not(:first-child){padding-left:0}
  .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:768px){ .fields{grid-template-columns:1fr} }


/* ── 섹션 배경 영상 ──
   화면에 들어올 때만 재생하고 나가면 멈춘다. 모바일·모션최소화에서는 poster 만 쓴다. */
.secvid{width:100%;height:100%;object-fit:cover}
@media (max-width:768px){
  .biz{background-image:url('../assets/video/b-rise-poster.jpg');background-size:cover;
    background-position:center}
  .how{background-image:url('../assets/video/d-grid-poster.jpg');background-size:cover;
    background-position:center}
  .biz-in,.how-in{position:relative;z-index:1}
}
@media (prefers-reduced-motion: reduce){ .secvid{display:none} }


/* ── 수치 밴드 ──
   숫자가 주인공이다. tabular-nums 로 자리를 고정하고 단위는 작게 붙인다. */
.figures{background:var(--geo-navy-900);color:var(--geo-white);padding-block:clamp(40px,4vw,64px)}
.fig-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
.fig{padding:var(--space-4) var(--space-6) var(--space-4) 0;border-right:1px solid rgba(255,255,255,.16)}
.fig:last-child{border-right:0}
.fig:not(:first-child){padding-left:var(--space-8)}
.fig-n{display:flex;align-items:baseline;gap:3px}
.fig-n b{font-size:clamp(46px,4.6vw,72px);font-weight:var(--w-display);color:var(--geo-white);font-variant-numeric:tabular-nums;letter-spacing:-.035em;line-height:1}
.fig-n span{font-size:var(--text-lg,22px);font-weight:var(--w-body);color:var(--geo-navy-300)}
.fig-l{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.6}

@media (max-width:1080px){
  .fig-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6) 0}
  .fig:nth-child(2){border-right:0}
  .fig:nth-child(3),.fig:nth-child(4){padding-top:var(--space-6);
    border-top:1px solid rgba(255,255,255,.16)}
  .fig:nth-child(3){padding-left:0}
}
@media (max-width:768px){
  .fig-grid{grid-template-columns:1fr}
  .fig{border-right:0;border-top:1px solid rgba(255,255,255,.16);
    padding:var(--space-6) 0 0 !important}
  .fig:first-child{border-top:0;padding-top:0 !important}
}


/* ════════════════════════════════════════════
   페이지 테마 락 — 전체를 다크 하나로 통일한다.
   흰 면과 다크가 교대하면 스크롤할 때마다 다른 사이트처럼 보인다.
   폼 입력만 밝게 남긴다(가독성).
   ⚠️ color 를 반드시 다시 선언한다. 토큰만 바꾸면 body 에서 계산된 색이 그대로 상속된다.
   ════════════════════════════════════════════ */
body{background:var(--geo-navy-900);color:var(--geo-white)}

.calc-sec,.team-sec,.steps-sec,.ask{background:var(--geo-navy-900);color:var(--geo-white);--color-text:var(--geo-white);--color-text-muted:var(--geo-navy-100);--color-border:rgba(255,255,255,.14);--color-border-strong:rgba(255,255,255,.28);--color-bg-elevated:rgba(255,255,255,.04);--color-primary-subtle:rgba(255,255,255,.07)}

/* 제목·본문 */
.calc-sec h2,.team-sec h2,.steps-sec h2,.ask h2,
.team-head h2,.calc-lead h2,.ask-copy h2{color:var(--geo-white)}
.sec-sub,.sec-fill,.calc-lead>p,.ask-copy>p,.team-head>p{color:var(--geo-navy-100)}
.team-eyebrow,.calc-kicker{color:var(--geo-navy-300)}
.f-input::placeholder{color:var(--geo-ink-mute)}

/* 총괄 체계 */
.pcard{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.16)}
.pshot{background:var(--geo-navy-900)}
.pnum b{color:var(--geo-white)}
.pnum span,.ptag{color:var(--geo-navy-300)}
.prole{color:var(--geo-navy-300)}
.pcard b,.team-rest b{color:var(--geo-white)}
.pdesc,.team-rest p:last-child{color:var(--geo-navy-100)}
.team-rest{border-top-color:rgba(255,255,255,.16)}
.team-rest article{border-right-color:rgba(255,255,255,.16)}
.team-rest article::before{background:var(--geo-white)}
.steps li:hover{background:rgba(255,255,255,.05)}
.steps .key i,.steps .key b{color:var(--geo-white)}
.ask-contact dd,.ask-contact a{color:var(--geo-white)}
.ask-contact a{border-bottom-color:rgba(255,255,255,.3)}
.ask-contact a:hover{color:var(--geo-white);border-bottom-color:var(--geo-white)}

/* 밝은 면 전용이던 버튼을 다크에 맞춘다 */
.calc-go,.ask-go{background:var(--geo-white);color:var(--geo-navy-900)}
.calc-go:hover,.ask-go:hover{background:var(--geo-navy-100)}
.calc-go::after,.ask-go::after{background:var(--geo-navy-900)}

/* 배경 영상 위 섹션은 조금 더 눌러 글자를 살린다 */
.biz-bg{opacity:.5;position:absolute;inset:0;background-size:cover;background-position:center;will-change:transform;width:100%;height:100%;object-fit:cover}


/* ── 총괄 체계 : 사진 없이 행으로. 들어올 때 순차로 올라온다 ── */
.crew{list-style:none;margin-top:clamp(40px,4vw,64px);border-top:1px solid rgba(255,255,255,.16)}
.crew li{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:clamp(16px,3vw,48px);align-items:center;padding:clamp(20px,2.4vw,34px) 0;border-bottom:1px solid rgba(255,255,255,.16);position:relative}
/* 좌에서 우로 그어지는 강조선 */
.crew li::after{content:'';position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:var(--geo-white);transform:scaleX(0);transform-origin:0 50%;transition:transform var(--duration-reveal) var(--ease-out)}
.crew li:hover::after{transform:scaleX(1)}
.crew-no{font-size:var(--text-sm);font-weight:var(--w-num);color:var(--geo-navy-300);font-variant-numeric:tabular-nums;letter-spacing:.04em;transition:color var(--duration-state) var(--ease-out),transform var(--duration-state) var(--ease-out)}
.crew li:hover .crew-no{color:var(--geo-white);transform:translateX(4px)}
.crew-role{font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.08em;color:var(--geo-navy-300)}
.crew-main b{display:block;margin:var(--space-2) 0 var(--space-3);font-size:clamp(24px,2.2vw,34px);font-weight:var(--w-head);color:var(--geo-white);letter-spacing:-.01em;line-height:1.2}
.crew-desc{font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.8;max-width:62ch}
.crew-fig{display:flex;align-items:baseline;gap:2px;flex:none}
.crew-fig b{font-size:clamp(30px,2.6vw,42px);font-weight:var(--w-display);color:var(--geo-white);font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1}
.crew-fig span{font-size:var(--text-sm);color:var(--geo-navy-300)}

@media (max-width:768px){
  .crew li{grid-template-columns:44px minmax(0,1fr);gap:var(--space-4)}
  .crew-fig{grid-column:2;margin-top:var(--space-3)}
}


/* ── PM 수행 업무 : 2열 · 국문 + 영문 병기 ── */
.scope-sec{background:var(--geo-navy-800);color:var(--geo-white);padding-block:clamp(64px,6.5vw,104px);--color-text:var(--geo-white);--color-text-muted:var(--geo-navy-100)}
.scope-sec h2{color:var(--geo-white)}
.scope-sec .team-head>p{color:var(--geo-navy-100)}
.scope{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,4vw,64px);margin-top:clamp(40px,4vw,64px)}
.scope-k{font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.08em;color:var(--geo-navy-300);padding-bottom:var(--space-4);border-bottom:1px solid rgba(255,255,255,.24)}
.scope ul{list-style:none}
.scope li{padding:var(--space-5) var(--space-6) var(--space-5) 0;position:relative;border-bottom:1px solid rgba(255,255,255,.12);transition:background var(--duration-state) var(--ease-out),
             padding-left var(--duration-state) var(--ease-out)}
.scope li:hover{background:rgba(255,255,255,.06);padding-left:var(--space-4)}
.scope li b{display:block;font-size:var(--text-base);font-weight:var(--w-head);color:var(--geo-white);line-height:1.4}
.scope li span{display:block;margin-top:2px;font-size:var(--text-xs);font-weight:var(--w-label);letter-spacing:.04em;color:var(--geo-navy-300)}
@media (max-width:768px){ .scope{grid-template-columns:1fr;gap:var(--space-8)} }
.nav-item{position:relative}
.nav-item>a{display:inline-flex;align-items:center;height:var(--gnb-height)}
.has-sub>a::after{content:'';flex:none;width:6px;height:6px;margin-left:8px;margin-top:-3px;border-right:1.2px solid currentColor;border-bottom:1.2px solid currentColor;transform:rotate(45deg);opacity:.55;transition:transform var(--duration-state) var(--ease-out)}
.has-sub:hover>a::after{margin-top:3px;transform:rotate(225deg)}
.submenu{position:absolute;left:50%;top:100%;transform:translateX(-50%) translateY(-6px);display:flex;flex-direction:column;min-width:190px;padding:var(--space-3) 0;background:var(--geo-navy-900);border:1px solid rgba(255,255,255,.16);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-state) var(--ease-out),
             transform var(--duration-state) var(--ease-out),
             visibility var(--duration-state)}
.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.submenu a{padding:var(--space-3) var(--space-6);font-size:var(--text-sm);color:var(--geo-navy-100);white-space:nowrap;transition:background var(--duration-state) var(--ease-out),color var(--duration-state) var(--ease-out)}
.submenu a:hover{background:rgba(255,255,255,.08);color:var(--geo-white)}
.submenu a::after{display:none}
/* 내비가 흰색으로 바뀌면 드롭다운도 함께 흰색이 된다 */
.nav.solid .submenu{background:var(--color-bg-elevated);border-color:var(--color-border);
  box-shadow:0 12px 34px rgba(6,24,42,.14)}
.nav.solid .submenu a{color:var(--color-text)}
.nav.solid .submenu a:hover{background:var(--geo-navy-050);color:var(--geo-navy-900)}
.foot-top{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,2fr) minmax(0,2fr) minmax(0,3fr);gap:clamp(24px,4vw,64px);padding-block:clamp(56px,6vw,88px);align-items:start}
.foot-desc{margin-top:var(--space-8);font-size:var(--text-base);line-height:1.85;color:var(--geo-navy-100);max-width:34ch}
.foot-k{font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.08em;color:var(--geo-navy-300);padding-bottom:var(--space-4);border-bottom:1px solid rgba(255,255,255,.2);margin-bottom:var(--space-4)}
.foot-nav{display:flex;flex-direction:column}
.foot-nav a{font-size:var(--text-sm);color:var(--geo-navy-100);text-decoration:none;padding:var(--space-2) 0;position:relative;width:fit-content;transition:color var(--duration-state) var(--ease-out)}
.foot-nav a::after{content:'';position:absolute;left:0;bottom:4px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:0 50%;transition:transform var(--duration-state) var(--ease-out)}
.foot-nav a:hover{color:var(--geo-white)}
.foot-nav a:hover::after{transform:scaleX(1)}
.foot-tel{font-size:clamp(22px,1.8vw,28px);font-weight:var(--w-head);letter-spacing:-.01em}
.foot-tel a{color:var(--geo-white);text-decoration:none}
.foot-line{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.7}
.foot-line a{color:var(--geo-navy-100);text-decoration:none;transition:color var(--duration-state) var(--ease-out)}
.foot-line a:hover{color:var(--geo-white)}
.foot-cta{display:inline-flex;align-items:center;margin-top:var(--space-6);min-height:var(--control-height-sm);padding:var(--space-3) var(--space-6);border:1px solid rgba(255,255,255,.45);border-radius:var(--radius-md);color:var(--geo-white);text-decoration:none;font-size:var(--text-sm);font-weight:var(--w-head);transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.foot-cta:hover{background:rgba(255,255,255,.1);border-color:var(--geo-white)}

@media (max-width:1080px){
  .foot-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12) var(--space-8)}
}
@media (max-width:768px){
  .nav nav{gap:0}
  .nav-item>a{height:auto}
  .has-sub>a::after{display:none}
  .submenu{position:static;transform:none;opacity:1;visibility:visible;pointer-events:auto;
    border:0;background:none;padding:0 0 var(--space-2) var(--space-4);min-width:0}
  .submenu a{padding:var(--space-2) 0}
  .foot-top{grid-template-columns:1fr}
  .foot-band-in{flex-direction:column;align-items:flex-start;gap:var(--space-2)}
}
.briefs-scroll{overflow-x:auto;margin-top:var(--space-8)}

.biz-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,24,42,.9) 0%,rgba(28,67,100,.82) 45%,rgba(6,24,42,.92) 100%)}

.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.18);margin-top:clamp(40px,5vw,72px)}

.tile{position:relative;display:block;padding:var(--space-8);text-decoration:none;color:inherit;background:rgba(255,255,255,.07);transition:background var(--duration-state) var(--ease-out)}
.tile:hover{background:rgba(255,255,255,.16)}

/* 푸터 브랜드 — 락업 이미지는 여백이 많아 작아 보인다. 심볼 + 텍스트로 조립한다 */
.foot-mark{display:flex;align-items:center;gap:var(--space-5)}
.foot-mark img{height:64px;width:auto;display:block;flex:none}
.foot-name{font-size:clamp(26px,2.2vw,34px);font-weight:var(--w-head);color:var(--geo-white);letter-spacing:-.02em;line-height:1.1}
.foot-name em{font-style:normal;font-size:.62em;font-weight:var(--w-body);color:var(--geo-navy-100);margin-left:4px}
.foot-tag{margin-top:var(--space-2);font-size:var(--text-xs);font-weight:var(--w-label);letter-spacing:var(--tracking-wide);color:var(--geo-navy-300)}

/* 옛 --a 기반 노드 배치는 제거. JS 가 left/top 을 계산한다 */

.ring{fill:none;stroke:rgba(255,255,255,.18);stroke-width:1}

/* 궤도를 도는 빛 — 컨테이너만 돌린다. 점은 원이라 기울지 않는다. */
.orbit-spark{position:absolute;inset:0;pointer-events:none;animation:sparkspin 18s linear infinite}
.orbit-spark.s2{animation-duration:26s;animation-direction:reverse}
.orbit-spark i{position:absolute;left:50%;top:50%;width:7px;height:7px;border-radius:50%;background:#cfe4ff;box-shadow:0 0 10px 3px rgba(150,200,255,.75), 0 0 28px 8px rgba(90,150,220,.4);top:11.6%;transform:translate(-50%,-50%)}
.orbit-spark.s2 i{width:5px;height:5px;top:20%;transform:translate(-50%,-50%);box-shadow:0 0 8px 2px rgba(150,200,255,.6)}
@keyframes sparkspin{to{transform:rotate(360deg)}}
/* 섹션 전체 hover 로 궤도를 멈추면 어느 글자에 마우스를 둬도 정지한다. 계속 돌린다 */

.orbit-nodes button{position:relative;overflow:hidden;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;text-align:center;gap:3px;background:var(--geo-navy-900);border:1px solid rgba(255,255,255,.16);transition:background var(--duration-state) var(--ease-out),
             border-color var(--duration-state) var(--ease-out),
             box-shadow var(--duration-state) var(--ease-out)}
.orbit-nodes button:hover{background:var(--geo-navy-500);border-color:rgba(255,255,255,.5);box-shadow:0 0 34px rgba(60,120,190,.4)}
.orbit-nodes button[aria-pressed="true"]{background:var(--geo-navy-500);border-color:var(--geo-white);box-shadow:0 0 46px rgba(90,160,235,.6)}
/* 클릭 파문 */
.ripple{position:absolute;left:50%;top:50%;width:0;height:0;border-radius:50%;background:rgba(190,220,255,.5);transform:translate(-50%,-50%);pointer-events:none}
.orbit-nodes button.rip .ripple{animation:rip 620ms var(--ease-out)}
@keyframes rip{
  from{width:0;height:0;opacity:.7}
  to{width:230%;height:230%;opacity:0}}

.orbit-legend li{padding:var(--space-5) 0;border-bottom:1px solid rgba(255,255,255,.16)}
.calc-lede{font-size:24px !important;color:var(--geo-white) !important;line-height:1.6 !important;max-width:26ch !important}
.biz-in{position:relative;z-index:1}
.biz-eyebrow{font-size:var(--text-xs);font-weight:var(--w-label);letter-spacing:var(--tracking-wide);color:rgba(255,255,255,.72);text-transform:uppercase}

.biz-head{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,6vw,96px);align-items:start;margin-top:var(--space-8)}
.biz-head h2{font-size:clamp(38px,4.2vw,68px);font-weight:var(--w-head);line-height:1.16;letter-spacing:-.03em}
.biz-head>p{margin-top:var(--space-3);font-size:var(--text-base);line-height:1.85;color:var(--geo-navy-100)}

.biz-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,48px);margin-top:clamp(56px,7vw,110px)}
/* 박스로 가두지 않는다 - 위에 짧은 선 하나만 긋는다 */
.bcard{display:block;text-decoration:none;color:inherit;padding-top:var(--space-6);position:relative}
.bcard-rule{position:absolute;top:0;left:0;width:56px;height:1px;background:rgba(255,255,255,.5);transition:width var(--duration-reveal) var(--ease-out),background var(--duration-state) var(--ease-out)}
.bcard:hover .bcard-rule{width:100%;background:var(--geo-white)}
.bcard-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}
.bcard b{font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white)}
/* 원형 화살표 */
.bcard-go{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.34);display:grid;place-items:center;position:relative;transition:background var(--duration-state) var(--ease-out),border-color var(--duration-state) var(--ease-out)}
.bcard-go::before,.bcard-go::after{content:'';position:absolute;background:var(--geo-white);transition:transform var(--duration-state) var(--ease-out)}
.bcard-go::before{width:13px;height:1px}
.bcard-go::after{width:7px;height:7px;border-right:1px solid var(--geo-white);border-top:1px solid var(--geo-white);background:none;transform:translateX(3px) rotate(45deg)}
.bcard:hover .bcard-go{background:rgba(255,255,255,.12);border-color:var(--geo-white)}
.bcard:hover .bcard-go::before{transform:translateX(3px)}
.bcard:hover .bcard-go::after{transform:translateX(6px) rotate(45deg)}
.bcard p{margin-top:var(--space-6);font-size:var(--text-sm);line-height:1.85;color:var(--geo-navy-100)}
.bcard:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:6px}

/* 시행·대행·PM 은 한 줄로 눕힌다 */
.roles-line{list-style:none;display:flex;flex-wrap:wrap;gap:clamp(24px,5vw,88px);margin-top:clamp(56px,7vw,104px);padding-top:var(--space-8);border-top:1px solid rgba(255,255,255,.16)}
.roles-line b{font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white);margin-right:var(--space-3)}
.roles-line span{font-size:var(--text-sm);color:var(--geo-navy-300)}

@media (max-width:1080px){
  .biz-head{grid-template-columns:1fr;gap:var(--space-6)}
  .biz-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:768px){
  .biz-grid{grid-template-columns:1fr;gap:var(--space-8)}
  .roles-line{flex-direction:column;gap:var(--space-4)}
}
.biz-h{margin-top:var(--space-4);font-size:clamp(34px,3.8vw,58px);font-weight:var(--w-head);line-height:1.2;letter-spacing:-.025em}
.tile b{display:block;font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white)}
.tile p{margin-top:var(--space-3);font-size:var(--text-sm);line-height:1.8;color:rgba(255,255,255,.82)}
.tile-go{position:absolute;right:var(--space-6);top:var(--space-8);width:22px;height:1px;background:var(--geo-white);opacity:0;transform:translateX(-8px);transition:opacity var(--duration-state) var(--ease-out),transform var(--duration-state) var(--ease-out)}
.tile-go::after{content:'';position:absolute;right:0;top:-4px;width:8px;height:8px;border-right:1px solid var(--geo-white);border-top:1px solid var(--geo-white);transform:rotate(45deg)}
.tile:hover .tile-go{opacity:1;transform:translateX(0)}
.tile:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:-3px}

/* 하단 풀폭 바 */
.biz-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);margin-top:var(--space-4);padding:var(--space-6) var(--space-8);background:var(--geo-navy-900);color:var(--geo-white);text-decoration:none;font-size:var(--text-lg,22px);font-weight:var(--w-head);border:1px solid rgba(255,255,255,.18);transition:background var(--duration-state) var(--ease-out)}
.biz-bar:hover{background:var(--geo-black,#0A0A0A)}
.biz-bar i{flex:none;width:26px;height:1px;background:var(--geo-white);position:relative;transition:transform var(--duration-state) var(--ease-out)}
.biz-bar i::after{content:'';position:absolute;right:0;top:-5px;width:10px;height:10px;border-right:1px solid var(--geo-white);border-top:1px solid var(--geo-white);transform:rotate(45deg)}
.biz-bar:hover i{transform:translateX(6px)}
.biz-bar:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:2px}

@media (max-width:768px){
  .biz-bar{font-size:var(--text-base);padding:var(--space-5) var(--space-6);flex-wrap:wrap;word-break:keep-all;line-height:1.4}
  .work .work-head h2,.work .work-head p{overflow-wrap:anywhere;word-break:keep-all;min-width:0}
}
.team-sec::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.45;background:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 132px);animation:gridflow 26s linear infinite}
@keyframes gridflow{to{transform:translateX(-132px)}}

.orbit{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,640px) minmax(0,1fr);gap:clamp(24px,4vw,72px);align-items:center;margin-top:clamp(32px,3vw,48px)}
.orbit-stage{position:relative;width:100%;max-width:620px;aspect-ratio:1;margin-inline:auto}

/* 궤도 링 — 들어올 때 그려진다 */
.orbit-rings{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ring.r1{stroke-dasharray:1496;stroke-dashoffset:1496;transition:stroke-dashoffset 2200ms var(--ease-out)}
.ring.r2{stroke:rgba(255,255,255,.1);stroke-dasharray:1169;stroke-dashoffset:1169;transition:stroke-dashoffset 2200ms var(--ease-out) 300ms}
.team-sec.lit .ring{stroke-dashoffset:0}

/* 중앙 코어 */
.orbit-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.86);width:41%;aspect-ratio:1;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);background:radial-gradient(circle at 50% 42%, #26507a 0%, #14375c 52%, #0b2340 100%);box-shadow:0 0 0 1px rgba(255,255,255,.22), 0 0 68px rgba(60,120,190,.42);opacity:0;transition:opacity 900ms var(--ease-out),transform 900ms var(--ease-out)}
.team-sec.lit .orbit-core{opacity:1;transform:translate(-50%,-50%) scale(1)}
.orbit-core img{width:34%;height:auto;display:block}
.orbit-core b{font-size:clamp(17px,1.5vw,22px);font-weight:var(--w-head);color:var(--geo-white)}
.orbit-core span{font-size:var(--text-xs);font-weight:var(--w-label);letter-spacing:var(--tracking-wide);color:rgba(255,255,255,.66)}

/* 궤도 위 노드 5개 */
.orbit-nodes{list-style:none;position:absolute;inset:0}
/* 좌표는 JS 가 left/top 으로 직접 넣는다. CSS 는 중심 정렬과 등장만 맡는다 */
.orbit-nodes li{position:absolute;left:50%;top:50%;width:26%;aspect-ratio:1;transform:translate(-50%,-50%) scale(.72);opacity:0;transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out)}
.team-sec.lit .orbit-nodes li{opacity:1;transform:translate(-50%,-50%) scale(1)}
.orbit-nodes li:nth-child(1){transition-delay:600ms}
.orbit-nodes li:nth-child(2){transition-delay:760ms}
.orbit-nodes li:nth-child(3){transition-delay:920ms}
.orbit-nodes li:nth-child(4){transition-delay:1080ms}
.orbit-nodes li:nth-child(5){transition-delay:1240ms}
.orbit-nodes a{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;text-decoration:none;text-align:center;gap:2px;background:var(--geo-navy-900);border:1px solid rgba(255,255,255,.16);transition:background var(--duration-state) var(--ease-out),
             border-color var(--duration-state) var(--ease-out),
             box-shadow var(--duration-state) var(--ease-out)}
.orbit-nodes a:hover{background:var(--geo-navy-500);border-color:rgba(255,255,255,.5);box-shadow:0 0 34px rgba(60,120,190,.4)}
.orbit-nodes i{font-style:normal;font-size:var(--text-xs);font-weight:var(--w-num);color:var(--geo-navy-300);letter-spacing:.14em}
.orbit-nodes b{font-size:clamp(13px,1.05vw,16px);font-weight:var(--w-head);color:var(--geo-white);line-height:1.25}
.orbit-nodes span{font-size:var(--text-xs);color:var(--geo-navy-100)}
.orbit-nodes a:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:3px}

/* 우측 설명 */
.orbit-legend{list-style:none;border-top:1px solid rgba(255,255,255,.16)}
.orbit-legend b{display:block;font-size:var(--text-base);font-weight:var(--w-head);color:var(--geo-white)}
.orbit-legend span{display:block;margin-top:var(--space-2);font-size:var(--text-sm);color:var(--geo-navy-100);line-height:1.75}

@media (max-width:1180px){
  .orbit{grid-template-columns:1fr;gap:var(--space-12)}
  .orbit-stage{max-width:520px}
}
/* 작은 화면에서는 원형 배치가 겹친다 — 목록으로 되돌린다 */
@media (max-width:760px){
  .orbit-stage{max-width:min(88vw,380px)}
  .orbit-nodes button b{font-size:14px}
  .orbit-nodes button span{font-size:10px}
  .orbit-core b{font-size:15px}
  .orbit-legend{border-top:0}
}
@media (prefers-reduced-motion: reduce){
  .team-sec::before{animation:none}
  .ring{stroke-dashoffset:0;transition:none}
  .orbit-core{opacity:1;transform:translate(-50%,-50%);transition:none}
  .orbit-nodes li{opacity:1;transition:none;transform:translate(-50%,-50%)}
}

/* 우측 : 선택한 총괄만 크게 보여준다 */
.orbit-panel{border-left:2px solid rgba(255,255,255,.2);padding-left:clamp(20px,2.4vw,36px);min-height:230px}
.op-role{font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.08em;color:var(--geo-navy-300)}
.op-name{display:block;margin:var(--space-3) 0 var(--space-6);font-size:clamp(30px,3vw,46px);font-weight:var(--w-head);color:var(--geo-white);letter-spacing:-.02em;line-height:1.15}
.op-desc{font-size:var(--text-base);line-height:1.9;color:var(--geo-navy-100);max-width:34ch}
.op-hint{margin-top:var(--space-8);font-size:var(--text-xs);color:var(--geo-navy-300)}
/* 교체될 때 살짝 밀려 들어온다 */
.orbit-panel.swap .op-role,.orbit-panel.swap .op-name,.orbit-panel.swap .op-desc{animation:opin 520ms var(--ease-out) backwards}
.orbit-panel.swap .op-name{animation-delay:60ms}
.orbit-panel.swap .op-desc{animation-delay:120ms}
@keyframes opin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ══════════════════════════════════════════════════════════
   복구 마무리 — 옛 판본이 새 규칙을 덮던 것을 바로잡는다 (2026-08-25)
   ══════════════════════════════════════════════════════════ */

/* 서브메뉴 : .nav nav a(0,2,1) 가 .submenu a(0,1,1) 를 이겨 좌우 패딩이 죽었다 */
.nav .submenu a{display:block;padding:12px 24px;font-size:17px;line-height:1.5;color:rgba(255,255,255,.86);text-align:left;white-space:nowrap;border-bottom:0}
.nav .submenu a:hover{background:rgba(255,255,255,.08);color:var(--geo-white)}

/* 사업영역 : 배경 0.5 + 베일 .9 가 겹쳐 뿌옇다. 사진은 살리고 베일로만 누른다 */
.biz .biz-bg{opacity:.5}
.biz .biz-veil{background:linear-gradient(to bottom,rgba(6,24,42,.90) 0%,rgba(6,24,42,.78) 45%,rgba(6,24,42,.94) 100%)}

/* 수행 현장 : 옛 .work-sub(26px) 가 새 제목 규칙을 덮었다 */
.work .work-sub{margin-top:clamp(56px,5.5vw,80px);margin-bottom:clamp(24px,2.4vw,32px);font-size:clamp(28px,3vw,42px);font-weight:600;line-height:1.28;letter-spacing:-.015em;color:var(--geo-white)}
.work .work-bg{inset:0;opacity:.16}

/* 푸터 로고 : 심볼과 워드마크가 겹쳐 보인다 */
.foot .foot-mark{display:flex;align-items:center;gap:20px;margin-bottom:24px}
.foot .foot-mark>div{min-width:0}
.foot .foot-name{margin:0;font-size:32px;font-weight:700;letter-spacing:-.025em;color:var(--geo-white);line-height:1.2}
.foot .foot-name em{font-style:normal;font-size:20px;font-weight:600;color:var(--geo-navy-100)}
.foot .foot-tag{margin:8px 0 0;font-family:'Outfit',sans-serif;font-size:16px;letter-spacing:.07em;color:var(--geo-navy-300);line-height:1.35}
.foot .foot-desc{margin:0;font-size:17px;line-height:1.8;color:var(--geo-navy-100);max-width:34ch}

/* Who We Are 머리 — 원본은 제목 7 : 설명 5 의 2열 그리드였다 */
.team-sec .team-eyebrow{font-family:'Outfit',sans-serif;font-size:var(--text-xs);font-weight:var(--w-head);letter-spacing:.14em;text-transform:none;color:var(--geo-navy-300);margin:0 0 var(--space-4)}
.team-sec .team-head{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,6vw,96px);align-items:start;margin-top:var(--space-6);max-width:none}
.team-sec .team-head h2{font-size:clamp(32px,3.4vw,52px);font-weight:var(--w-head);line-height:1.2;letter-spacing:-.02em;margin:0;color:var(--geo-white)}
.team-sec .team-head>p{margin:0;font-size:var(--text-base);line-height:1.85;color:var(--geo-navy-100)}
@media (max-width:900px){
  .team-sec .team-head{grid-template-columns:1fr;gap:var(--space-6)}
}

/* 수행 현장 머리 — 제목 / 수치 / 전체보기 를 한 줄에 벌린다 */
.work .work-head{display:flex;align-items:flex-end;justify-content:space-between;gap:clamp(24px,4vw,64px);flex-wrap:wrap}
.work .work-head>div:first-child{flex:1 1 420px;min-width:0}
.work .work-head h2{font-size:clamp(28px,2.8vw,44px);font-weight:var(--w-head);line-height:1.24;letter-spacing:-.02em;margin:0;color:var(--geo-white)}
.work .work-head>div>p{margin-top:var(--space-4);font-size:var(--text-base);line-height:1.8;color:var(--geo-navy-100)}
.work .work-head strong{color:var(--geo-white);font-weight:600}
.work .work-count{display:flex;align-items:baseline;gap:var(--space-2);margin:0}
.work .work-count b{font-family:'Outfit',sans-serif;font-size:clamp(48px,5vw,74px);font-weight:600;color:var(--geo-white);font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1}
.work .work-count span{font-size:22px;color:var(--geo-navy-300)}
.work .work-all{margin-top:0;align-self:flex-end}

/* 모자이크 타일 — 호버 확대와 캡션, 로고 타일 글자 */
.work .mosaic{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(170px,14.5vw,210px);gap:var(--space-4);margin-top:clamp(32px,4vw,56px)}
.work .mosaic figure{position:relative;margin:0;overflow:hidden;background:var(--geo-navy-900)}
.work .mosaic figure:first-child{grid-column:span 2;grid-row:span 2}
.work .mosaic .shot{width:100%;height:100%;background-size:cover;background-position:center;transition:transform 900ms var(--ease-out)}
.work .mosaic figure:hover .shot{transform:scale(1.06)}
.work .mosaic figcaption{position:absolute;left:0;right:0;bottom:0;padding:18px 20px;z-index:1;background:linear-gradient(to top,rgba(6,24,42,.94) 0%,rgba(6,24,42,.55) 60%,rgba(6,24,42,0) 100%)}
.work .mosaic figcaption b{display:block;font-size:19px;font-weight:600;color:var(--geo-white);line-height:1.35}
.work .mosaic figcaption p{margin:5px 0 0;font-size:15px;color:var(--geo-navy-100)}

/* 조감도 없는 현장 — 심볼 타일. 글자가 심볼에 묻히지 않게 */
/* 조감도 없는 칸은 사진 칸보다 뒤로 물러나야 한다.
   밝게 하면 빈 칸이 오히려 더 튄다 */
.work .mosaic .plate{display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--geo-navy-900);transition:background 480ms var(--ease-out)}
.work .mosaic .plate:hover{background:var(--geo-navy-800)}
.work .mosaic .plate-mark{position:absolute;left:50%;top:50%;width:auto;height:76%;transform:translate(-50%,-50%);opacity:.07;pointer-events:none;transition:opacity 480ms var(--ease-out)}
.work .mosaic .plate:hover .plate-mark{opacity:.13}
.work .mosaic .plate-in{position:relative;z-index:1;padding:22px;text-align:center;width:100%}
.work .mosaic .plate-in b{display:block;font-size:18px;font-weight:600;color:var(--geo-white);line-height:1.4}
.work .mosaic .plate-in p{margin:6px 0 0;font-size:15px;color:var(--geo-navy-100)}
.work .mosaic .tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px;justify-content:center}
.work .mosaic figcaption .tags{justify-content:flex-start}
.work .mosaic .tag{padding:4px 10px;font-size:13px;font-weight:500;color:var(--geo-white);background:rgba(6,24,42,.62);border:1px solid rgba(255,255,255,.26)}
@media (max-width:760px){
  /* 좁은 화면은 1열 — 2열이면 캡션이 타일을 덮는다 */
  .work .mosaic{grid-template-columns:1fr;grid-auto-rows:minmax(190px,auto)}
  .work .mosaic figure:first-child{grid-column:span 1;grid-row:span 1}
  .work .mosaic figcaption{padding:12px 14px}
  .work .mosaic figcaption b{font-size:16px}
  .work .mosaic figcaption p{font-size:13px;margin-top:3px}
  .work .mosaic .plate-in b{font-size:16px}
  .work .mosaic .plate-in p{font-size:13px}
  .work .mosaic .tag{padding:3px 8px;font-size:12px}
}
@media (prefers-reduced-motion:reduce){
  .work .mosaic figure:hover .shot{transform:none}
}
.biz .tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.14)}
@media (max-width:1080px){.biz .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:768px){.biz .tiles{grid-template-columns:1fr}}
.biz .tile{position:relative;display:block;padding:var(--space-8);text-decoration:none;color:inherit;background:rgba(255,255,255,.07);-webkit-backdrop-filter:none;backdrop-filter:none;transition:background var(--duration-state) var(--ease-out)}
.biz .tile:hover{background:rgba(255,255,255,.16);transform:none}
.biz .tile b{display:block;font-size:var(--text-h3);font-weight:var(--w-head);color:var(--geo-white)}
.biz .tile p{margin-top:var(--space-3);font-size:var(--text-sm);line-height:1.8;color:var(--geo-navy-100)}

/* 섹션 아이브로우 — Who We Are · Our Business 와 같은 규칙 */
.work .work-head .work-eyebrow,.calc-sec .calc-lead .calc-eyebrow{
  font-family:'Outfit',sans-serif;font-size:14px;font-weight:600;
  letter-spacing:.14em;color:var(--geo-navy-300);margin:0 0 var(--space-4);
}


/* ── 섹션 제목 규칙 통일 ─────────────────────────────────────
   원본은 섹션마다 44/46/52/58 로 제각각이었다. 한 값으로 맞춘다.
   마무리 CTA(76px)만 페이지를 닫는 자리라 크게 둔다 */
.team-sec .team-head h2,
.biz .biz-h,
.work .work-head h2,
.calc-sec .calc-lead h2{
  font-size:clamp(30px,3.4vw,52px);font-weight:var(--w-head);
  line-height:1.22;letter-spacing:-.02em;
}

/* 손가락이 닿는 크기 — 토지주 연령대라 44px 아래로 내려가지 않게 한다 */
@media (max-width:900px){
  .nav .brand,.nav .nav-cta,.foot-nav a,.foot-tel a,.foot-line a,
  .whois-go,.biz-bar,.work-all{min-height:44px}
  .foot-nav a,.foot-tel a,.foot-line a,.whois-go,.work-all{display:inline-flex;align-items:center}
  .foot-nav a{padding-block:0}
}

/* ── 모바일 메뉴 ──────────────────────────────────────
   메인은 #nav-menu 의 hidden 속성, 서브는 body.nav-open 으로 연다.
   두 방식을 다 받는다. */
@media (max-width:768px){
  .nav{position:fixed}
  .nav-in{position:relative;gap:var(--space-4)}
  .nav-toggle{display:inline-flex;align-items:center;justify-content:center;
    width:44px;height:44px;font-size:24px;line-height:1}
  .nav nav{position:absolute;top:100%;left:0;right:0;margin:0;
    flex-direction:column;align-items:stretch;gap:0;
    padding:8px clamp(20px,5vw,28px) 20px;
    background:var(--geo-navy-900);border-top:1px solid rgba(255,255,255,.14);
    box-shadow:0 18px 40px rgba(6,24,42,.34);max-height:calc(100dvh - var(--gnb-height));overflow-y:auto}
  .nav nav[hidden]{display:none}
  body.subpage .nav nav{display:none}
  body.subpage.nav-open .nav nav{display:flex}
  .nav .nav-item,.nav .nav-item.has-sub{display:block;width:100%}
  .nav nav a{display:flex;align-items:center;min-height:56px;padding:0;font-size:19px;font-weight:600;
    color:var(--geo-white);border-bottom:1px solid rgba(255,255,255,.12)}
  /* 하위가 있는 상위 항목은 섹션 라벨로 — 위계를 크기·색으로 가른다 */
  .nav .has-sub>a{min-height:0;padding:26px 0 10px;font-size:13px;font-weight:600;letter-spacing:.12em;
    color:var(--geo-navy-300);border-bottom:0;pointer-events:none}
  .nav .submenu{position:static;display:block;opacity:1;visibility:visible;transform:none;
    background:transparent;border:0;box-shadow:none;padding:0;min-width:0}
  .nav .submenu a{display:flex;align-items:center;min-height:54px;padding:0 0 0 4px;font-size:19px;font-weight:600;
    color:var(--geo-white);border-bottom:1px solid rgba(255,255,255,.1)}
  .nav .submenu a:last-child{border-bottom:0}
  .nav .nav-item:not(.has-sub)>a{margin-top:6px}
  .nav.solid nav{background:var(--geo-navy-900)}
  .nav.solid nav a,.nav.solid .submenu a{color:var(--geo-white)}
  .nav .nav-cta{margin:16px 0 0;width:100%;justify-content:center;min-height:52px}
}

/* ── 추진 중인 현장 : 행 버튼 + 상세 모달 ── */
.brf-go{display:flex;align-items:center;gap:9px;width:100%;padding:0;min-height:44px;text-align:left;
  background:none;border:0;font:inherit;font-weight:var(--w-head);color:var(--geo-white);
  cursor:pointer;text-decoration:none}
/* 평소엔 밑줄을 걸지 않는다. 누를 수 있다는 표시는 화살표와 행 배경이 맡는다 */
.brf-go::after{content:'';flex:none;width:7px;height:7px;border-top:1.5px solid rgba(255,255,255,.42);
  border-right:1.5px solid rgba(255,255,255,.42);transform:rotate(45deg);
  transition:border-color var(--duration-state) var(--ease-out),transform var(--duration-state) var(--ease-out)}
.briefs tbody tr:hover .brf-go::after{border-color:var(--geo-white);transform:rotate(45deg) translate(2px,-2px)}
.brf-go:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:4px}
.briefs tbody tr{transition:background var(--duration-state) var(--ease-out)}
.briefs tbody tr:hover{background:rgba(255,255,255,.05)}

.brf-modal{width:min(560px,calc(100vw - 32px));inset:0;margin:auto;padding:0;border:0;border-radius:2px;
  background:var(--geo-white);color:var(--geo-navy-900);box-shadow:0 30px 80px rgba(6,24,42,.4)}
.brf-modal::backdrop{background:rgba(6,24,42,.62)}
.brf-in{position:relative;padding:clamp(28px,4vw,44px)}
.brf-x{position:absolute;top:12px;right:12px;width:44px;height:44px;display:flex;
  align-items:center;justify-content:center;background:none;border:0;font-size:20px;
  color:var(--geo-navy-300);cursor:pointer;transition:color var(--duration-state) var(--ease-out)}
.brf-x:hover{color:var(--geo-navy-900)}
.brf-st{margin:0 0 14px}
.brf-modal .st{border-color:var(--geo-navy-300);color:var(--geo-navy-500)}
.brf-modal .st.on{border-color:var(--geo-navy-500);background:var(--geo-navy-500);color:var(--geo-white)}
.brf-h{margin:0;font-size:clamp(24px,2.6vw,30px);font-weight:700;line-height:1.3;letter-spacing:-.02em}
.brf-loc{margin:8px 0 0;font-size:18px;color:var(--geo-ink-mute)}
.brf-shot{margin:clamp(20px,2.4vw,28px) 0 0}
.brf-shot[hidden]{display:none}
.brf-shot img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;background:var(--geo-navy-050)}
.brf-shot figcaption{margin-top:8px;font-size:15px;line-height:1.6;color:var(--geo-ink-mute)}
.brf-shot figcaption[hidden]{display:none}
.brf-dl{margin:clamp(20px,2.4vw,26px) 0 0;border-top:2px solid var(--geo-navy-500)}
.brf-dl>div{display:grid;grid-template-columns:104px minmax(0,1fr);gap:16px;
  padding:15px 0;border-bottom:1px solid var(--color-border)}
.brf-dl dt{font-size:17px;font-weight:700;color:var(--geo-navy-900)}
.brf-dl dd{margin:0;font-size:17px;line-height:1.65;color:var(--geo-ink-mute)}
@media (max-width:560px){.brf-dl>div{grid-template-columns:1fr;gap:4px}}

/* ── 계산 결과 : 값이 차례로 들어온다 ── */
.calc-out[data-fresh] .parcel{animation:calcIn 520ms var(--ease-out) both}
.calc-out[data-fresh] .v-bar{animation:calcIn 520ms var(--ease-out) 120ms both}
.calc-out[data-fresh] .v-bar-k{animation:calcIn 520ms var(--ease-out) 160ms both}
.calc-out[data-fresh] .verdict{animation:calcIn 520ms var(--ease-out) 300ms both}
.calc-out[data-fresh] .v-msg{animation:calcIn 520ms var(--ease-out) 380ms both}
.calc-out[data-fresh] .v-cta{animation:calcIn 520ms var(--ease-out) 460ms both}
@keyframes calcIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

.v-bar-t{margin:var(--space-6) 0 10px}
.v-bar-t em{font-style:normal;font-size:15px;line-height:1.6;color:var(--geo-navy-300)}
.v-bar{position:relative;height:16px;margin-top:var(--space-6);background:rgba(255,255,255,.1);overflow:hidden}
/* 눈금은 채움 뒤로 보낸다. 앞에 두면 막대가 토막 난 것처럼 보인다 */
.v-bar-fill{position:relative;z-index:1;display:block;height:100%;width:0;background:var(--geo-navy-300);
  transition:width 1100ms var(--ease-out)}
.v-bar-fill.ok{background:var(--color-success)}
.v-bar-fill.mid{background:var(--color-warning)}
.v-bar-fill.no{background:var(--color-error)}
/* 25% · 40% 가 판정이 갈리는 지점이라 눈금을 둔다 */
.v-bar-mark{position:absolute;z-index:0;top:0;bottom:0;left:var(--at);width:1px;background:rgba(255,255,255,.3)}
/* 구간이 무엇을 뜻하는지 막대 아래에 붙인다. 눈금 숫자만으로는 읽히지 않는다 */
.v-bar-k{display:flex;margin:8px 0 0;font-size:13px;line-height:1.4;color:var(--geo-navy-300)}
.v-bar-k span{flex:0 0 calc(var(--w) * 1%);padding-left:8px;border-left:1px solid rgba(255,255,255,.18)}
.v-bar-k span:first-child{padding-left:0;border-left:0}
@media (prefers-reduced-motion:reduce){
  .calc-out[data-fresh] *{animation:none}
  .v-bar-fill{transition:none}
}

/* 계산 결과가 뜨면 왼쪽엔 다음 단계 안내가 같이 뜬다 — 좌우가 함께 자란다 */
/* 안내가 뜨면 남는 높이를 이 블록이 채운다. 단계 사이가 고르게 벌어지고
   아래 문단과의 빈 구멍이 사라진다 */
.calc-next{display:flex;flex-direction:column;flex:1;
  margin-top:var(--space-8);padding-top:var(--space-8);border-top:1px solid rgba(255,255,255,.16)}
.calc-next[hidden]{display:none}
.calc-next-steps{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;
  list-style:none;margin:0;padding:0;counter-reset:cn}
.calc-next-k{margin:0 0 4px;font-size:15px;font-weight:600;letter-spacing:.06em;color:var(--geo-navy-300)}
.calc-next-steps li{position:relative;padding:16px 0 16px 44px;counter-increment:cn;
  border-bottom:1px solid rgba(255,255,255,.12)}
.calc-next-steps li:last-child{border-bottom:0}
.calc-next-steps li::before{content:counter(cn,decimal-leading-zero);position:absolute;left:0;top:18px;
  font-family:'Outfit',sans-serif;font-size:14px;font-weight:600;color:var(--geo-navy-300)}
.calc-next-steps b{display:block;font-size:18px;font-weight:600;color:var(--geo-white)}
.calc-next-steps span{display:block;margin-top:4px;font-size:16px;line-height:1.65;color:var(--geo-navy-100)}

/* 지금 값이 눈금 위 어디인지 — 마커가 없으면 막대가 안 읽힌다 */
.v-bar-box{position:relative;padding-top:30px}
.v-bar-now{position:absolute;top:0;left:var(--x,0%);transform:translateX(-50%);
  font-family:'Outfit',sans-serif;font-size:15px;font-weight:700;color:var(--geo-white);
  transition:left 1100ms var(--ease-out)}
.v-bar-now::after{content:'';position:absolute;left:50%;top:100%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:var(--geo-white)}

/* ── 홍보센터 목록 (메인 최신 3건 · news.html 공용) ─────────────── */
.nlist{list-style:none;margin:0;padding:0;border-top:2px solid var(--geo-navy-900)}
.nitem{border-bottom:1px solid var(--color-border)}
.nitem a{display:grid;grid-template-columns:180px minmax(0,1fr);column-gap:40px;padding:32px 8px;color:inherit;text-decoration:none}
.nitem a:focus-visible{outline:2px solid var(--geo-navy-500);outline-offset:-2px}
.nmeta{grid-row:1/span 3;display:flex;flex-direction:column;gap:6px;margin:4px 0 0}
.ncat{font-size:16px;font-weight:600;color:var(--geo-navy-500)}
.nmeta time{font-family:'Outfit',sans-serif;font-size:15px;letter-spacing:.06em;color:var(--geo-navy-300)}
.ntitle{display:block;font-size:clamp(20px,1.7vw,24px);font-weight:600;line-height:1.45;color:var(--geo-ink);transition:color var(--duration-state) var(--ease-out)}
.nitem a:hover .ntitle{color:var(--geo-navy-500)}
.nsum{margin:10px 0 0;font-size:18px;line-height:1.75;color:var(--geo-ink-mute)}
.nsrc{margin:14px 0 0;font-size:16px;font-weight:600;color:var(--geo-navy-500)}
.nsrc i{font-style:normal;margin-left:6px}
@media (max-width:720px){
  .nitem a{grid-template-columns:1fr;padding:26px 0}
  .nmeta{grid-row:auto;flex-direction:row;gap:12px;margin:0 0 10px}
}

/* 메인 홍보센터 — 글이 있을 때만 news.js 가 연다 */
.hnews{padding-block:clamp(64px,7vw,108px);background:var(--geo-white);border-top:1px solid var(--color-border)}
.hnews-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-6);flex-wrap:wrap;margin-bottom:40px}
.hnews-eyebrow{font-family:'Outfit',sans-serif;font-size:14px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--geo-navy-300);margin:0 0 16px}
.hnews-head h2{color:var(--geo-ink);font-size:clamp(28px,2.8vw,44px);font-weight:var(--w-head);letter-spacing:-.02em;line-height:1.24}
.hnews-all{font-size:18px;font-weight:600;color:var(--geo-navy-900);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}
.hnews-all:hover{color:var(--geo-navy-500)}
