.site-loader{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;background:#061a2d;color:#f7fbff}.site-loader>div{width:190px;text-align:center}.site-loader span{display:block;font:600 14px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.23em}.site-loader i{display:block;width:100%;height:1px;margin:20px 0 12px;background:#72cbff;transform:scaleX(.08);transform-origin:left}.site-loader small{display:block;color:#7898aa;font:7px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.2em}.site-loader.is-finished{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,visibility .2s}.global-transition{position:fixed;z-index:900;inset:0;display:grid;place-content:center;justify-items:center;background:#061a2d;color:white;clip-path:inset(100% 0 0 0);pointer-events:none}.global-transition span{font:600 14px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.24em;opacity:0}.global-transition i{display:block;width:105px;height:1px;margin-top:18px;background:#72cbff;transform:scaleX(0)}a,button,.feed-card,.city-card,.hidden-item{transition-timing-function:cubic-bezier(.2,.7,.2,1)}.filter-list button:hover,.saved-filter:hover{border-color:#72a9c5;transform:translateY(-1px)}.post-actions button:hover,.comment-list button:hover{color:#168cca}.hidden-item:hover{background:rgba(114,203,255,.035)}.hidden-item:hover h3{color:#137fb7}.course-days article:hover h3{transform:translateX(5px);transition:transform .35s ease}.site-header a,.community-header a,.detail-header a{transition:color .25s ease}.site-header a:hover,.community-header a:hover,.detail-header a:hover{color:#72cbff}@media(prefers-reduced-motion:reduce){.site-loader{transition:none}.global-transition{display:none!important}*,*::before,*::after{scroll-behavior:auto!important}}
.site-grain{position:fixed;z-index:850;inset:-50%;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");transform:rotate(.01deg)}.scroll-progress{position:fixed;z-index:70;left:clamp(18px,2vw,32px);bottom:22px;width:78px;display:flex;align-items:center;gap:9px;mix-blend-mode:difference;color:#fff;pointer-events:none}.scroll-progress::before{content:'SCROLL';position:absolute;bottom:8px;left:0;font:6px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.18em}.scroll-progress i{width:52px;height:1px;margin-top:15px;background:#fff;transform:scaleX(0);transform-origin:left}.scroll-progress span{margin-top:15px;font:7px 'Pretendard','Noto Sans KR',sans-serif}.cursor-dot,.cursor-ring{position:fixed;z-index:950;left:0;top:0;pointer-events:none;transform:translate(-50%,-50%);will-change:transform}.cursor-dot{width:4px;height:4px;margin:-2px;border-radius:50%;background:#72cbff}.cursor-ring{width:35px;height:35px;margin:-17.5px;display:grid;place-items:center;border:1px solid rgba(114,203,255,.55);border-radius:50%;transition:width .35s,height .35s,margin .35s,background .35s,border-color .35s}.cursor-ring span{font:0 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.12em;color:#061a2d;transition:font-size .25s}.cursor-ring.is-interactive{width:58px;height:58px;margin:-29px;background:rgba(114,203,255,.88);border-color:transparent}.cursor-ring.is-interactive span{font-size:6px}.has-premium-cursor,.has-premium-cursor a,.has-premium-cursor button{cursor:none}.site-loader::before,.global-transition::before{content:'';position:absolute;inset:24px;border:1px solid rgba(114,203,255,.1);pointer-events:none}.site-loader::after{content:'35.6762° N  ·  139.6503° E';position:absolute;right:35px;bottom:32px;color:#55778a;font:6px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.18em}.global-transition::after{content:'NEXT DESTINATION';position:absolute;left:35px;bottom:32px;color:#55778a;font:6px 'Pretendard','Noto Sans KR',sans-serif;letter-spacing:.18em}
@media(max-width:760px){.cursor-dot,.cursor-ring{display:none}.scroll-progress{left:15px;bottom:13px}.site-loader::before,.global-transition::before{inset:12px}.site-loader::after,.global-transition::after{right:20px;left:auto;bottom:20px}}
.site-loader{animation:loaderFailsafe 0s 3s forwards}@keyframes loaderFailsafe{to{visibility:hidden;pointer-events:none}}

/* 로딩 항로를 따라 이동하는 비행기 */
.site-loader > div { position: relative; }
.site-loader > div::before,
.site-loader > div::after {
  content: '';
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(114, 203, 255, .58);
  box-shadow: 31px -10px 0 rgba(114, 203, 255, .22), 82px 8px 0 rgba(114, 203, 255, .3), 151px -7px 0 rgba(114, 203, 255, .2);
}
.site-loader > div::before { left: 8px; top: 30px; }
.site-loader > div::after { right: 11px; top: 49px; opacity: .65; }
.loader-plane {
  position: absolute;
  z-index: 2;
  left: -10px;
  top: 19px;
  width: 37px;
  height: 37px;
  overflow: visible;
  filter: drop-shadow(0 0 7px rgba(114, 203, 255, .7));
  transform-origin: center;
  pointer-events: none;
}
.loader-plane-body { fill: #f7fbff; }
.loader-plane-window {
  fill: none;
  stroke: #72cbff;
  stroke-width: 2.4;
  stroke-linecap: round;
}
.site-loader i {
  background: linear-gradient(90deg, #72cbff, #d8f2ff);
  box-shadow: 0 0 10px rgba(114, 203, 255, .3);
}
@media (prefers-reduced-motion: reduce) {
  .loader-plane { left: 180px; }
}
/* Subpage-only global search */
body.search-open,body.login-open{overflow:hidden}
.subpage-search-trigger{min-width:40px;width:40px;height:40px;margin-left:10px;padding:0;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:#fff;cursor:pointer}
.subpage-search-trigger i{position:relative;width:15px;height:15px;border:1.5px solid currentColor;border-radius:50%}
.subpage-search-trigger i::after{content:'';position:absolute;right:-4px;bottom:-3px;width:6px;height:1.5px;background:currentColor;transform:rotate(45deg);transform-origin:left center}
.subpage-search[hidden],.login-modal[hidden]{display:none!important}
.subpage-search,.login-modal{position:fixed;z-index:2200;inset:0;padding:32px;display:grid;place-items:start center;background:rgba(2,13,23,.78);opacity:0;transition:opacity .24s;backdrop-filter:blur(12px)}
.subpage-search.open,.login-modal.open{opacity:1}
.subpage-search>section,.login-modal>section{position:relative;width:min(760px,100%);max-height:calc(100dvh - 64px);margin-top:6vh;padding:32px;overflow:auto;border-radius:16px;background:#f5f9fc;color:#071a29;box-shadow:0 30px 90px rgba(0,0,0,.38);transform:translateY(18px);transition:transform .3s}
.login-modal>section{width:min(440px,100%)}
.subpage-search.open>section,.login-modal.open>section{transform:none}
.subpage-search header,.login-modal header{position:relative;padding-right:45px}
.subpage-search header p,.login-modal header p{margin:0;color:#168cca;font-size:7px;font-weight:700;letter-spacing:.18em}
.subpage-search header h2,.login-modal header h2{margin:8px 0 25px;font:38px/1 'Playfair Display','Pretendard',sans-serif}
.subpage-search-close,.login-modal-close{position:absolute;right:0;top:-8px;width:38px;height:38px;border:0;background:transparent;color:#17384c;font-size:28px;cursor:pointer}
.subpage-search label{height:58px;padding:0 18px;display:flex;align-items:center;gap:18px;border:1px solid #c8d9e1;border-radius:9px;background:#fff}
.subpage-search label>span{color:#168cca;font-size:7px;font-weight:700;letter-spacing:.14em}
.subpage-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#17384c;font:14px 'Pretendard',sans-serif}
.subpage-search-results{margin-top:20px;border-top:1px solid #d3e0e6}
.subpage-search-results>a{min-height:64px;padding:12px 5px;display:grid;grid-template-columns:88px 1fr 22px;align-items:center;gap:10px;border-bottom:1px solid #dbe5e9}
.subpage-search-results>a:hover{background:#eaf4f8}
.subpage-search-results small{color:#168cca;font-size:6px;font-weight:700;letter-spacing:.1em}
.subpage-search-results strong,.subpage-search-results span{display:block}
.subpage-search-results strong{font:19px 'Playfair Display','Pretendard',sans-serif}
.subpage-search-results span{margin-top:4px;color:#7a909b;font-size:8px}
.subpage-search-results>a>i{color:#168cca;font-style:normal}
.subpage-search-results>p{padding:35px 5px;color:#718691;font-size:10px;text-align:center}
.login-modal-copy{margin:-8px 0 24px;color:#718691;font-size:11px;line-height:1.7}
.login-form{display:grid;grid-template-columns:1fr;gap:16px}
.login-form>label{display:grid;gap:8px;color:#168cca;font-size:7px;font-weight:700;letter-spacing:.14em}
.login-form>label input{width:100%;height:54px;padding:0 16px;border:1px solid #c8d9e1;border-radius:9px;outline:0;background:#fff;color:#17384c;font:13px 'Pretendard',sans-serif;transition:border-color .2s,box-shadow .2s}
.login-form>label input:focus{border-color:#168cca;box-shadow:0 0 0 3px rgba(22,140,202,.1)}
.login-form-options{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between}
.login-form-options label{display:flex;align-items:center;gap:7px;color:#718691;font-size:9px;cursor:pointer}
.login-form-options input{accent-color:#168cca}
.login-form-options button{padding:4px 0;border:0;background:transparent;color:#168cca;font-size:9px;cursor:pointer}
.login-submit{grid-column:1/-1;height:54px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;border:0;border-radius:9px;background:#071d2a;color:#fff;font-size:9px;font-weight:700;letter-spacing:.12em;cursor:pointer;transition:background .25s,transform .25s}
.login-submit:hover{background:#0d3850;transform:translateY(-1px)}
.login-status{grid-column:1/-1;min-height:16px;margin:0;color:#168cca;font-size:9px;text-align:center}
.login-signup{margin-top:18px;padding-top:18px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d3e0e6;background:transparent;color:#718691;font-size:9px}
.login-signup a{color:#168cca;font-weight:700;letter-spacing:.08em}
@media(max-width:1100px){.subpage-search-trigger{min-width:34px;width:34px;margin-left:8px;padding:0}.subpage-search-trigger span{display:none}}

.mobile-back-to-top{
  position:fixed;
  z-index:2100;
  right:28px;
  bottom:28px;
  width:44px;
  height:44px;
  box-sizing:border-box;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:2px;
  border:1px solid rgba(114,203,255,.5);
  border-radius:50%;
  background:rgba(6,26,45,.9);
  color:#fff;
  font-family:'Pretendard','Noto Sans KR',sans-serif;
  box-shadow:0 9px 28px rgba(2,13,23,.24);
  opacity:0;
  visibility:hidden;
  transform:translateY(12px);
  pointer-events:none;
  cursor:pointer;
  touch-action:manipulation;
  backdrop-filter:blur(10px);
  transition:opacity .25s,visibility .25s,transform .25s,background .25s;
}
.mobile-back-to-top svg,.mobile-back-to-top span{pointer-events:none}
.mobile-back-to-top svg{position:relative;top:-1px;width:16px;height:10px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.mobile-back-to-top span{color:#9edcff;font-size:6px;font-weight:700;letter-spacing:.12em}
.mobile-back-to-top.is-visible{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.mobile-back-to-top:hover,.mobile-back-to-top:active{background:#168cca}
.mobile-back-to-top:focus-visible{outline:2px solid #fff;outline-offset:3px}
.hidden-save-toast.show~.mobile-back-to-top,
.journey-toast.show~.mobile-back-to-top{bottom:86px}

@media(max-width:760px){
  .mobile-back-to-top{right:18px;bottom:18px;width:48px;height:48px}

  .subpage-search-trigger{min-width:34px;width:34px;height:34px;margin-left:5px;padding:0}
  .subpage-search-trigger span{display:none}
  .subpage-search{padding:10px}
  .login-modal{padding:10px}
  .subpage-search>section,.login-modal>section{max-height:calc(100dvh - 20px);margin-top:0;padding:24px 18px}
  .subpage-search header h2,.login-modal header h2{font-size:32px}
  .subpage-search-results>a{grid-template-columns:72px 1fr 18px}
  .login-form{grid-template-columns:1fr}
  .login-form-options,.login-submit,.login-status{grid-column:1}
}
