/* 시티오씨엘 9단지 오션파크뷰 — 레퍼런스(오션파크뷰 사이트)와 비슷한 밝은 편집형 */
:root{
  --ink:#1b1f27; --navy:#1f2a44; --muted:#6b7079; --line:#e3e1dc; --paper:#fff; --soft:#f5f4f1;
  --beige:#cdbfae; --beige-2:#e9e1d6; --gold:#a8865a; --red:#c8202f;
  --sans:Pretendard,-apple-system,"Noto Sans KR",sans-serif; --en:Jost,Pretendard,sans-serif; --serif:"Nanum Myeongjo",serif; --script:"Yeon Sung",cursive;
  --ease:cubic-bezier(.2,.7,.2,1); --gut:clamp(16px,4vw,60px); --hd:72px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:var(--hd)}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
small{font-size:.78em}
.eye{font-family:var(--en);font-size:15px;letter-spacing:.06em;color:var(--gold);margin-bottom:14px}
.cg{position:absolute;right:10px;bottom:8px;font-size:10px;color:#fff;background:rgba(0,0,0,.35);padding:2px 6px;letter-spacing:.02em}
.note{font-size:12px;color:var(--muted);line-height:1.6}
.rv{opacity:0;transform:translateY(36px);transition:opacity 1s var(--ease),transform 1.1s var(--ease)}
.rv.in{opacity:1;transform:none}

/* 머리 */
.hd{position:fixed;inset:0 0 auto;z-index:50;height:var(--hd);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 var(--gut);background:rgba(255,255,255,.96);box-shadow:0 1px 0 rgba(0,0,0,.06);backdrop-filter:blur(8px)}
.logo{font-size:20px;font-weight:700;color:var(--navy);letter-spacing:-.02em;white-space:nowrap}
.logo em{font-family:"Gowun Batang",var(--serif);font-style:normal;font-weight:700;font-size:23px;margin-left:6px;color:var(--navy);letter-spacing:.01em}   /* 10/16 민 님: 후보 중 F(고운바탕) */
.gnb{display:flex;gap:clamp(24px,3.6vw,64px)}
.gnb a{font-size:15px;font-weight:500;color:#333;position:relative;padding:6px 0}
.gnb a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--navy);transform:scaleX(0);transition:transform .35s var(--ease)}
.gnb a:hover::after,.gnb a.on::after{transform:scaleX(1)}
.hd-right{display:flex;align-items:center;gap:18px}
.hd-pill{font-size:13px;font-weight:600;color:var(--red);border:1.5px solid var(--red);border-radius:999px;padding:8px 16px;white-space:nowrap;transition:background .3s,color .3s}
.hd-pill:hover{background:var(--red);color:#fff}
.hd-tel{display:flex;align-items:center;gap:6px;font-family:var(--en);font-size:19px;font-weight:500;color:var(--navy);white-space:nowrap}
.hd-tel svg{width:17px;height:17px;fill:var(--navy)}
.burger{display:none;width:30px;height:20px;position:relative}
.burger i{position:absolute;left:0;right:0;height:2px;background:var(--navy);transition:transform .3s,top .3s}
.burger i:first-child{top:4px}.burger i:last-child{top:14px}
.drawer-open .burger i:first-child{top:9px;transform:rotate(45deg)}
.drawer-open .burger i:last-child{top:9px;transform:rotate(-45deg)}
.drawer{position:fixed;inset:var(--hd) 0 0;z-index:49;background:#fff;padding:30px var(--gut);transform:translateY(-8px);opacity:0;visibility:hidden;transition:opacity .3s,transform .3s,visibility .3s}
.drawer-open .drawer{opacity:1;transform:none;visibility:visible}
.drawer nav{display:flex;flex-direction:column}
.drawer nav a{font-size:20px;font-weight:600;padding:16px 0;border-bottom:1px solid var(--line)}
.drawer-tel{display:block;margin-top:26px;color:var(--muted)}
.drawer-tel b{font-family:var(--en);font-size:24px;color:var(--navy);margin-left:8px}

/* ① 첫 화면 */
.mv{position:relative;height:100vh;height:100svh;min-height:600px;overflow:hidden;background:#20242c}
.mv-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.4s ease}
.mv-slide.on{opacity:1;z-index:1}
.mv-slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 7s linear}
.mv-slide.on img{transform:scale(1)}
.mv-slide::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.28) 0%,rgba(0,0,0,0) 45%,rgba(0,0,0,.25) 100%)}
.mv-copy{position:absolute;z-index:2;left:0;right:0;top:calc(var(--hd) + clamp(40px,8vh,90px));text-align:center;color:#fff;padding:0 var(--gut);text-shadow:0 1px 3px rgba(0,0,0,.5),0 2px 16px rgba(0,0,0,.45)}   /* 10/16 민 님: 글자에 그림자 살짝 → 잘 보이게 */
.mv-eye{font-family:var(--en);font-size:13px;letter-spacing:.12em;opacity:.9;margin-bottom:14px}
.mv-copy h1,.mv-copy h2{font-size:clamp(28px,3.4vw,52px);font-weight:600;line-height:1.32;letter-spacing:-.02em}
.mv-sub{margin-top:18px;font-size:clamp(13px,1.1vw,16px);opacity:.92}
.mv-copy>*{opacity:0;transform:translateY(24px);transition:opacity 1s .4s,transform 1.1s var(--ease) .4s}
.mv-copy h1,.mv-copy h2{transition-delay:.55s}.mv-sub{transition-delay:.75s!important}
.mv-slide.on .mv-copy>*{opacity:1;transform:none}
.mv-ctrl{position:absolute;z-index:3;left:50%;bottom:clamp(28px,5vh,48px);transform:translateX(-50%);display:flex;align-items:center;gap:14px;color:#fff;font-family:var(--en);font-size:13px}
.mv-num b{font-weight:500}
.mv-bar{width:120px;height:2px;background:rgba(255,255,255,.35);position:relative;overflow:hidden}
.mv-bar i{position:absolute;inset:0;background:#fff;transform-origin:0 0;transform:scaleX(0)}
.mv-bar i.run{transform:scaleX(1);transition:transform 6s linear}
.mv-cg{position:absolute;z-index:3;right:12px;bottom:10px;font-size:10px;color:#fff;opacity:.75}
.mv-scroll{position:absolute;z-index:3;left:var(--gut);bottom:clamp(28px,5vh,48px);color:#fff;font-family:var(--en);font-size:11px;letter-spacing:.2em;display:flex;align-items:center;gap:10px}
.mv-scroll i{width:1px;height:34px;background:rgba(255,255,255,.5);position:relative;overflow:hidden}
.mv-scroll i::after{content:"";position:absolute;left:0;top:-100%;width:1px;height:100%;background:#fff;animation:drop 2s infinite}
@keyframes drop{to{top:100%}}

/* ② ABOVE PRIDES */
.about{display:grid;grid-template-columns:1.6fr 1fr;gap:clamp(30px,5vw,80px);align-items:center;padding:clamp(70px,10vw,130px) var(--gut) clamp(60px,8vw,110px) 0}
.about-img{position:relative}
.about-img img{width:100%;aspect-ratio:16/9.6;object-fit:cover}
.about-text h2{font-size:clamp(22px,2vw,28px);font-weight:500;letter-spacing:-.02em}
.vline{display:block;width:1px;height:46px;background:var(--line);margin:26px 0}
.about-poem{font-size:15px;line-height:1.85;color:var(--muted);margin-bottom:16px}
.about-poem b{color:var(--ink);font-weight:600}

/* ③ 카드 넘김 */
.feat{padding:0 0 clamp(70px,9vw,120px) var(--gut);overflow:hidden}
.feat-track{display:flex;gap:clamp(16px,2vw,28px);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-right:var(--gut)}
.feat-track::-webkit-scrollbar{display:none}
.feat-card{flex:0 0 clamp(270px,30vw,440px);scroll-snap-align:start}
.feat-key{display:flex;align-items:center;gap:20px;font-family:var(--en);font-size:16px;letter-spacing:.04em;color:var(--gold);margin-bottom:20px}
.feat-key::after{content:"";flex:1;height:1px;background:var(--ink);opacity:.5}
.feat-img{position:relative;overflow:hidden}
.feat-img img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.2s var(--ease)}
.feat-card:hover .feat-img img{transform:scale(1.05)}
.feat-card h3{font-size:21px;font-weight:600;line-height:1.4;margin:22px 0 10px;letter-spacing:-.02em}
.feat-card p:not(.feat-key){font-size:14px;line-height:1.7;color:var(--muted)}
.feat-nav{display:flex;align-items:center;gap:10px;margin-top:34px}
.feat-nav button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-size:20px;line-height:1;color:var(--ink);transition:border-color .3s}
.feat-nav button:hover{border-color:var(--ink)}
.feat-prog{width:150px;height:1px;background:var(--line);margin-left:16px;position:relative}
.feat-prog i{position:absolute;left:0;top:-1px;height:3px;width:25%;background:var(--ink);transition:left .4s var(--ease)}

/* ④ 큰 글자 장면 */
.scene{position:relative;height:min(100vh,900px);min-height:560px;overflow:hidden;display:grid;place-items:center;color:#fff;text-align:center}
.scene>img{position:absolute;inset:-6% 0;width:100%;height:112%;object-fit:cover;will-change:transform}
.scene::before{content:"";position:absolute;inset:0;z-index:1;background:rgba(10,12,16,.42)}
.scene-copy{position:relative;z-index:2;padding:0 var(--gut)}
.scene-word{font-family:var(--en);font-size:clamp(64px,10vw,150px);font-weight:300;letter-spacing:.02em;line-height:1;color:rgba(255,255,255,.9);margin-bottom:22px}
.scene h2{font-size:clamp(22px,2.2vw,32px);font-weight:600;margin-bottom:16px;letter-spacing:-.02em}
.scene p:not(.scene-word){font-size:15px;line-height:1.75;opacity:.88}
.scene-btn{display:inline-block;margin-top:26px;padding:13px 28px;border:1px solid rgba(255,255,255,.7);font-size:14px;transition:background .3s,color .3s}
.scene-btn:hover{background:#fff;color:var(--ink)}
.scene .cg{z-index:2}

/* ⑤ INFRA */
.infra{position:relative;display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(30px,5vw,80px);align-items:center;padding:clamp(60px,8vw,110px) var(--gut) clamp(90px,12vw,160px);overflow:hidden}
/* 10/16 민 님: CITY O CIEL 큰 글자가 사진과 겹치고, 좁은 화면에선 중간에 걸침 → 글·사진 위에 한 줄을 따로 두고, 화면 폭 안에 다 들어가게 */
.infra-mark{grid-column:1/-1;font-family:"Herr Von Muellerhoff",cursive;font-weight:400;font-size:min(16vw,240px);line-height:1.2;letter-spacing:0;color:#d3d6dd;white-space:nowrap;text-align:center;margin-bottom:clamp(-10px,-1vw,0px);pointer-events:none}
.infra-text{position:relative}
.infra-text h2{font-size:clamp(24px,2.3vw,34px);font-weight:600;line-height:1.4;margin-bottom:20px;letter-spacing:-.02em}
.infra-text p{font-size:15px;line-height:1.75;color:var(--muted)}
.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin-top:26px}
.tags li{font-size:12.5px;border:1px solid var(--line);padding:7px 12px;color:#555}
.infra-img{position:relative}
.infra-img img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* ⑥ SYNERGY */
.syn{padding:clamp(70px,9vw,120px) var(--gut);background:var(--soft);display:grid;grid-template-columns:1fr 1.2fr;gap:30px clamp(30px,5vw,80px);align-items:center}
.syn-text h2{font-size:clamp(24px,2.3vw,34px);font-weight:600;margin-bottom:16px;letter-spacing:-.02em}
.syn-text p{font-size:15px;line-height:1.75;color:var(--muted)}
.syn-list{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.syn-list li{background:#fff;padding:34px 20px;text-align:center;border:1px solid var(--line)}
.syn-list b{display:block;font-family:var(--en);font-size:22px;font-weight:500;letter-spacing:.08em;color:var(--navy);margin-bottom:8px}
.syn-list span{font-size:14px;color:var(--muted)}
.syn .note{grid-column:1/-1}

/* ⑦ PRESTIGE LOCATION */
.loc{display:grid;grid-template-columns:1fr 1.5fr;min-height:min(90vh,820px)}
.loc-img{position:relative;overflow:hidden}
.loc-img img{width:100%;height:100%;object-fit:cover}
.loc-panel{background:var(--beige-2);padding:clamp(50px,7vw,110px) clamp(30px,6vw,100px);display:flex;flex-direction:column;justify-content:center}
.loc-big{font-family:var(--en);font-weight:300;font-size:clamp(56px,7vw,110px);line-height:1.02;color:#3a3530;margin:6px 0 30px}
.loc-panel>p{font-size:clamp(15px,1.3vw,19px);line-height:1.75;color:#5a524a}
.loc-dots{display:flex;gap:16px;list-style:none;margin-top:40px}
.loc-dots li{text-align:center;font-size:12px;color:#5a524a}
.loc-dots img{width:clamp(64px,6vw,90px);aspect-ratio:1;object-fit:cover;border-radius:50%;margin-bottom:8px;border:3px solid #fff}

/* 공통 머리글 */
.sec-head{text-align:center;margin-bottom:clamp(36px,5vw,60px)}
.sec-head h2{font-size:clamp(24px,2.4vw,36px);font-weight:600;letter-spacing:-.02em}
.sec-head>p:not(.eye){margin-top:14px;font-size:15px;color:var(--muted);line-height:1.7}

/* ⑧ 사업개요 */
.ov{padding:clamp(80px,10vw,140px) var(--gut)}
.ov-table{max-width:1000px;margin:0 auto;border-top:2px solid var(--navy)}
.ov-table div{display:grid;grid-template-columns:180px 1fr;border-bottom:1px solid var(--line)}
.ov-table dt{background:var(--soft);padding:18px 24px;font-weight:600;font-size:15px}
.ov-table dd{padding:18px 24px;font-size:15px;color:#333}

/* ⑨ 세대안내 */
.unit{padding:clamp(70px,9vw,120px) var(--gut);background:var(--soft)}
.unit-grid{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:12px;max-width:1100px;margin:0 auto}
.unit-grid a{display:flex;align-items:baseline;justify-content:center;gap:2px;background:#fff;border:1px solid var(--line);padding:30px 10px;transition:background .3s,color .3s,border-color .3s}
.unit-grid b{font-family:var(--en);font-size:clamp(30px,3vw,44px);font-weight:400}
.unit-grid span{font-size:15px;color:var(--muted)}
.unit-grid a:hover{background:var(--navy);border-color:var(--navy);color:#fff}
.unit-grid a:hover span{color:rgba(255,255,255,.7)}
.unit-grid .ph a{border-color:var(--gold)}
.unit-grid .ph span{color:var(--gold)}

/* ⑩ 커뮤니티 */
.comm{padding:clamp(80px,10vw,140px) var(--gut)}
.comm-grid{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.6vw,24px);margin-bottom:24px}
.comm-grid img{width:100%;aspect-ratio:3/4;object-fit:cover;margin-bottom:16px}
.comm-grid b{display:block;font-size:18px;font-weight:600;margin-bottom:6px}
.comm-grid span{font-size:14px;line-height:1.6;color:var(--muted)}
.comm-grid li:nth-child(2){transition-delay:.08s}.comm-grid li:nth-child(3){transition-delay:.16s}.comm-grid li:nth-child(4){transition-delay:.24s}

/* ⑪ 관심고객 등록 */
.reg{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(30px,5vw,80px);padding:clamp(80px,10vw,130px) var(--gut);background:var(--navy);color:#fff}
.reg .eye{color:#d8bf98}
.reg h2{font-size:clamp(28px,2.8vw,42px);font-weight:600;line-height:1.35;margin-bottom:18px}
.reg-text>p:not(.eye){color:rgba(255,255,255,.75);line-height:1.7}
.reg-tel{display:inline-flex;align-items:baseline;gap:10px;margin-top:34px;font-family:var(--en);font-size:clamp(28px,2.6vw,38px)}
.reg-tel small{font-family:var(--sans);font-size:13px;color:rgba(255,255,255,.6)}
.reg-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;align-content:start}
.reg-form label{display:flex;flex-direction:column;gap:8px;font-size:13px;color:rgba(255,255,255,.75)}
.reg-form i{font-style:normal;color:#ff8a8a}
.reg-form input:not([type=checkbox]),.reg-form select{height:50px;padding:0 14px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:15px;outline:none;border-radius:0}
.reg-form select option{color:#111}
.reg-form input:focus,.reg-form select:focus{border-color:#fff}
.reg-agree{grid-column:1/-1;flex-direction:row!important;align-items:center;gap:8px!important}
.reg-agree input{width:16px;height:16px}
.reg-form button{grid-column:1/-1;height:56px;background:#fff;color:var(--navy);font-weight:700;font-size:16px;transition:background .3s}
.reg-form button:hover{background:#e9e1d6}
.reg-msg{grid-column:1/-1;font-size:14px;min-height:20px;color:#d8bf98}

/* ⑫ CONTACT */
.contact{display:grid;grid-template-columns:minmax(300px,30%) 1fr;background:var(--soft)}
.ct-info{padding:clamp(40px,5vw,70px) clamp(24px,4vw,60px)}
.ct-title{font-family:var(--en);font-weight:500;font-size:18px;letter-spacing:.04em;margin-bottom:40px}
.ct-block{margin-bottom:44px}
.ct-label{font-weight:700;font-size:15px;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.ct-block>p:not(.ct-label){font-size:15px;line-height:1.7;margin-bottom:14px;color:#333}
.ct-map{display:flex;align-items:center;gap:10px;font-size:14px;margin-top:8px;color:#333}
.ct-map i{width:22px;height:22px;display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:700;color:#fff;background:#2db400}
.ct-map.k i{background:#c8a400}
.ct-tel{display:block;font-family:var(--en);font-size:clamp(26px,2.4vw,34px);font-weight:500;color:var(--navy);margin-bottom:18px}
.ct-btns{display:flex;gap:8px;flex-wrap:wrap}
.ct-btns a{font-size:14px;padding:10px 16px;border:1px solid var(--ink)}
.ct-btns a.dark{background:var(--ink);color:#fff}
.ct-img{position:relative;min-height:420px}
.ct-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* 바닥글 */
.ft{position:relative;background:#0b0c0e;color:rgba(255,255,255,.7);padding:clamp(56px,7vw,90px) var(--gut) 50px}
.ft-top{position:absolute;right:var(--gut);top:clamp(40px,5vw,60px);width:64px;height:64px;border:1px solid rgba(255,255,255,.3);border-radius:50%;display:grid;place-items:center;align-content:center;font-family:var(--en);font-size:10px;color:#fff;letter-spacing:.1em}
.ft-top span{font-size:14px;line-height:1}
.ft-logo{font-size:20px;font-weight:700;color:#fff}
.ft-logo em{font-family:"Gowun Batang",var(--serif);font-style:normal;font-weight:700;font-size:23px;margin-left:6px;letter-spacing:.01em}   /* 10/16 민 님: 좌측 상단과 같은 글자체 */
.ft-tel{margin:20px 0 34px;padding-bottom:34px;border-bottom:1px solid rgba(255,255,255,.15);display:flex;align-items:baseline;gap:12px}
.ft-tel small{font-size:13px}
.ft-tel a{font-family:var(--en);font-size:30px;font-weight:500;color:#fff}
.ft-info{display:flex;flex-wrap:wrap;gap:8px 28px;font-size:13px;margin-bottom:22px}
.ft-info div{display:flex;gap:8px}
.ft-info dt{color:#d8bf98}
.ft-notes{list-style:none;font-size:12px;line-height:1.8;color:rgba(255,255,255,.5);margin-bottom:22px}
.ft-copy{font-size:11px;color:rgba(255,255,255,.4);letter-spacing:.04em}

/* 떠 있는 배지 */
.badge{position:fixed;right:clamp(14px,2vw,30px);bottom:clamp(80px,12vh,120px);z-index:40;width:116px;height:116px;display:grid;place-items:center}
/* 10/16 민 님: 말풍선은 다른 색(샴페인 골드), 도는 글자 고리 대신 가운데가 숨 쉬듯 — CSS만 써서 용량은 거의 그대로 */
.badge-pop{position:absolute;top:-14px;right:30px;z-index:2;white-space:nowrap;background:linear-gradient(135deg,#caa66c,#a07d4e);color:#fff;font-size:12px;font-weight:700;padding:7px 12px;border-radius:999px;box-shadow:0 6px 16px rgba(160,125,78,.4);animation:bob 2.4s ease-in-out infinite}
.badge-pop::after{content:"";position:absolute;right:22px;bottom:-5px;border:6px solid transparent;border-top-color:#a98652;border-bottom:0}
@keyframes bob{50%{transform:translateY(-4px)}}
/* 10/16 민 님: 심장 뛰는 느낌이 약함, 퍼지는 선이 아래쪽은 안 보임 → 두 번 쿵쿵 뛰고, 그때마다 굵은 고리가 사방으로 크게 퍼짐(밝은 바탕·어두운 바탕 모두 보이게 금색+흰 테두리) */
.badge-halo{position:absolute;inset:0;pointer-events:none}
.badge-halo i{position:absolute;left:50%;top:50%;width:76px;height:76px;transform:translate(-50%,-50%);border-radius:50%;border:1.5px solid rgba(176,138,84,1);box-shadow:0 0 0 1px rgba(255,255,255,.55);opacity:0;animation:halo 3.2s cubic-bezier(.25,.6,.35,1) infinite}
/* 10/16 민 님: 선이 바깥으로 나가면서 점점 흐려지게, 여러 개가 이어서 퍼지게 — 4겹이 0.8초 간격으로, 크기만 키워 선 굵기는 그대로 */
.badge-halo i:nth-child(2){animation-delay:.8s}.badge-halo i:nth-child(3){animation-delay:1.6s}.badge-halo i:nth-child(4){animation-delay:2.4s}
@keyframes halo{0%{width:76px;height:76px;opacity:.95}100%{width:176px;height:176px;opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
.badge-msg{position:relative;width:76px;height:76px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#fff 0%,#fbf7ef 42%,#ecdfc8 100%);box-shadow:0 6px 22px rgba(120,95,60,.22),inset 0 -6px 12px rgba(168,134,90,.18);display:grid;place-items:center;text-align:center;animation:beat 1.6s ease-in-out infinite}
@keyframes beat{0%,40%,100%{transform:scale(1)}10%{transform:scale(1.13)}20%{transform:scale(1.02)}28%{transform:scale(1.09)}}
.badge-msg b{grid-area:1/1;font-size:12.5px;line-height:1.3;font-weight:700;color:var(--navy);opacity:0;transform:translateY(6px);transition:opacity .5s,transform .5s}
.badge-msg b.on{opacity:1;transform:none}
.to-top{position:fixed;right:calc(clamp(14px,2vw,30px) + 40px);bottom:clamp(26px,4vh,40px);z-index:40;width:36px;height:36px;border-radius:50%;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.15);display:grid;place-items:center;font-size:15px;opacity:0;pointer-events:none;transition:opacity .3s}
.scrolled .to-top{opacity:1;pointer-events:auto}

/* 안내 창 */
.pop{position:fixed;inset:0;z-index:100;background:rgba(8,10,14,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:20px}
.pop[hidden]{display:none}
.pop-cards{display:flex;gap:16px}
.pop-card{width:min(340px,44vw);padding:34px 26px 22px;text-align:center;color:#2b2620;background:linear-gradient(160deg,#fbf7f0 0%,#e9dcc7 38%,#f7f1e7 60%,#d9c6a6 100%);box-shadow:0 30px 70px rgba(0,0,0,.4);position:relative;overflow:hidden}
.pop-card::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);transform:translateX(-100%);animation:shine 4.5s ease-in-out infinite}
@keyframes shine{60%,100%{transform:translateX(100%)}}
.pop-card>*{position:relative}
.pop-logo{font-family:var(--en);font-size:20px;letter-spacing:.18em;color:#3a3530}
.pop-logo i{display:inline-block;width:13px;height:13px;border:1.5px solid #3a3530;border-radius:50%;margin:0 3px;vertical-align:-1px}
.pop-name{font-size:12px;margin:6px 0 18px}
.pop-name em{font-family:var(--script);font-style:normal;font-size:17px}
.pop-k{font-size:18px;font-weight:700}
.pop-big{font-family:var(--en);font-size:76px;font-weight:500;line-height:1}
.pop-h{font-size:22px;font-weight:800;margin:6px 0 10px}
.pop-tag{display:inline-block;background:#2b2620;color:#f1e4cf;font-family:var(--en);font-size:12px;letter-spacing:.12em;padding:5px 14px;border-radius:999px;margin-bottom:10px}
.pop-big2{font-size:32px;font-weight:800;letter-spacing:-.03em;margin-bottom:6px}
.pop-h2{font-size:18px;font-weight:800;margin:14px 0 6px}
.pop-s{font-size:12px;line-height:1.6;color:#5a4f42}
.pop-btn{display:block;margin:18px 0 8px;padding:12px;border-radius:999px;background:#fff;font-weight:700;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.pop-tel{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:11px;border-radius:999px;background:#23283a;color:#fff;font-family:var(--en);font-size:22px;font-weight:500}
.pop-tel small{font-family:var(--sans);font-size:11px;color:rgba(255,255,255,.7)}
.pop-note{font-size:10.5px;color:#7a6e60;margin-top:10px}
.pop-foot{display:flex;gap:20px;align-items:center;color:#fff;font-size:13px}
.pop-foot label{display:flex;gap:6px;align-items:center;cursor:pointer}

/* 좁은 화면 */
@media (max-width:1180px){
  .gnb,.hd-pill{display:none}
  .burger{display:block}
}
@media (max-width:900px){
  :root{--hd:62px}
  .logo{font-size:17px}.logo em{font-size:20px}
  .hd-tel{font-size:16px}
  .about,.infra,.syn,.loc,.reg,.contact{grid-template-columns:1fr}
  .about{padding-right:var(--gut);padding-left:var(--gut)}
  .infra-img{order:-1}
  .infra-mark{order:-2;font-size:19vw}
  .loc-img{height:50vh}
  .unit-grid{grid-template-columns:repeat(2,1fr)}
  .comm-grid{grid-template-columns:repeat(2,1fr)}
  .ov-table div{grid-template-columns:110px 1fr}
  .ov-table dt,.ov-table dd{padding:14px}
  .reg-form{grid-template-columns:1fr}
  .ct-img{min-height:300px}
  .pop-cards{flex-direction:column;max-height:80vh;overflow:auto}
  .pop-card{width:min(340px,86vw)}
}
@media (max-width:560px){
  .hd-tel span,.hd-tel{font-size:0;gap:0}
  .hd-tel svg{width:22px;height:22px}
  .mv-copy h1,.mv-copy h2{font-size:24px}
  .badge{transform:scale(.82);transform-origin:100% 100%}
}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  .mv-slide img,.badge-halo i,.badge-msg,.pop-card::before,.badge-pop{animation:none;transition:none}
}
/* 10/16 민 님: PC에서 생활인프라·3사 시공·관심고객 등록·CONTACT 글이 너무 왼쪽으로 치우쳐 옆 그림·양식과 떨어져 보임
   → 이 구역들은 가운데 1240px 안에 모으고, 글과 그림 사이도 좁힘 */
.infra,.syn,.reg,.contact{padding-left:max(var(--gut),calc((100vw - 1240px)/2));padding-right:max(var(--gut),calc((100vw - 1240px)/2))}
.infra{gap:clamp(30px,4vw,64px)}
@media (min-width:901px){.syn{grid-template-columns:1fr 1.1fr;gap:30px clamp(30px,4vw,64px)}}   /* PC에서만 — 좁은 화면 한 줄 배치를 덮어쓰지 않게 */
.reg{gap:clamp(30px,4vw,64px)}
/* CONTACT: 같은 조감도 대신 위치 지도, 가운데 모아 글과 지도를 나란히 · 지도는 4:3 크기로 */
.contact{grid-template-columns:minmax(280px,.8fr) 1.2fr;gap:clamp(30px,4vw,64px);align-items:center;padding-top:clamp(50px,6vw,90px);padding-bottom:clamp(50px,6vw,90px)}
.ct-info{padding:0}
.ct-img{min-height:0;background:#fff;border:1px solid var(--line)}
.ct-img img{position:static;width:100%;height:auto;aspect-ratio:1500/1131;object-fit:contain}
@media (max-width:900px){.contact{grid-template-columns:1fr}}
.infra{padding-top:clamp(80px,9vw,140px)}   /* 흘림체 꼬리가 위로 길게 올라가 위 여백을 늘림 */
/* 10/16 민 님: 핸드폰 화면에서도 PC와 비슷하게 — 넘치거나 치우치는 곳 정리 */
@media (max-width:900px){
  .syn-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .syn-list li{padding:22px 6px}
  .syn-list b{font-size:clamp(13px,3.6vw,18px);letter-spacing:.04em}
  .syn-list span{font-size:12px}
  .contact{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:560px){
  .mv-copy{top:calc(var(--hd) + 34px)}
  .mv-copy h1,.mv-copy h2{font-size:clamp(19px,5.6vw,24px);line-height:1.4}
  .mv-sub{font-size:12.5px;line-height:1.6;margin-top:12px}
  .mv-eye{font-size:11px;margin-bottom:10px}
  .infra{padding-top:56px}
}
.mv-sub small{white-space:nowrap}   /* (일부세대 제외)가 두 줄로 갈라지지 않게 */
/* 10/16 민 님: 메이저 3사 공동 시공 — 회사 네모 3개를 가운데 맨 위에, 그 아래 글을 가운데 정렬로 */
.syn{display:flex;flex-direction:column;align-items:center;text-align:center;gap:clamp(28px,3.4vw,44px)}
.syn-list{order:-1;width:min(820px,100%)}
.syn-text p{margin-left:auto;margin-right:auto}
.syn .note{max-width:820px}
/* 10/16 민 님: CONTACT도 3사 시공처럼 — 지도를 가운데 위에, 그 아래 내용을 가운데 정렬로 (PC에선 현장 | 분양문의 나란히) */
.contact{display:flex;flex-direction:column;align-items:center;text-align:center;gap:clamp(28px,3.4vw,44px)}
.ct-img{order:-1;width:min(820px,100%)}
.ct-info{width:min(820px,100%);display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(24px,4vw,56px)}
.ct-title{grid-column:1/-1;margin-bottom:28px}
.ct-block{margin-bottom:0}
.ct-map{justify-content:center}
.ct-btns{justify-content:center}
@media (max-width:640px){.ct-info{grid-template-columns:1fr}.ct-block+.ct-block{margin-top:36px}}
/* 10/16 민 님: CONTACT 영문을 지도 위에 */
.ct-title{order:-2;margin-bottom:0}
.ct-title{font-size:24px;font-weight:600;letter-spacing:.08em}   /* 10/16 민 님: 조금 두껍고 크게 (18px 500 → 24px 600) */
.ct-title{font-weight:700}   /* 더 두껍게 — Jost 700 굵기를 불러옴 */
.ct-title{font-family:"Instrument Sans",var(--sans);font-weight:600;letter-spacing:.02em;font-size:30px}   /* 10/16 민 님: 닙 홈 DOWON과 같은 글자체 */

/* ===== v4 (닙 Work 18) — 의뢰인 요청 순서 ===== */
/* 들어갈 때 로고 덮개 (15번과 같은 움직임) */
.curtain{position:fixed;inset:0;z-index:200;background:#0e141c;display:grid;place-items:center;transition:transform 1.1s var(--ease) .2s}
.curtain-mark{font-family:"Cormorant Garamond","Times New Roman",serif;color:#fff;font-size:clamp(28px,4vw,48px);letter-spacing:.32em;opacity:0;animation:markIn 1s var(--ease) .1s forwards}
.curtain-mark i{display:inline-block;width:.62em;height:.62em;border:1.5px solid #c3a06a;border-radius:50%;margin:0 .18em 0 -.1em;vertical-align:-.02em}
@keyframes markIn{from{opacity:0;letter-spacing:.6em}to{opacity:1;letter-spacing:.32em}}
.is-ready .curtain{transform:translateY(-100%)}

/* 1. 시공사 + 규모 */
.bld{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(30px,5vw,80px);align-items:center;padding:clamp(80px,10vw,140px) var(--gut)}
.bld-img{position:relative;overflow:hidden}
.bld-img img{width:100%;aspect-ratio:16/10;object-fit:cover}
.bld-text h2{font-size:clamp(26px,2.6vw,38px);font-weight:600;letter-spacing:-.02em;line-height:1.35;margin-bottom:30px}
.bld-brand{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:30px}
.bld-brand li{border:1px solid var(--line);background:var(--soft);padding:22px 10px;text-align:center}
.bld-brand b{display:block;font-size:clamp(18px,1.6vw,22px);font-weight:700;color:var(--navy);margin-bottom:6px}
.bld-brand span{font-size:12px;color:var(--muted)}
.bld-facts div{display:grid;grid-template-columns:80px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--line);font-size:16px}
.bld-facts div:last-child{border-bottom:1px solid var(--line)}
.bld-facts dt{color:var(--muted);font-size:14px;padding-top:2px}
.bld-facts b{font-family:var(--en);font-size:1.25em;font-weight:500;color:var(--navy)}

/* 2. 입지환경 지도 */
.map{padding:clamp(80px,10vw,130px) var(--gut);background:var(--soft)}
.map-img{max-width:1280px;margin:0 auto 18px;background:#fff;border:1px solid var(--line)}
.map-img img{width:100%;height:auto}
.map .note{max-width:1280px;margin:0 auto}

/* 3. 교통 호재 목록 */
.trf{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.trf li{background:rgba(255,255,255,.7);padding:18px 20px}
.trf b{display:block;font-size:clamp(17px,1.5vw,20px);font-weight:700;color:#3a3530;margin-bottom:4px}
.trf span{font-size:14px;color:#5a524a}

/* 5. 프리미엄 9 — 번호 · 체크 · 굵은 제목으로 강조 */
.pm9{padding:clamp(80px,10vw,140px) var(--gut)}
.pm9 .sec-head em{font-style:normal;font-family:var(--en);color:var(--gold);font-size:1.3em}
.pm9-grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,1.4vw,20px);max-width:1280px;margin:0 auto 22px}
.pm9-grid li{position:relative;border:1px solid var(--line);padding:30px 26px 28px;background:#fff;transition:border-color .3s,box-shadow .3s}
.pm9-grid li:hover{border-color:var(--gold);box-shadow:0 10px 30px rgba(31,42,68,.08)}
.pm9-n{display:block;font-family:var(--en);font-size:30px;font-weight:300;color:var(--gold);line-height:1;margin-bottom:16px}
.pm9-grid li::after{content:"";position:absolute;top:26px;right:24px;width:22px;height:22px;border-radius:50%;background:var(--navy) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/13px no-repeat}
.pm9-grid h3{font-size:clamp(19px,1.6vw,22px);font-weight:700;color:var(--navy);margin-bottom:10px;letter-spacing:-.02em}
.pm9-grid p{font-size:14.5px;line-height:1.7;color:#4a5058}
.pm9-grid small{color:var(--muted)}
.pm9 .note{max-width:1280px;margin:0 auto}

/* 6. 커뮤니티 8곳: 4칸 두 줄, 사진은 가로형 */
.comm-grid img{aspect-ratio:4/3}
.comm-grid li:nth-child(n+5){transition-delay:.1s}

@media (max-width:900px){
  .bld{grid-template-columns:1fr}
  .pm9-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .bld-brand{gap:6px}.bld-brand li{padding:16px 4px}.bld-brand span{font-size:11px}
  .trf{grid-template-columns:1fr}
  .pm9-grid{grid-template-columns:1fr}
  .pm9-grid li{padding:24px 22px}
}
.map-img figcaption{font-size:12px;color:var(--muted);text-align:center;padding:10px 0 12px}
@media (min-width:901px){.map-img figcaption{display:none}}

/* 10/18 민 님 — 첫 화면 옆 화살표(옅게, 가까이 가면 또렷) · 배지 말풍선 살짝 오른쪽 · 퍼지는 원 더 많이 · 교통과 학교 사이 띄우기 */
.mv-arw{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.45);display:grid;place-items:center;opacity:.35;transition:opacity .3s,background .3s}
.mv-arw svg{width:24px;height:24px;fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.mv-prev{left:clamp(12px,2.4vw,40px)}.mv-next{right:clamp(12px,2.4vw,40px)}
.mv-arw:hover,.mv-arw:focus-visible{opacity:1;background:rgba(0,0,0,.25)}
@media (max-width:560px){.mv-arw{width:40px;height:40px}.mv-arw svg{width:20px;height:20px}}
.badge-pop{right:14px}
.badge-pop::after{right:30px}
.badge-halo i{animation-duration:3.2s}
.badge-halo i:nth-child(2){animation-delay:.45s}.badge-halo i:nth-child(3){animation-delay:.9s}.badge-halo i:nth-child(4){animation-delay:1.35s}
.badge-halo i:nth-child(5){animation-delay:1.8s}.badge-halo i:nth-child(6){animation-delay:2.25s}.badge-halo i:nth-child(7){animation-delay:2.7s}
#school{margin-top:clamp(56px,7vw,110px)}

/* ===== 10/20 의뢰인 수정 (메인 1~9) ===== */
/* 5. 미니 신도시 · 브랜드 · 조감도 · 숫자 */
.nt{padding:clamp(80px,10vw,140px) var(--gut) clamp(60px,8vw,110px);text-align:center;background:#fff}
.nt-eye{font-family:Jost,sans-serif;font-weight:600;font-size:clamp(13px,1.1vw,16px);letter-spacing:.42em;color:#c9a96a;margin-bottom:18px}
.nt-head h2{font-size:clamp(26px,3.1vw,44px);font-weight:400;line-height:1.38;letter-spacing:-.03em;color:#1b2440}
.nt-head h2 b{font-weight:800}
.nt-brand{list-style:none;display:flex;justify-content:center;gap:clamp(18px,5vw,90px);margin:clamp(36px,5vw,60px) 0 clamp(36px,5vw,56px);flex-wrap:wrap}
.nt-brand li{display:flex;flex-direction:column;align-items:center;gap:10px}
.nt-brand small{font-size:13px;color:#6b7079}
.lg{display:inline-flex;align-items:center;gap:6px;font-family:"Instrument Sans",Arial,sans-serif;font-weight:800;font-size:clamp(20px,2.2vw,30px);letter-spacing:.01em;line-height:1}
.lg-ipark{color:#1c1c1c}.lg-ipark i{width:.95em;height:.95em;background:linear-gradient(135deg,#e2231a 0 52%,transparent 52%),linear-gradient(#e2231a,#e2231a) 0 100%/42% 46% no-repeat;display:inline-block}
.lg-hill{color:#c8102e;font-size:clamp(17px,1.9vw,26px)}.lg-hill i{font-family:"Herr Von Muellerhoff",serif;font-style:normal;font-weight:400;font-size:1.9em;line-height:.5;margin-right:2px}
.lg-sharp{color:#1d2b5c;font-size:clamp(18px,2vw,27px)}.lg-sharp i{width:.42em;height:1.05em;border-left:.12em solid #1d2b5c;border-right:.12em solid #1d2b5c;transform:skewX(-8deg);display:inline-block}
.nt-img{position:relative;max-width:1180px;margin:0 auto;border-radius:6px;overflow:hidden;box-shadow:0 18px 40px rgba(20,28,51,.14)}
.nt-img img{width:100%;aspect-ratio:16/9;object-fit:cover}
.nt-img figcaption{position:absolute;right:14px;bottom:10px;font-size:clamp(10px,.9vw,12.5px);color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.nt-facts{display:grid;grid-template-columns:repeat(4,1fr);max-width:1180px;margin:clamp(30px,4vw,50px) auto 0;border-top:1px solid #e3e1dc;border-bottom:1px solid #e3e1dc}
.nt-facts div{padding:clamp(22px,3vw,36px) 10px}
.nt-facts div+div{border-left:1px solid #e3e1dc}
.nt-facts dt{font-family:Jost,sans-serif;font-weight:600;font-size:13px;letter-spacing:.32em;color:#c9a96a;margin-bottom:8px}
.nt-facts dd{font-size:clamp(17px,1.6vw,22px);color:#1b2440;font-weight:700}
.nt-facts dd b{font-size:clamp(30px,3vw,44px);font-weight:800;letter-spacing:-.02em;margin-right:2px}
.nt-facts p{font-size:14px;color:#6b7079;margin-top:4px}
@media (max-width:760px){.nt-facts{grid-template-columns:1fr 1fr}.nt-facts div:nth-child(3){border-left:0}.nt-facts div:nth-child(n+3){border-top:1px solid #e3e1dc}}
/* 6. 입지 · 교통 */
.trf-head{text-align:center;max-width:900px;margin:clamp(50px,7vw,90px) auto 22px}
.trf-head h3{font-size:clamp(20px,2.2vw,30px);font-weight:700;line-height:1.45;color:#1b2440;letter-spacing:-.02em}
.trf-head p{font-size:clamp(22px,2.4vw,34px);font-weight:800;color:#b8934e;margin-top:6px}
.trf-img{position:relative;max-width:1280px;margin:0 auto 18px;overflow:hidden}
.trf-img img{width:100%;aspect-ratio:2/1;object-fit:cover}
#location .trf{max-width:1280px;margin:0 auto 18px;grid-template-columns:repeat(4,1fr)}
#location .trf li{background:#fff;border:1px solid #e3e1dc}
@media (max-width:900px){#location .trf{grid-template-columns:1fr 1fr}}
/* 7. 스쿨 */
.sch{position:relative;min-height:min(100vh,860px);display:grid;place-items:center;text-align:center;color:#fff;overflow:hidden}
.sch>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sch::before{content:"";position:absolute;inset:0;z-index:1;background:rgba(20,22,26,.42)}
.sch-copy{position:relative;z-index:2;padding:0 var(--gut)}
.sch-word{font-family:Jost,Pretendard,sans-serif;font-weight:700;font-size:clamp(60px,9vw,130px);letter-spacing:-.01em;line-height:1;color:#cbb79c}
.sch-line{display:block;width:2px;height:clamp(50px,7vw,90px);background:#fff;margin:clamp(22px,3vw,34px) auto}
.sch h2{font-size:clamp(26px,3vw,42px);font-weight:800;letter-spacing:-.03em;margin-bottom:18px}
.sch p:not(.sch-word){font-size:clamp(15px,1.3vw,19px);line-height:1.75}
.sch .cg{z-index:2}
/* 8. 프리미엄 위 사진 */
.pm-photo{position:relative;margin:0;overflow:hidden}
.pm-photo img{width:100%;aspect-ratio:2/1;object-fit:cover;max-height:80vh}
/* 1. 팝업 2개 */
.pp{position:fixed;inset:0;z-index:150;background:rgba(10,14,24,.6);display:grid;place-items:center;padding:20px}
.pp[hidden]{display:none}
.pp-box{width:min(380px,88vw)}
.pp-next{display:block;width:100%;background:#fff;color:#141c33;font-size:14px;font-weight:700;padding:11px 0;border:0;cursor:pointer}
.pp-slides{position:relative;aspect-ratio:2/3;background:#f4ead8}
.pp-slides img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s}
.pp-slides img.on{opacity:1}
.pp-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;color:#fff;font-size:13px}
.pp-foot label{display:flex;gap:6px;align-items:center;cursor:pointer}
.pp-nav{display:flex;align-items:center;gap:8px}
.pp-nav span{background:#fff;color:#141c33;border-radius:999px;padding:2px 12px;font-weight:700}
.pp-nav button{width:30px;height:30px;border-radius:50%;border:0;background:rgba(255,255,255,.18);color:#fff;font-size:18px;cursor:pointer}
/* 메뉴별 페이지 (pages.cjs) */
.pg{padding:clamp(50px,7vw,100px) var(--gut) clamp(30px,4vw,50px)}
.pg-hero{position:relative;max-width:1100px;margin:0 auto}
.pg-hero img{width:100%}
.pg-hero figcaption{position:absolute;right:12px;bottom:8px;font-size:11px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.pg-table{max-width:1100px;margin:clamp(30px,4vw,50px) auto 0}
.pg-table div{padding:18px 0;border-bottom:1px solid #e3e1dc}
.pg-table dt{font-size:16px;font-weight:700;color:#1b2440;margin-bottom:8px}
.pg-table dd{font-size:17px;color:#3a3f48;line-height:1.6}
@media (min-width:761px){.pg-table div{display:grid;grid-template-columns:180px 1fr;align-items:baseline}.pg-table dt{margin:0}}
.pg-sheet{max-width:1100px;margin:0 auto}
.pg-sheet img{width:100%;height:auto}
.pg-note{max-width:1100px;margin:clamp(24px,3vw,40px) auto 0;background:#f6f5f2;border:1px solid #e3e1dc;padding:20px 22px;font-size:13.5px;line-height:1.7;color:#6b7079}
.sub .map,.sub .comm,.sub .pm9{padding-top:clamp(50px,7vw,100px)}
.sch>img{object-position:50% 70%}
/* 5번 칸: 샘플 배치 그대로 (휴대폰 390 기준 — 제목 3줄 가운데, 설명 2줄, 로고 2×2, 둥근 조감도, 숫자 2×2) */
.nt{padding:clamp(56px,7vw,110px) 16px clamp(50px,6vw,90px)}
.nt-eye{font-size:clamp(11px,1vw,15px);letter-spacing:.5em;margin-bottom:14px}
.nt-head h2{font-size:clamp(22px,2.6vw,40px);line-height:1.36}
.nt-sub{margin-top:clamp(14px,1.6vw,22px);font-size:clamp(14px,1.2vw,18px);line-height:1.7;color:#6b7079}
.nt-brand{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(22px,2.6vw,34px) 10px;max-width:560px;margin:clamp(34px,4vw,56px) auto clamp(30px,4vw,50px);justify-items:center}
@media (min-width:901px){.nt-brand{grid-template-columns:repeat(4,1fr);max-width:1000px}}
.nt-brand li{gap:0}
.lg-city{font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;color:#111;font-size:clamp(20px,2.2vw,30px);letter-spacing:.06em;gap:0}
.lg-city i{display:inline-block;width:.78em;height:.95em;border:.12em solid #111;border-radius:50%;margin:0 .06em}
.nt-img{border-radius:10px}
.nt-facts{border-top:1px solid #e3e1dc;border-bottom:0}
.nt-facts div{border-bottom:1px solid #e3e1dc}
/* 5번 칸 로고: 샘플처럼 크게, 줄 간격 넓게 */
.nt-brand{gap:clamp(30px,3.4vw,44px) 10px}
.lg{font-size:clamp(25px,2.4vw,32px)}
.lg-hill{font-size:clamp(21px,2vw,27px)}
.lg-sharp{font-size:clamp(21px,2.1vw,28px)}
.lg-city{font-size:clamp(24px,2.3vw,31px)}
@media (max-width:900px){.nt-head h2{font-size:24px;line-height:1.42}.nt-sub{margin-top:20px}.nt-brand{margin:48px auto 44px;row-gap:34px}}
/* 10/20 팝업: 샘플 비율 — 휴대폰은 화면 폭 78% 한 장씩(2:3), 위에 흰 글자 버튼(띠 없음), 아래 체크 · 1/2 / PC는 두 장 나란히(380px씩, 사이 20px), 위 '팝업닫기', 아래 가운데 체크 */
.pp{background:rgba(0,0,0,.78);padding:0}
.pp-box{width:78vw;max-width:340px}
.pp-next,.pp-close{background:none;color:#fff;font-size:14px;font-weight:700;padding:0 0 12px;text-align:center}
.pp-close{display:none;width:100%;border:0;cursor:pointer}
.pp-slides{aspect-ratio:2/3;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.pp-foot{margin-top:16px;font-size:14px}
.pp-foot input{width:18px;height:18px}
.pp-nav span{padding:3px 13px;font-size:13px}
.pp-nav button{width:32px;height:32px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25)}
@media (min-width:901px){
  .pp-box{width:780px;max-width:none}
  .pp-next{display:none}.pp-close{display:block}
  .pp-slides{display:flex;gap:20px;aspect-ratio:auto;box-shadow:none;background:none}
  .pp-slides img{position:static;width:380px;height:570px;opacity:1;box-shadow:0 10px 30px rgba(0,0,0,.35)}
  .pp-foot{justify-content:center;margin-top:18px}
  .pp-nav{display:none}
}
/* 작은 화면에서만 줄바꿈 (10/20 민 님: '컨소시엄 / 시티오씨엘 최대 단지') */
.m-br{display:none}
@media (max-width:560px){.m-br{display:inline}}
/* 5번: 로고 밑에 건설사 (의뢰인 목록대로) */
.nt-brand li{gap:8px}
.nt-brand small{font-size:12.5px;color:#6b7079}
@media (max-width:900px){.nt-brand{row-gap:26px}}
/* 5번 조감도 안 오른쪽 아래 안내 글씨: 잘 보이게 (10/20 민 님) */
.nt-img::after{content:"";position:absolute;inset:auto 0 0;height:30%;background:linear-gradient(transparent,rgba(0,0,0,.55));pointer-events:none}
.nt-img figcaption{z-index:1;right:12px;bottom:10px;font-size:clamp(11.5px,1vw,14px);font-weight:500;text-shadow:0 1px 3px rgba(0,0,0,.8)}
/* 10/20 민 님: 안내 글씨는 다른 사진의 '이미지컷' 표시와 같은 자리 · 같은 모양(오른쪽 아래 작은 어두운 상자) */
.nt-img::after{display:none}
.nt-img figcaption{right:10px;bottom:8px;font-size:clamp(10px,.8vw,11px);font-weight:400;color:#fff;background:rgba(0,0,0,.45);padding:3px 7px;text-shadow:none;line-height:1.4;max-width:calc(100% - 20px)}
/* ===== 10/20 인트로 · 첫 화면 입체감 (민 님: 공식 사이트처럼 화려하게, 사진에 모션) ===== */
@property --hole{syntax:'<length-percentage>';inherits:false;initial-value:0%}
.curtain{background:#07090d;transition:none;-webkit-mask:radial-gradient(circle at 50% 50%,transparent var(--hole),#000 calc(var(--hole) + 1px));mask:radial-gradient(circle at 50% 50%,transparent var(--hole),#000 calc(var(--hole) + 1px))}
.is-ready .curtain{transform:none;--hole:150%;transition:--hole 1.3s cubic-bezier(.7,0,.2,1)}
.is-done .curtain{display:none}
@supports not (background:paint(x)){}
.ct-stage{position:relative;width:min(320px,74vw);aspect-ratio:1;display:grid;place-items:center}
.ct-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.ct-ring circle{fill:none;stroke-linecap:round}
.ct-r1{stroke:#c9a96a;stroke-width:.9;stroke-dasharray:579;stroke-dashoffset:579;animation:ctDraw 1.3s cubic-bezier(.6,0,.2,1) .3s forwards}
.ct-r2{stroke:rgba(255,255,255,.28);stroke-width:.5;stroke-dasharray:2 5;opacity:0;transform-origin:100px 100px;animation:ctFade .8s ease 1s forwards,ctSpin 14s linear 1s infinite}
@keyframes ctDraw{to{stroke-dashoffset:0}}
@keyframes ctFade{to{opacity:1}}
@keyframes ctSpin{to{transform:rotate(360deg)}}
.ct-logo{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;transform:translateY(12px);animation:ctUp 1s cubic-bezier(.2,.7,.2,1) 1.1s forwards}
.ct-logo .curtain-mark{opacity:1;animation:none;font-size:clamp(24px,3.2vw,38px);letter-spacing:.28em}
.ct-sub{font-size:clamp(12px,1.1vw,15px);color:rgba(255,255,255,.75);letter-spacing:.06em}
.ct-sub em{font-family:"Nanum Brush Script",cursive;font-style:italic;font-size:1.6em;color:#e3cc95;margin-left:4px;letter-spacing:0}
@keyframes ctUp{to{opacity:1;transform:none}}
.is-ready .ct-stage{transform:scale(1.25);opacity:0;transition:transform 1.3s cubic-bezier(.7,0,.2,1),opacity .9s ease .2s}
.ct-skip{position:absolute;right:clamp(16px,3vw,40px);bottom:clamp(20px,4vh,40px);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);color:#fff;font:600 11px Jost,sans-serif;letter-spacing:.18em;padding:8px 16px;border-radius:999px;cursor:pointer}
/* 첫 화면: 열릴 때 사진이 크게에서 다가오고, 글자는 줄마다 차례로 */
.mv-slide img{transform:translate3d(calc(var(--mx,0) * -18px),calc(var(--py,0px) + var(--my,0) * -12px),0) scale(1.22);transition:transform 2.6s cubic-bezier(.2,.7,.2,1),opacity 0s}
.is-ready .mv-slide.on img{transform:translate3d(calc(var(--mx,0) * -18px),calc(var(--py,0px) + var(--my,0) * -12px),0) scale(1.06)}
.is-done .mv-slide.on img{animation:mvDrift 14s ease-in-out infinite alternate}
@keyframes mvDrift{from{scale:1}to{scale:1.05}}
.mv-copy{transform:translateY(var(--cy,0px));opacity:var(--fade,1)}
.mv-copy>*{transition-delay:0s}
body:not(.is-ready) .mv-copy>*{opacity:0!important;transform:translateY(30px)!important}
.is-ready .mv-slide.on .mv-copy .mv-eye{transition:opacity 1s .9s,transform 1.1s cubic-bezier(.2,.7,.2,1) .9s}
.is-ready .mv-slide.on .mv-copy h1,.is-ready .mv-slide.on .mv-copy h2{transition:opacity 1s 1.1s,transform 1.2s cubic-bezier(.2,.7,.2,1) 1.1s}
.is-ready .mv-slide.on .mv-copy .mv-sub{transition:opacity 1s 1.35s,transform 1.2s cubic-bezier(.2,.7,.2,1) 1.35s!important}
.is-done .mv-slide .mv-copy>*{transition-delay:.4s!important}
@media (prefers-reduced-motion:reduce){.ct-r1,.ct-r2,.ct-logo{animation:none;stroke-dashoffset:0;opacity:1;transform:none}.mv-slide img{transition:none}}
/* ===== 10/20 인트로 2: 바다 위 해돋이 (민 님: 더 멋있게) — 앞의 원 인트로를 덮어씀 ===== */
.curtain.sr{background:none;-webkit-mask:none;mask:none;overflow:hidden;display:block}
.is-ready .curtain.sr{--hole:0%}
.sr-top,.sr-bot{position:absolute;left:0;right:0;overflow:hidden;transition:transform 1.25s cubic-bezier(.75,0,.2,1)}
.sr-top{top:0;height:50%;background:linear-gradient(#05070b 0%,#0b0f18 55%,#1b1a1f 100%)}
.sr-bot{bottom:0;height:50%;background:linear-gradient(#11121a 0%,#06080c 100%)}
.is-ready .sr-top{transform:translateY(-100%)}
.is-ready .sr-bot{transform:translateY(100%)}
/* 수평선 */
.sr-line{position:absolute;left:50%;top:50%;width:0;height:1px;background:linear-gradient(90deg,transparent,#e3cc95 20%,#fff2cf 50%,#e3cc95 80%,transparent);transform:translate(-50%,-.5px);animation:srLine 1.1s cubic-bezier(.6,0,.2,1) .2s forwards;z-index:3}
@keyframes srLine{to{width:min(1100px,92vw)}}
.is-ready .sr-line{opacity:0;transition:opacity .4s}
/* 해 · 빛 */
.sr-sun{position:absolute;left:50%;bottom:0;width:clamp(120px,15vw,210px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 45%,#fff6dc 0%,#f3d79a 38%,#d9a957 70%,#b9843a 100%);box-shadow:0 0 60px 18px rgba(233,190,110,.35),0 0 160px 60px rgba(214,160,80,.18);transform:translate(-50%,100%);animation:srRise 1.6s cubic-bezier(.2,.7,.2,1) .7s forwards}
@keyframes srRise{to{transform:translate(-50%,45%)}}
.sr-glow{position:absolute;inset:auto 0 0;height:100%;background:radial-gradient(60% 55% at 50% 100%,rgba(232,180,100,.38),rgba(160,100,60,.12) 45%,transparent 70%);opacity:0;animation:ctFade 1.6s ease .8s forwards}
/* 물에 비친 빛 · 물결 */
.sr-refl{position:absolute;left:50%;top:0;width:clamp(60px,8vw,120px);height:70%;transform:translateX(-50%) scaleY(0);transform-origin:top;background:linear-gradient(rgba(240,200,120,.55),rgba(240,200,120,0));filter:blur(6px);animation:srRefl 1.4s ease 1.1s forwards}
@keyframes srRefl{to{transform:translateX(-50%) scaleY(1)}}
.sr-waves{position:absolute;inset:0}
.sr-waves i{position:absolute;left:50%;top:calc(6% + var(--w) * 6.5%);height:1px;width:calc(8% + var(--w) * 5%);background:linear-gradient(90deg,transparent,rgba(230,200,140,calc(.55 - var(--w) * .033)),transparent);transform:translateX(-50%) scaleX(0);animation:srWave 1.2s ease calc(1.2s + var(--w) * .05s) forwards,srShim 3s ease-in-out calc(2.2s + var(--w) * .12s) infinite alternate}
@keyframes srWave{to{transform:translateX(-50%) scaleX(1)}}
@keyframes srShim{to{transform:translateX(calc(-50% + 10px)) scaleX(.85);opacity:.6}}
/* 로고 */
.sr-logo{position:absolute;left:0;right:0;top:50%;transform:translateY(calc(-100% - clamp(70px,12vh,120px)));text-align:center;z-index:4;transition:opacity .5s,transform 1.2s cubic-bezier(.75,0,.2,1)}
.is-ready .sr-logo{opacity:0;transform:translateY(calc(-100% - clamp(70px,12vh,120px) - 40px))}
.sr-word{display:inline-flex;align-items:center;font-family:"Cormorant Garamond","Times New Roman",serif;font-weight:500;color:#fff;font-size:clamp(30px,4.6vw,60px);letter-spacing:.3em;margin-right:-.3em}
.sr-word span{display:inline-block;opacity:0;filter:blur(8px);transform:translateY(14px);animation:srLetter .9s cubic-bezier(.2,.7,.2,1) calc(1.15s + var(--k) * .07s) forwards}
.sr-word .sr-o{width:.66em;height:.66em;border:1.5px solid #e3cc95;border-radius:50%;margin:0 .32em 0 .02em}
@keyframes srLetter{to{opacity:1;filter:none;transform:none}}
.sr-sub{margin-top:clamp(12px,1.6vh,18px);color:rgba(255,255,255,.78);font-size:clamp(12px,1.15vw,16px);letter-spacing:.08em;opacity:0;animation:ctUp .9s ease 1.9s forwards;transform:translateY(10px)}
.sr-sub em{font-family:"Nanum Brush Script",cursive;font-style:italic;font-size:1.65em;color:#e9d39f;margin-left:4px;letter-spacing:0}
.sr .ct-skip{z-index:5}
.is-ready .sr .ct-skip{opacity:0;transition:opacity .3s}
@media (prefers-reduced-motion:reduce){.sr-line{width:min(1100px,92vw);animation:none}.sr-sun{transform:translate(-50%,45%);animation:none}.sr-word span,.sr-sub,.sr-glow{animation:none;opacity:1;filter:none;transform:none}}
/* 인트로 2 다듬기: 물빛을 물결처럼 끊고, 로고에 금빛이 한 번 스침 */
.sr-refl{-webkit-mask:repeating-linear-gradient(180deg,#000 0 5px,transparent 5px 9px);mask:repeating-linear-gradient(180deg,#000 0 5px,transparent 5px 9px);filter:blur(1.5px);animation:srRefl 1.4s ease 1.1s forwards,srRipple 1.8s ease-in-out 2.4s infinite alternate}
@keyframes srRipple{to{-webkit-mask-position:0 4px;mask-position:0 4px;width:clamp(70px,9vw,140px)}}
.sr-word{background:linear-gradient(100deg,#fff 0%,#fff 40%,#f6dfa6 50%,#fff 60%,#fff 100%);background-size:250% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;animation:srShine 1.4s ease 2.15s forwards}
.sr-word span:not(.sr-o){color:transparent;-webkit-text-fill-color:transparent}
@keyframes srShine{to{background-position:0 0}}
.sr-sun{animation:srRise 1.6s cubic-bezier(.2,.7,.2,1) .7s forwards,srPulse 2.4s ease-in-out 2.3s infinite alternate}
@keyframes srPulse{from{box-shadow:0 0 60px 18px rgba(233,190,110,.35),0 0 160px 60px rgba(214,160,80,.18)}to{box-shadow:0 0 80px 26px rgba(240,200,120,.45),0 0 200px 80px rgba(214,160,80,.24)}}
.sr-refl{width:clamp(110px,14vw,220px);clip-path:polygon(38% 0,62% 0,92% 100%,8% 100%);background:linear-gradient(rgba(245,210,140,.6),rgba(245,210,140,.18) 55%,rgba(245,210,140,0));-webkit-mask:repeating-linear-gradient(180deg,#000 0 3px,rgba(0,0,0,.35) 3px 6px,transparent 6px 10px),linear-gradient(#000,#000);-webkit-mask-composite:source-in;mask:repeating-linear-gradient(180deg,#000 0 3px,rgba(0,0,0,.35) 3px 6px,transparent 6px 10px);filter:blur(2.6px)}
@keyframes srRipple{to{-webkit-mask-position:0 5px;mask-position:0 5px}}
/* 물빛: 계단처럼 보이지 않게 — 줄무늬 없이 부드러운 빛 + 흔들리는 짧은 물결 몇 줄 */
.sr-refl{-webkit-mask:none;mask:none;clip-path:none;width:clamp(90px,11vw,170px);height:78%;border-radius:50%;background:radial-gradient(50% 100% at 50% 0%,rgba(248,214,150,.62),rgba(240,190,110,.22) 45%,transparent 75%);filter:blur(10px);animation:srRefl 1.4s ease 1.1s forwards,srBreath 2.2s ease-in-out 2.4s infinite alternate}
@keyframes srBreath{to{opacity:.75;width:clamp(110px,13vw,200px)}}
.sr-waves i{height:2px;filter:blur(.6px);background:linear-gradient(90deg,transparent,rgba(250,220,160,calc(.9 - var(--w) * .055)) 45%,rgba(250,220,160,calc(.9 - var(--w) * .055)) 55%,transparent);width:calc(5% + var(--w) * 3.2%)}
.sr-waves i:nth-child(odd){margin-left:calc(var(--w) * .4%)}
.sr-waves i:nth-child(even){margin-left:calc(var(--w) * -.5%)}
/* ===== 10/20 기본 인트로(간단 · 깔끔) — 가는 원 하나, 로고, 부드럽게 걷힘 ===== */
.curtain.cs{background:#0b0d12;-webkit-mask:none;mask:none;display:grid;place-items:center;transition:opacity .9s ease .15s}
.is-ready .curtain.cs{opacity:0;pointer-events:none}
.cs-stage{position:relative;width:min(300px,70vw);aspect-ratio:1;display:grid;place-items:center;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.is-ready .cs-stage{transform:scale(1.08)}
.cs-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.cs-ring circle{fill:none;stroke:rgba(255,255,255,.55);stroke-width:.6;stroke-dasharray:604;stroke-dashoffset:604;animation:csDraw 1.4s cubic-bezier(.6,0,.2,1) .2s forwards}
@keyframes csDraw{to{stroke-dashoffset:0}}
.cs-logo{display:flex;flex-direction:column;align-items:center;opacity:0;transform:translateY(8px);animation:ctUp 1s cubic-bezier(.2,.7,.2,1) .8s forwards}
.cs-logo .curtain-mark{opacity:1;animation:none;font-size:clamp(22px,2.8vw,32px);letter-spacing:.26em;margin-right:-.26em}
.cs-logo .curtain-mark i{border-color:#d8bd85}
.cs-line{display:block;width:0;height:1px;background:#d8bd85;margin:14px 0 12px;animation:csLine .8s ease 1.3s forwards}
@keyframes csLine{to{width:36px}}
.cs-sub{font-size:clamp(12px,1vw,14px);color:rgba(255,255,255,.72);letter-spacing:.06em}
.cs-sub em{font-family:"Nanum Brush Script",cursive;font-style:italic;font-size:1.6em;color:#e3cc95;margin-left:3px;letter-spacing:0}
.cs .ct-skip{opacity:.7}
@media (prefers-reduced-motion:reduce){.cs-ring circle{animation:none;stroke-dashoffset:0}.cs-logo,.cs-line{animation:none;opacity:1;transform:none;width:36px}}
/* 해돋이: 금빛 스침(글자 배경 칠하기)이 글자를 일찍 보이게 해서 뺌 — 한 자씩 나타나기만 */
.sr-word{background:none;-webkit-background-clip:border-box;background-clip:border-box;animation:none}
.sr-word span:not(.sr-o){color:#fff;-webkit-text-fill-color:#fff;text-shadow:0 0 18px rgba(240,200,120,.35)}

/* ===== 기본 인트로(10/20 다시): 15번 로고 인트로 그대로 — 간단형(?intro=simple) · 해돋이(?intro=sunrise)는 보관 ===== */
.curtain.lg{background:#0e141c;-webkit-mask:none;mask:none;display:grid;place-items:center;transition:transform 1.1s var(--ease) .2s}
.is-ready .curtain.lg{transform:translateY(-100%)}
.is-done .curtain.lg{display:none}
/* 10/20 민 님: 첫 화면 사진이 바뀔 때 움찔함 → 천천히 커지던 반복(mvDrift)이 넘어갈 때 끊기며 크기가 튐. 반복을 빼고, 커짐·작아짐을 한 번의 긴 움직임으로 + 겹쳐 바뀌는 시간을 길게 */
.mv-slide{transition:opacity 1.8s ease-in-out}
.mv-slide img{transform:translate3d(calc(var(--mx,0) * -18px),calc(var(--py,0px) + var(--my,0) * -12px),0) scale(1.12);transition:transform 7s cubic-bezier(.3,.1,.3,1)}
.is-ready .mv-slide.on img{transform:translate3d(calc(var(--mx,0) * -18px),calc(var(--py,0px) + var(--my,0) * -12px),0) scale(1.03)}
.is-done .mv-slide.on img{animation:none}
/* 스크롤 · 마우스 입체감은 사진 틀(.mv-slides)이 맡고, 사진은 크기만 천천히 → 바뀔 때 튀지 않음 */
.mv-slides{transform:translate3d(calc(var(--mx,0) * -18px),calc(var(--py,0px) + var(--my,0) * -12px),0) scale(1.04);transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.mv-slide img,.is-ready .mv-slide.on img{translate:none}
.mv-slide img{transform:scale(1.12)}
.is-ready .mv-slide.on img{transform:scale(1.03)}
.mv-slides{position:absolute;inset:0}   /* 틀에 움직임을 주면 사진이 이 틀을 기준으로 잡힘 → 틀이 화면 전체를 덮어야 함(없으면 높이 0 → 사진 사라짐) */
