:root{
  --ice:#eaf6fc;
  --ice-2:#d6edf9;
  --blue:#5aadd9;
  --blue-strong:#368fbd;
  --navy:#18384b;
  --navy-2:#214f68;
  --white:#ffffff;
  --line:rgba(255,255,255,.19);
  --dark-line:rgba(24,56,75,.13);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
html,body{margin:0;min-height:100%;font-family:"Gowun Dodum",system-ui,sans-serif;color:var(--navy);}
body{background:var(--ice);}
button,input{font:inherit;}
a{color:inherit;}

.hero{
  position:relative;
  min-height:100vh;
  overflow:hidden;
  display:grid;
  grid-template-columns:minmax(360px,.85fr) minmax(520px,1.15fr);
  align-items:center;
  background:
    radial-gradient(circle at 70% 38%,rgba(255,255,255,.96) 0,rgba(219,242,253,.78) 32%,transparent 59%),
    linear-gradient(135deg,#f8fcff 0%,#e7f5fc 55%,#d3edf9 100%);
  padding:7vw;
}

.hero::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(54,143,189,.045) 1px,transparent 1px);
  background-size:70px 100%;
  pointer-events:none;
}

.hero-copy{
  position:relative;
  z-index:8;
  max-width:620px;
}

.eyebrow{
  margin:0;
  font-size:14px;
  font-weight:700;
  letter-spacing:.18em;
  color:var(--blue-strong);
}

.hero h1{
  margin:24px 0 30px;
  font-family:"Nanum Myeongjo",serif;
  font-size:clamp(64px,7vw,112px);
  line-height:1.06;
  font-weight:400;
  letter-spacing:-.08em;
}

.hero h1 span{color:var(--blue-strong);}

.intro{
  margin:0;
  max-width:470px;
  font-size:18px;
  line-height:1.9;
  color:#547588;
}

.hero-links{
  display:flex;
  align-items:center;
  gap:26px;
  margin-top:34px;
  flex-wrap:wrap;
}

.hero-links a,
.hero-links button{
  appearance:none;
  -webkit-appearance:none;
  display:inline-block;
  margin:0;
  border:0;
  border-radius:0;
  border-bottom:1px solid var(--sky);
  padding:0 0 6px;
  background:none;
  box-shadow:none;
  outline:0;
  text-decoration:none;
  color:var(--navy);
  font-family:inherit;
  font-size:12px;
  font-weight:400;
  line-height:1.2;
  letter-spacing:.12em;
  cursor:pointer;
}

.hero-links a:hover,
.hero-links button:hover{
  color:#268fc1;
  border-bottom-color:#268fc1;
}

.portrait-area{
  position:relative;
  height:88vh;
  min-height:660px;
}

.portrait{
  position:absolute;
  z-index:5;
  left:50%;
  bottom:-6%;
  width:min(820px,105%);
  height:100%;
  transform:translateX(-50%);
  object-fit:contain;
  object-position:center bottom;
  filter:drop-shadow(0 35px 35px rgba(33,101,138,.13));
}

.blue-orbit{
  position:absolute;
  z-index:1;
  border:1px solid rgba(62,151,199,.23);
  border-radius:50%;
  left:51%;
  top:48%;
  transform:translate(-50%,-50%);
}
.orbit-1{width:72%;aspect-ratio:1;}
.orbit-2{width:91%;aspect-ratio:1;}

.bloom{
  position:absolute;
  z-index:2;
  border-radius:50%;
  filter:blur(2px);
}
.bloom-1{
  width:280px;height:280px;
  top:8%;right:4%;
  background:radial-gradient(circle,#fff 0,rgba(115,198,240,.28) 38%,transparent 70%);
}
.bloom-2{
  width:350px;height:350px;
  bottom:5%;left:-4%;
  background:radial-gradient(circle,#fff 0,rgba(91,178,222,.19) 40%,transparent 71%);
}

.flower-mark{
  position:absolute;
  z-index:7;
  width:78px;height:78px;
  right:10%;top:20%;
}
.flower-mark i{
  position:absolute;
  width:24px;height:42px;
  left:27px;top:0;
  border-radius:90% 20% 90% 20%;
  background:linear-gradient(#c6ecff,#5db7e4);
  transform-origin:12px 39px;
  opacity:.9;
}
.flower-mark i:nth-child(2){transform:rotate(72deg);}
.flower-mark i:nth-child(3){transform:rotate(144deg);}
.flower-mark i:nth-child(4){transform:rotate(216deg);}
.flower-mark i:nth-child(5){transform:rotate(288deg);}
.flower-mark b{
  position:absolute;width:12px;height:12px;border-radius:50%;
  left:33px;top:33px;background:white;
}

.scroll-cue{
  position:absolute;
  z-index:10;
  left:7vw;
  bottom:34px;
  display:flex;
  align-items:center;
  gap:12px;
  color:#6f93a5;
  font-size:10px;
  letter-spacing:.18em;
}
.scroll-cue i{
  display:block;
  width:70px;height:1px;
  background:#6f9fb8;
  position:relative;
}
.scroll-cue i::after{
  content:"";
  position:absolute;
  right:0;top:-2px;
  width:5px;height:5px;border-right:1px solid #6f9fb8;border-bottom:1px solid #6f9fb8;
  transform:rotate(-45deg);
}


/* ===== SONG BOOK ===== */
.songbook{
  min-height:100vh;
  padding:88px 24px 110px;
  color:var(--navy);
  background:
    radial-gradient(circle at 82% 8%,rgba(98,190,235,.18),transparent 26%),
    radial-gradient(circle at 8% 75%,rgba(150,218,249,.18),transparent 28%),
    linear-gradient(180deg,#e8f6fd 0%,#f9fdff 48%,#edf8fd 100%);
}

.songbook-inner{
  width:min(1420px,calc(100% - 24px));
  margin:0 auto;
}

.songbook-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:30px;
  padding-bottom:30px;
  border-bottom:1px solid rgba(47,126,169,.24);
}

.songbook h2{
  margin:12px 0 10px;
  font-family:"Nanum Myeongjo",serif;
  font-size:clamp(54px,6vw,82px);
  line-height:1;
  font-weight:400;
  color:#245f80;
}

.songbook-desc{
  margin:0;
  color:#456b7e;
  font-size:17px;
  line-height:1.65;
}

.song-total{text-align:right;}
.song-total b{
  display:block;
  font-size:48px;
  line-height:1;
  font-weight:400;
  color:#3e9dcc;
}
.song-total span{
  display:block;
  margin-top:7px;
  font-size:11px;
  font-weight:700;
  letter-spacing:.15em;
  color:#7197aa;
}

/* ===== REQUEST GUIDE ===== */
.request-guide{
  width:100%;
  margin:26px 0 22px;
  border:1px solid #bddce9;
  border-radius:14px;
  background:rgba(255,255,255,.72);
  overflow:hidden;
}

.request-guide summary{
  list-style:none;
  display:grid;
  grid-template-columns:auto auto 1fr auto;
  gap:10px;
  align-items:center;
  min-height:62px;
  padding:0 18px;
  cursor:pointer;
  color:#245e7b;
  background:rgba(255,255,255,.82);
}

.request-guide summary::-webkit-details-marker{display:none;}
.request-guide summary>span{color:#50aedd;}
.request-guide summary>strong{font-size:15px;}
.request-guide summary>small{color:#7899aa;font-size:12px;}

.request-guide summary>b{
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border:1px solid #b8d9e8;
  border-radius:50%;
  background:#fff;
  color:#4a9bc3;
  font-size:17px;
  transition:transform .18s ease;
}
.request-guide[open] summary>b{transform:rotate(45deg);}

.request-guide-body{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:12px;
  padding:18px;
  border-top:1px solid #d2e7f0;
  background:#f5fbfe;
}

.request-guide-body section{
  grid-column:span 4;
  min-width:0;
  padding:18px 19px;
  border:1px solid #d2e6ef;
  border-radius:12px;
  background:#fff;
  color:#466c80;
  font-size:13px;
  line-height:1.65;
}

.request-guide-body .guide-wide{grid-column:1 / -1;}
.request-guide-body h3{margin:0 0 7px;color:#174b66;font-size:17px;}
.request-guide-body p{margin:6px 0 0;}
.request-guide-body section>span{
  display:block;
  margin-bottom:5px;
  color:#348eb8;
  font-size:11px;
  font-weight:800;
}
.request-guide-body section>strong{
  display:block;
  color:#174b66;
  font-size:19px;
}
.guide-red{color:#c9505b;font-weight:700;}
.guide-priority{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:24px;
  align-items:start;
}
.guide-example{
  width:fit-content;
  max-width:100%;
  margin-top:10px!important;
  padding:9px 11px;
  border-radius:8px;
  background:#edf8fd;
  color:#347b9d;
}
.guide-notice{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:24px;
  align-items:center;
  background:#f9fdff!important;
}
.guide-notice>span{margin:0!important;}
.guide-notice p{margin:0;}

/* ===== SONG SEARCH / CATEGORY / UNIFIED LIST ===== */
.toolbar{
  display:block;
  padding:4px 0 20px;
}
.search-box{display:block;width:min(560px,100%);}
.search-box span{
  display:block;
  margin-bottom:8px;
  color:#3f7895;
  font-size:12px;
  font-weight:800;
  letter-spacing:.1em;
}
.search-box input{
  width:100%;height:50px;padding:0 16px;
  border:1px solid #acd1e3;border-radius:12px;outline:0;
  background:#fff;color:#123e55;font-size:16px;font-weight:500;
}
.search-box input:focus{border-color:#64b7df;box-shadow:0 0 0 3px rgba(100,183,223,.12);}
.search-box input::placeholder{color:#7897a7;}

.song-browser{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:30px;
  align-items:start;
  padding-top:8px;
}
.filters{
  position:sticky;
  top:24px;
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:0;
}
.filters button{
  width:100%;min-height:44px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  border:0;border-radius:12px;padding:0 15px;
  background:transparent;color:#426b81;
  font-size:13px;font-weight:800;text-align:left;
  transition:background .15s ease,color .15s ease,box-shadow .15s ease;
}
.filters button b{color:#75a2b8;font-size:10px;font-weight:800;}
.filters button:hover{background:rgba(255,255,255,.62);color:#225f7d;}
.filters button.active{
  background:#225f80;color:#fff;
  box-shadow:0 5px 13px rgba(37,91,120,.16);
}
.filters button.active b{
  min-width:32px;padding:4px 7px;border-radius:999px;
  background:rgba(255,255,255,.18);color:#fff;text-align:center;
}
.song-table-wrap{min-width:0;}
.song-table-head{
  display:grid;
  grid-template-columns:minmax(310px,1.65fr) minmax(150px,1fr) 120px minmax(150px,.8fr) 22px;
  gap:18px;align-items:center;
  min-height:42px;padding:0 18px;
  border-bottom:1px solid rgba(58,123,157,.18);
  color:#527b91;font-size:11px;font-weight:800;
}
.song-list{display:flex;flex-direction:column;gap:8px;padding-top:14px;contain:layout style;}
.song-item{
  min-width:0;min-height:70px;
  display:grid;
  grid-template-columns:minmax(310px,1.65fr) minmax(150px,1fr) 120px minmax(150px,.8fr) 22px;
  gap:18px;align-items:center;
  padding:9px 18px;
  border:1px solid #c9e0eb;border-radius:15px;
  background:rgba(255,255,255,.92);
  box-shadow:0 2px 7px rgba(45,104,135,.055);
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;
  contain:layout style paint;
}
.song-item:hover{
  border-color:#8fc8e2;
  box-shadow:0 5px 15px rgba(45,104,135,.09);
  transform:translateY(-1px);
}
.song-main{min-width:0;display:grid;grid-template-columns:46px minmax(0,1fr);gap:13px;align-items:center;}
.song-cover{
  width:46px;height:46px;display:block;object-fit:cover;
  border:1px solid #d5e5ed;border-radius:8px;background:#eaf6fb;
}
.song-title{
  min-width:0;margin:0;color:#173e55;font-size:15px;line-height:1.35;font-weight:800;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.song-artist{
  min-width:0;margin:0;color:#294f64;font-size:13px;line-height:1.4;font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.song-category{color:#367da1;font-size:11px;font-weight:800;white-space:nowrap;}
.song-note{
  min-width:0;color:#668797;font-size:12px;line-height:1.4;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.song-arrow{color:#7ba9c0;font-size:23px;font-weight:300;text-align:right;line-height:1;}
.empty{padding:80px 0;text-align:center;color:#7697a8;font-size:16px;}
/* ===== RESPONSIVE ===== */
@media(max-width:900px){
  .hero{
    grid-template-columns:1fr;
    padding:70px 28px 0;
    align-items:start;
  }
  .hero h1{font-size:64px;}
  .intro{font-size:15px;}
  .portrait-area{height:60vh;min-height:460px;margin-top:-10px;}
  .portrait{width:min(700px,115%);}
  .scroll-cue{left:28px;}

  .request-guide-body section{grid-column:span 6;}
  .request-guide-body .guide-wide{grid-column:1/-1;}

  .song-browser{grid-template-columns:155px minmax(0,1fr);gap:18px;}
  .song-table-head,.song-item{grid-template-columns:minmax(260px,1.6fr) minmax(130px,.9fr) 100px minmax(100px,.7fr) 18px;gap:12px;}
}

@media(max-width:650px){
  .request-guide summary{
    grid-template-columns:auto 1fr auto;
    padding:0 14px;
  }
  .request-guide summary small{display:none;}
  .request-guide-body{
    grid-template-columns:1fr;
    padding:12px;
  }
  .request-guide-body section,
  .request-guide-body .guide-wide{grid-column:1;}
  .guide-priority,
  .guide-notice{grid-template-columns:1fr;gap:8px;}
}

@media(max-width:620px){
  .hero{padding:52px 20px 0;}
  .hero h1{font-size:48px;margin-top:18px;}
  .eyebrow{font-size:10px;}
  .intro{font-size:14px;}
  .hero-links{margin-top:25px;}
  .portrait-area{height:55vh;min-height:390px;}
  .flower-mark{transform:scale(.75);right:4%;top:18%;}
  .scroll-cue{display:none;}

  .songbook{padding:60px 14px 70px;}
  .songbook-inner{width:100%;}
  .songbook-head{align-items:flex-start;}
  .songbook h2{font-size:54px;}
  .songbook-desc{font-size:14px;}
  .song-total b{font-size:34px;}

  .song-browser{grid-template-columns:1fr;gap:14px;}
  .filters{position:static;flex-direction:row;overflow-x:auto;padding-bottom:5px;scrollbar-width:none;}
  .filters::-webkit-scrollbar{display:none;}
  .filters button{width:auto;min-width:max-content;padding:0 14px;}
  .song-table-head{display:none;}
  .song-item{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:4px 12px;padding:10px 12px;}
  .song-main{grid-column:1;grid-row:1;grid-template-columns:48px minmax(0,1fr);}
  .song-cover{width:48px;height:48px;}
  .song-artist{grid-column:1;grid-row:2;margin-left:61px;font-size:11px;}
  .song-category{grid-column:2;grid-row:1;}
  .song-note{display:none;}
  .song-arrow{grid-column:2;grid-row:2;font-size:18px;}
}


.archive-loading{
  padding:42px 0;
  color:#7594a4;
  font-size:13px;
  text-align:center;
}

.archive-loading[hidden]{display:none;}


/* ===== HISTORY ===== */
.history-page{min-height:100vh;padding:54px 24px 100px;background:radial-gradient(circle at 84% 8%,rgba(100,189,232,.16),transparent 28%),linear-gradient(180deg,#eef9fe 0%,#f9fdff 55%,#edf8fd 100%);color:#173f54;}
.history-page[hidden]{display:none;}
.history-shell{width:min(1320px,calc(100% - 24px));margin:0 auto;}
.history-back{appearance:none;border:0;border-bottom:1px solid #8cc9e5;padding:0 0 6px;background:transparent;color:#367b9d;font-size:11px;font-weight:800;letter-spacing:.12em;cursor:pointer;}
.history-head{padding-bottom:28px;border-bottom:1px solid #bddce9;}
.history-title-row{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:42px;}
.history-title-row h2{margin:10px 0 14px;font-family:"Nanum Myeongjo",serif;font-size:clamp(44px,5.5vw,72px);font-weight:400;line-height:1.05;color:#245f80;}
.history-title-row h2 span{color:#58add7;}
.history-title-row p{margin:0;}
.history-total{text-align:right;}
.history-total b{display:block;color:#46a5d3;font-size:48px;font-weight:400;line-height:1;}
.history-total span{color:#7197aa;font-size:11px;letter-spacing:.15em;}
.history-tools{display:grid;grid-template-columns:minmax(280px,460px) auto;justify-content:space-between;align-items:end;gap:24px;padding:26px 0;}
.history-search span{display:block;margin-bottom:8px;color:#43809d;font-weight:800;letter-spacing:.12em;}
.history-search input,.history-sort{height:48px;border:1px solid #b9d9e8;border-radius:11px;background:#fff;color:#173f54;outline:0;}
.history-search input{width:100%;padding:0 14px;font-size:14px;}
.history-sort{min-width:130px;padding:0 32px 0 12px;font-size:12px;}
.history-list{border-top:1px solid #c7e1ec;}
.history-date{font-weight:800;letter-spacing:.02em;}
.history-content{margin:0;white-space:pre-wrap;word-break:keep-all;}
.history-empty{padding:90px 0;text-align:center;color:#7697a8;}
.history-admin-tools{grid-template-columns:minmax(220px,1fr) 150px;}
.admin-history-list{max-height:calc(100vh - 245px);overflow:auto;}
.admin-history-row{display:grid;align-items:start;border-bottom:1px solid #e0edf3;cursor:pointer;}
.admin-history-row:hover{background:#f3faff;}
.admin-history-row.active{background:#e2f4fc;box-shadow:inset 4px 0 0 #50a9d4;}
.admin-history-row time{color:#3f99c3;font-weight:800;}
.admin-history-row p{margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
@media(max-width:760px){
  .history-page{padding:36px 14px 70px;}
  .history-shell{width:100%;}
  .history-title-row{align-items:flex-start;}
  .history-title-row h2{font-size:44px;}
  .history-tools{grid-template-columns:1fr;}
  .history-content{font-size:15px;}
  .history-admin-tools{grid-template-columns:1fr;}
}


/* ===== HISTORY DATA SWITCH ===== */
.history-section-tabs{display:flex;gap:8px;margin:28px 0 6px;padding-bottom:18px;border-bottom:1px solid #c7e1ec;}
.history-section-tabs button{appearance:none;border:1px solid #bfdde9;border-radius:999px;background:#fff;color:#5c7f90;font-family:inherit;font-weight:800;letter-spacing:.09em;cursor:pointer;}
.history-section-tabs button.active{border-color:#58add7;background:#58add7;color:#fff;}
#historyDiaryPanel[hidden],#historyVodPanel[hidden],.snow-vod-view[hidden]{display:none;}

/* ===== SNOW VOD DATA ===== */
.snow-vod-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;}
.snow-vod-mode-tabs{display:flex;gap:5px;padding:4px;border:1px solid #c2dfeb;border-radius:12px;background:rgba(255,255,255,.72);}
.snow-vod-mode{border:0;border-radius:9px;background:transparent;color:#6b8998;font-family:inherit;font-weight:800;cursor:pointer;}
.snow-vod-mode:hover{background:#eef8fd;color:#2c83aa;}
.snow-vod-mode.active{background:#58add7;color:#fff;box-shadow:0 5px 15px rgba(73,163,207,.16);}
.snow-vod-date-nav{display:flex;align-items:center;gap:7px;}
.snow-vod-date-nav button{border:1px solid #bddbe8;border-radius:10px;background:#fff;color:#3e7590;font-family:inherit;cursor:pointer;}
#snowVodPrev,#snowVodNext{width:40px;font-size:15px;}
.snow-vod-date-label{padding:0 14px;font-weight:800;}
.snow-vod-today{padding:0 14px;color:#2f8cb8!important;font-weight:800;}
.snow-vod-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px;border:1px solid #c7e0eb;border-radius:14px;background:rgba(255,255,255,.75);overflow:hidden;}
.snow-vod-summary>div{padding:15px 18px;border-right:1px solid #dbeaf1;}.snow-vod-summary>div:last-child{border-right:0;}
.snow-vod-summary span{display:block;margin-bottom:5px;font-weight:700;letter-spacing:.06em;}


/* DAY */
.snow-day-list{display:grid;gap:12px;}
.snow-day-card{display:grid;align-items:center;border:1px solid #c7dfeb;border-radius:15px;background:#fff;box-shadow:0 6px 20px rgba(59,137,174,.045);}
.snow-day-time{font-weight:800;}
.snow-day-main strong{display:block;}
.snow-day-main span{display:block;margin-top:6px;}
.snow-replay{display:inline-flex;align-items:center;gap:7px;border-bottom:1px solid #8fc9e3;padding-bottom:4px;color:#3c8db3;text-decoration:none;font-weight:800;letter-spacing:.08em;}

/* WEEK */
.snow-week-wrap{overflow:auto;border:1px solid #c7e0eb;border-radius:15px;background:#fff;}

.snow-week-head{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));border-bottom:1px solid #d9e9f0;background:#f5fbfe;}
.snow-week-day{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;color:#7893a1;}
.snow-week-day:last-child{border-right:0;}.snow-week-day strong{color:#245f80;}.snow-week-day.today{background:#eaf7fd;}
.snow-week-body{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));}
.snow-week-cell{border-right:1px solid #e4eef3;background:#fff;}.snow-week-cell:last-child{border-right:0;}
.snow-week-item{display:block;border:1px solid #cce4ef;border-radius:10px;background:#f5fbfe;text-decoration:none;}
.snow-week-item time{display:block;margin-bottom:4px;font-weight:800;}
.snow-week-item strong{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.snow-week-item small{display:block;margin-top:5px;}

/* MONTH */
.snow-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden;border:1px solid #c7e0eb;border-radius:15px;background:#fff;}
.snow-month-weekday{display:flex;align-items:center;justify-content:center;border-right:1px solid #e1edf2;border-bottom:1px solid #d9e9f0;background:#f5fbfe;color:#718e9d;font-weight:800;}
.snow-month-day{border-right:1px solid #e5eff4;border-bottom:1px solid #e5eff4;background:#fff;}
.snow-month-day.outside{background:#fbfdfe;opacity:.45;}.snow-month-day.today{box-shadow:inset 0 0 0 1px #58add7;}
.snow-month-date{display:block;margin-bottom:8px;}
.snow-month-vod{display:block;margin-bottom:6px;border-radius:8px;background:#edf8fd;color:#2e708f;text-decoration:none;}
.snow-month-more{color:#469bc3;font-weight:800;}
.snow-vod-empty{padding:70px 0;text-align:center;color:#7896a5;font-size:13px;}

@media(max-width:760px){
  .snow-vod-toolbar{align-items:stretch;flex-direction:column;}
  .snow-vod-date-nav{width:100%;}
  .snow-vod-date-label{min-width:0;flex:1;}
  .snow-vod-summary{grid-template-columns:1fr;}
  .snow-vod-summary>div{border-right:0;border-bottom:1px solid #dbeaf1;}
  .snow-vod-summary>div:last-child{border-bottom:0;}
  .snow-day-card{grid-template-columns:1fr;gap:8px;}
  .snow-replay{width:max-content;}
  #historyVodPanel{overflow-x:auto;}
  .snow-month-grid{min-width:760px;}
}

/* ===== VIDEO ARCHIVE ===== */
.video-archive-page{
  min-height:100vh;
  padding:54px 24px 100px;
  background:
    radial-gradient(circle at 88% 10%,rgba(93,185,230,.16),transparent 28%),
    linear-gradient(180deg,#eef9fe 0%,#f9fdff 54%,#edf8fd 100%);
  color:#173f54;
}

.video-archive-page[hidden]{display:none;}

.video-archive-shell{
  width:min(1320px,calc(100% - 24px));
  margin:0 auto;
}

.video-back{
  appearance:none;
  border:0;
  border-bottom:1px solid #8cc9e5;
  padding:0 0 6px;
  background:transparent;
  color:#367b9d;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
  cursor:pointer;
}

.video-archive-head{
  padding-bottom:28px;
  border-bottom:1px solid #bddce9;
}

.video-title-row{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:30px;
  margin-top:42px;
}

.video-title-row h2{
  margin:10px 0 14px;
  font-family:"Nanum Myeongjo",serif;
  font-size:clamp(58px,7vw,94px);
  font-weight:400;
  line-height:.82;
  color:#245f80;
}

.video-title-row h2 span{color:#58add7;}

.video-title-row p{
  margin:0;
  color:#5c7e8f;
  font-size:15px;
}

.video-total{text-align:right;}
.video-total b{
  display:block;
  color:#46a5d3;
  font-size:48px;
  font-weight:400;
  line-height:1;
}
.video-total span{
  color:#7197aa;
  font-size:11px;
  letter-spacing:.15em;
}

.video-toolbar{
  display:grid;
  grid-template-columns:minmax(280px,460px) 1fr;
  gap:30px;
  align-items:end;
  padding:26px 0;
}

.video-search span{
  display:block;
  margin-bottom:8px;
  color:#43809d;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
}

.video-search input{
  width:100%;
  height:48px;
  border:1px solid #b9d9e8;
  border-radius:11px;
  padding:0 14px;
  background:#fff;
  color:#173f54;
  font-size:14px;
  outline:0;
}

.video-search input:focus{
  border-color:#64b7df;
  box-shadow:0 0 0 3px rgba(100,183,223,.12);
}

.video-toolbar-right{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}

.video-filters{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}

.video-sort{
  height:38px;
  border:1px solid #bddce9;
  border-radius:10px;
  padding:0 30px 0 11px;
  background:#fff;
  color:#55798b;
  font-size:11px;
  font-weight:700;
  outline:0;
}

.video-filters button{
  border:1px solid #bddce9;
  border-radius:999px;
  padding:9px 14px;
  background:#fff;
  color:#55798b;
  font-size:11px;
  font-weight:800;
  cursor:pointer;
}

.video-filters button:hover{
  border-color:#72b9db;
  color:#2f7fa5;
}

.video-filters button.active{
  border-color:#58add7;
  background:#58add7;
  color:#fff;
}

/* PC: always three equal columns */
.video-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
  align-items:start;
}

.video-card{
  min-width:0;
  overflow:hidden;
  border:1px solid #c4deea;
  border-radius:17px;
  background:#fff;
  box-shadow:0 8px 28px rgba(54,126,159,.06);
}

/* Thumbnail is ALWAYS landscape 16:9, regardless of original video orientation */
.video-thumb{
  position:relative;
  display:block;
  width:100%;
  aspect-ratio:16 / 9;
  overflow:hidden;
  background:#dceef6;
}

.video-thumb img{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}

.video-play{
  position:absolute;
  z-index:2;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  border-radius:50%;
  background:rgba(255,255,255,.95);
  color:#4b9ec7;
  font-size:16px;
  box-shadow:0 8px 25px rgba(28,77,101,.15);
}

.video-card-body{
  display:flex;
  flex-direction:column;
  min-height:182px;
  padding:17px 18px 18px;
}

.video-card-meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}

.video-category{
  display:inline-flex;
  width:max-content;
  border-radius:999px;
  padding:6px 9px;
  background:#e4f3fa;
  color:#3d8eb5;
  font-size:10px;
  font-weight:800;
  letter-spacing:.04em;
}

.video-date{
  color:#8aa1ad;
  font-size:11px;
}

.video-card h3{
  margin:13px 0 7px;
  color:#173f54;
  font-size:18px;
  line-height:1.4;
  font-weight:800;
  word-break:keep-all;
}

.video-source{
  margin:0;
  color:#6a8593;
  font-size:13px;
  line-height:1.5;
}

.video-description{
  min-height:38px;
  margin:13px 0 0;
  color:#738d9a;
  font-size:12px;
  line-height:1.6;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.video-watch{
  display:flex;
  
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-top:18px;
  padding-top:13px;
  border-top:1px solid #e1edf2;
  color:#4383a2;
  text-decoration:none;
  font-size:11px;
  font-weight:800;
  letter-spacing:.06em;
}

.video-empty{
  padding:90px 0;
  text-align:center;
  color:#7697a8;
}

/* Admin video */
.admin-mode-tabs{
  display:flex;
  gap:7px;
  margin-top:14px;
}

.admin-mode-tabs button{
  border:1px solid #bddbe8;
  border-radius:999px;
  padding:7px 12px;
  background:#fff;
  color:#6c8a99;
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
}

.admin-mode-tabs button.active{
  background:#58add7;
  border-color:#58add7;
  color:#fff;
}

.video-admin-tools{
  grid-template-columns:minmax(220px,1fr) 160px;
}

.video-admin-preview{
  overflow:hidden;
  margin-bottom:14px;
  border:1px solid #c7e0eb;
  border-radius:11px;
  background:#f5fbfe;
}

.video-admin-preview img{
  display:block;
  width:100%;
  aspect-ratio:16 / 9;
  object-fit:cover;
}

.video-admin-preview span{
  display:block;
  padding:8px 10px;
  color:#6b8c9c;
  font-size:10px;
}

.video-url-message{
  margin:-5px 0 12px;
  color:#c05d66;
  font-size:11px;
}

@media(max-width:980px){
  .video-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .video-toolbar{grid-template-columns:1fr;}
  .video-toolbar-right,
  .video-filters{justify-content:flex-start;}
}

@media(max-width:620px){
  .video-archive-page{
    padding:36px 14px 70px;
  }

  .video-archive-shell{
    width:100%;
  }

  .video-title-row{
    align-items:flex-start;
  }

  .video-title-row h2{
    font-size:58px;
  }

  .video-total b{
    font-size:34px;
  }

  .video-grid{
    grid-template-columns:1fr;
  }
}

/* ===== ADMIN PAGE ===== */
/* hidden 속성이 관리자 화면/로그인 모달의 기본 CSS보다 항상 우선하도록 처리 */
.admin-page[hidden],
.admin-login-modal[hidden],
.admin-layout[hidden]{
  display:none;
}


.admin-entry{
  position:fixed;
  z-index:30;
  right:18px;
  bottom:18px;
  border:1px solid rgba(61,145,188,.28);
  border-radius:999px;
  padding:8px 11px;
  background:rgba(244,251,255,.9);
  color:#5890aa;
  backdrop-filter:blur(10px);
  font-size:9px;
  letter-spacing:.14em;
}

.admin-page{
  min-height:100vh;
  background:
    radial-gradient(circle at 85% 10%,rgba(103,190,232,.16),transparent 28%),
    linear-gradient(180deg,#eef8fd 0%,#f9fdff 100%);
  padding:34px;
}

.admin-shell{
  width:min(1500px,100%);
  margin:0 auto;
}

.admin-header{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  padding-bottom:24px;
  border-bottom:1px solid #c8e0eb;
}

.admin-header h2{
  margin:8px 0 0;
  font-family:"Nanum Myeongjo",serif;
  font-size:48px;
  font-weight:400;
  color:#215d7c;
}


.admin-overlay-link-btn{
  border-color:rgba(80,157,196,.34)!important;
  background:linear-gradient(180deg,rgba(245,252,255,.96),rgba(227,245,252,.92))!important;
  color:#367da2!important;
}
.admin-overlay-link-drawer{
  margin:-8px 0 22px;
  border:1px solid rgba(98,161,192,.22);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(247,252,255,.98),rgba(233,247,253,.94));
  box-shadow:0 12px 30px rgba(55,111,139,.08);
  overflow:hidden;
}
.admin-overlay-link-copy{padding:18px 20px;}
.admin-overlay-link-copy-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:12px;}
.admin-overlay-link-copy-head>div{display:grid;gap:3px;}
.admin-overlay-link-copy-head strong{font-size:15px;color:#315f76;}
.admin-overlay-link-kicker{font-size:9px;letter-spacing:.18em;font-weight:800;color:#70aeca;}
.admin-overlay-link-note{font-size:11px;color:#839ba8;}
.admin-overlay-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;}
.admin-overlay-link-row input{
  width:100%;min-width:0;height:42px;border:1px solid rgba(93,156,187,.25);border-radius:10px;padding:0 13px;
  background:rgba(255,255,255,.76);color:#386b84;font:600 12px/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;outline:none;
}
.admin-overlay-link-row input:focus{border-color:rgba(72,151,192,.55);box-shadow:0 0 0 3px rgba(107,185,222,.1);}
.admin-overlay-link-row button{height:42px;border:1px solid rgba(88,151,183,.25);border-radius:10px;padding:0 14px;background:#fff;color:#4c7890;font-weight:700;cursor:pointer;}
.admin-overlay-link-row button:hover{background:#f5fbfe;}
.admin-overlay-link-row .admin-overlay-link-copy-btn{background:#77b9d7;color:#fff;border-color:#77b9d7;}
.admin-overlay-link-row .admin-overlay-link-copy-btn:hover{background:#69aece;}
@media(max-width:720px){
  .admin-overlay-link-copy-head{align-items:flex-start;flex-direction:column;gap:4px;}
  .admin-overlay-link-row{grid-template-columns:1fr 1fr;}
  .admin-overlay-link-row input{grid-column:1/-1;}
}
.admin-header-actions{
  display:flex;
  gap:10px;
}

.admin-header-actions button,
#clearEditorBtn{
  border:1px solid #b9d8e7;
  border-radius:10px;
  background:#fff;
  color:#557b8e;
  padding:10px 14px;
}

.admin-layout{
  display:grid;
  grid-template-columns:minmax(0,1.55fr) minmax(330px,.65fr);
  gap:22px;
  align-items:start;
  padding-top:24px;
}

.admin-list-panel,
.admin-edit-panel{
  background:rgba(255,255,255,.86);
  border:1px solid #c5dfeb;
  border-radius:18px;
}

.admin-list-panel{
  min-height:calc(100vh - 150px);
  overflow:hidden;
}

.admin-list-toolbar{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:end;
  gap:22px;
  padding:18px 20px;
  border-bottom:1px solid #d8e8f0;
}

.admin-list-title strong{
  display:block;
  color:#234f66;
  font-size:18px;
}

.admin-list-title span{
  display:block;
  margin-top:4px;
  color:#7b9baa;
  font-size:12px;
}

.admin-tools{
  display:grid;
  gap:10px;
  justify-self:end;
  width:min(820px,100%);
}

.admin-tool-fields{
  display:grid;
  grid-template-columns:minmax(190px,1fr) 145px 145px 135px;
  gap:9px;
}

.admin-tool-actions{
  display:flex;
  justify-content:flex-end;
}

.admin-tools input,
.admin-tools select{
  width:100%;
  height:44px;
  padding:0 13px;
  border:1px solid #c4dfea;
  border-radius:10px;
  background:#fff;
  color:#234f66;
  outline:0;
}

.admin-tools input:focus,
.admin-tools select:focus{
  border-color:#62b4dc;
  box-shadow:0 0 0 3px rgba(98,180,220,.10);
}

.admin-copy-list{
  min-height:38px;
  padding:0 14px;
  border:1px solid #b9dce9;
  border-radius:10px;
  background:#f7fcff;
  color:#2d789b;
  font-size:12px;
  font-weight:800;
  letter-spacing:-.01em;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,transform .15s ease;
}

.admin-copy-list:hover{
  background:#e9f7fd;
  border-color:#8fc9e0;
}

.admin-copy-list:active{transform:translateY(1px);}

.admin-song-list{
  max-height:calc(100vh - 245px);
  overflow:auto;
}

.admin-song-row{
  display:grid;
  grid-template-columns:64px minmax(0,1.2fr) minmax(150px,.8fr) 110px minmax(150px,.8fr);
  gap:14px;
  align-items:center;
  min-height:72px;
  padding:10px 18px;
  border-bottom:1px solid #e0edf3;
  cursor:pointer;
  transition:.15s ease;
}

.admin-song-row:hover{background:#f3faff;}
.admin-song-row.active{
  background:#e2f4fc;
  box-shadow:inset 4px 0 0 #50a9d4;
}

.admin-song-index{
  color:#3f99c3;
  font-size:12px;
  font-weight:800;
}

.admin-song-row strong{
  display:block;
  color:#1d4c64;
  font-size:15px;
}

.admin-song-row small{
  color:#678899;
  font-size:12px;
}

.admin-song-row .cat{
  width:max-content;
  padding:6px 8px;
  border-radius:999px;
  background:#dceff8;
  color:#287fa9;
  font-size:10px;
  font-weight:800;
}

.admin-edit-panel{
  position:sticky;
  top:24px;
  padding:22px;
}

.admin-edit-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px;
  padding-bottom:18px;
  border-bottom:1px solid #d9e9f0;
}

.admin-edit-head span{
  color:#65a6c7;
  font-size:10px;
  letter-spacing:.14em;
  font-weight:800;
}

.admin-edit-head h3{
  margin:6px 0 0;
  color:#245d7a;
  font-family:"Nanum Myeongjo",serif;
  font-size:30px;
  font-weight:400;
}

.song-form{
  padding-top:20px;
}

.admin-field{
  display:block;
  margin-bottom:15px;
}

.admin-field span{
  display:block;
  margin-bottom:7px;
  color:#537a8e;
  font-size:12px;
  font-weight:700;
}

.admin-field input,
.admin-field select,
.admin-field textarea{
  width:100%;
  border:1px solid #c1ddea;
  border-radius:10px;
  background:#fff;
  color:#234f66;
  padding:12px 13px;
  outline:0;
  resize:vertical;
}

.admin-field input,
.admin-field select{
  height:46px;
}

.admin-field input:focus,
.admin-field select:focus,
.admin-field textarea:focus{
  border-color:#62b4dc;
  box-shadow:0 0 0 3px rgba(98,180,220,.10);
}

.admin-form-actions{
  display:flex;
  gap:10px;
  margin-top:18px;
}

.admin-primary{
  border:0;
  border-radius:10px;
  background:#57add6;
  color:#fff;
  padding:12px 18px;
  font-weight:800;
}

.admin-danger{
  border:1px solid #efc4c7;
  border-radius:10px;
  background:#fff;
  color:#b95d65;
  padding:11px 16px;
}


.duplicate-warning{
  margin-top:4px;
  padding:12px 13px;
  border:1px solid #f0cf9f;
  border-radius:10px;
  background:#fff8ec;
  color:#876630;
  font-size:12px;
  line-height:1.55;
}
.duplicate-warning strong{display:block;margin-bottom:3px;color:#9a6b20;}

.admin-homework{
  border:1px solid #afd9bf;
  border-radius:10px;
  background:#f1fbf5;
  color:#3d8a5d;
  padding:11px 16px;
  font-weight:800;
}

.admin-toast{
  position:fixed;
  z-index:150;
  left:50%;
  bottom:34px;
  transform:translate(-50%,18px);
  min-width:220px;
  max-width:min(520px,calc(100vw - 32px));
  padding:12px 16px;
  border:1px solid #a9d5e8;
  border-radius:12px;
  background:rgba(249,253,255,.97);
  color:#286782;
  box-shadow:0 16px 42px rgba(44,105,135,.16);
  text-align:center;
  font-size:13px;
  font-weight:700;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease,transform .18s ease;
}
.admin-toast.show{opacity:1;transform:translate(-50%,0);}
.admin-toast.success{border-color:#acd9bf;color:#397b56;}
.admin-toast.delete{border-color:#ecc4c8;color:#a6535b;}

.admin-login-modal{
  position:fixed;
  inset:0;
  z-index:120;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(34,77,99,.24);
  backdrop-filter:blur(10px);
}

.admin-login-card{
  position:relative;
  width:min(420px,100%);
  padding:28px;
  border:1px solid #bddbe9;
  border-radius:18px;
  background:#f9fdff;
  box-shadow:0 26px 70px rgba(37,92,121,.16);
}

.admin-login-card h3{
  margin:8px 0 24px;
  font-family:"Nanum Myeongjo",serif;
  font-size:34px;
  font-weight:400;
  color:#245d7a;
}

.admin-login-close{
  position:absolute;
  top:14px;
  right:16px;
  border:0;
  background:transparent;
  color:#7696a5;
  font-size:24px;
}

.admin-login-submit{
  width:100%;
  margin-top:4px;
}

.admin-message{
  min-height:18px;
  margin:10px 0 0;
  color:#b75f67;
  font-size:12px;
}

@media(max-width:1100px){
  .admin-layout{
    grid-template-columns:1fr;
  }

  .admin-edit-panel{
    position:static;
  }

}

@media(max-width:760px){
  .songbook-inner{width:100%;}

  .admin-page{padding:18px;}
  .admin-header{
    align-items:flex-start;
    flex-direction:column;
  }
  .admin-header h2{font-size:38px;}
  .admin-list-toolbar{
    grid-template-columns:1fr;
    align-items:stretch;
  }
  .admin-tools{
    justify-self:stretch;
    width:100%;
  }
  .admin-tool-fields{
    grid-template-columns:1fr;
  }
  .admin-tool-actions{
    justify-content:stretch;
  }
  .admin-copy-list{
    width:100%;
    min-height:42px;
  }
  .admin-song-row{
    grid-template-columns:44px 1fr;
  }
  .admin-song-row > *:nth-child(n/**/+3){
    grid-column:2;
  }
}


@media(max-width:480px){
  .hero{
    padding-left:18px;
    padding-right:18px;
  }

  .hero h1{
    font-size:42px;
    line-height:1.08;
  }

  .hero-links{
    gap:18px 22px;
  }

  .hero-links a,
  .hero-links button{
    font-size:11px;
  }

  .songbook-head,
  .video-title-row{
    gap:16px;
  }

  .song-total,
  .video-total{
    min-width:70px;
  }

  .request-guide-body section{
    font-size:12px;
  }

  .video-toolbar-right{
    align-items:flex-start;
    flex-direction:column;
  }

  .video-sort{
    width:100%;
  }

  .admin-page{
    padding:14px;
  }

  .admin-header-actions{
    width:100%;
    flex-wrap:wrap;
  }

  .admin-header-actions button{
    flex:1;
  }
}

/* ===== FINAL ADMIN ACTION BUTTON FIX ===== */
.admin-edit-head #clearEditorBtn,
.admin-edit-head #clearHistoryEditorBtn,
.admin-edit-head #clearVideoEditorBtn{
  appearance:none;
  -webkit-appearance:none;
  border:1px solid #b8d9e8;
  border-radius:999px;
  padding:8px 13px;
  background:#f7fcff;
  color:#3f7f9e;
  font-family:inherit;
  font-size:11px;
  font-weight:700;
  line-height:1;
  letter-spacing:.02em;
  cursor:pointer;
  box-shadow:none;
  transition:border-color .15s ease,background-color .15s ease,color .15s ease;
}
.admin-edit-head #clearEditorBtn:hover,
.admin-edit-head #clearHistoryEditorBtn:hover,
.admin-edit-head #clearVideoEditorBtn:hover{
  border-color:#67b6dc;
  background:#eaf7fd;
  color:#247da8;
}
.admin-edit-head #clearEditorBtn:focus-visible,
.admin-edit-head #clearHistoryEditorBtn:focus-visible,
.admin-edit-head #clearVideoEditorBtn:focus-visible{
  outline:2px solid rgba(88,173,215,.28);
  outline-offset:2px;
}
.admin-form-actions .admin-danger{
  font-family:inherit;
  letter-spacing:0;
}


/* ===== HISTORY READABILITY PASS ===== */

/* HISTORY 공통 타이포/대비 */
.history-title-row h2{
  letter-spacing:-.035em;
}

.history-title-row p{
  color:#4f7386;
  font-size:16px;
  line-height:1.7;
}

.history-section-tabs{
  margin-top:32px;
}

.history-section-tabs button{
  min-height:38px;
  padding:9px 17px;
  font-size:12px;
}

.history-search span{
  font-size:12px;
}

.history-search input,
.history-sort{
  font-size:14px;
}


.history-date{
  color:#2788b7;
  font-size:15px;
  line-height:1.7;
}

.history-content{
  color:#214b61;
  font-size:17px;
  line-height:1.85;
}

/* VOD 상단 제어부 */
.snow-vod-toolbar{
  padding:26px 0 18px;
}

.snow-vod-mode{
  min-width:78px;
  height:40px;
  font-size:13px;
}

.snow-vod-date-nav button{
  min-height:42px;
}

.snow-vod-date-label{
  min-width:250px;
  font-size:13px;
}

.snow-vod-today{
  font-size:12px;
}

.snow-vod-summary > div{
  padding:18px 20px;
}

.snow-vod-summary span{
  color:#688694;
  font-size:11px;
}

.snow-vod-summary strong{
  color:#1f5877;
  font-size:20px;
}

/* 일간 */
.snow-day-card{
  grid-template-columns:170px minmax(0,1fr) auto;
  gap:24px;
  min-height:104px;
  padding:18px 20px;
}

.snow-day-time{
  color:#278ab8;
  font-size:15px;
}

.snow-day-main strong{
  color:#173f54;
  font-size:17px;
  line-height:1.55;
}

.snow-day-main span{
  color:#668595;
  font-size:13px;
}

.snow-replay{
  font-size:11px;
}

/* 주간 */
.snow-week-grid{
  min-width:1080px;
}

.snow-week-day{
  min-height:74px;
  font-size:12px;
}

.snow-week-day strong{
  font-size:16px;
}

.snow-week-cell{
  min-height:270px;
  padding:14px;
}

.snow-week-item{
  padding:11px 12px;
  margin-bottom:10px;
}

.snow-week-item time{
  color:#2f8db7;
  font-size:11px;
}

.snow-week-item strong{
  color:#244f65;
  font-size:12px;
  line-height:1.55;
}

.snow-week-item small{
  color:#6e8998;
  font-size:10px;
}

/* 월간 */
.snow-month-weekday{
  min-height:42px;
  font-size:11px;
}

.snow-month-day{
  min-height:150px;
  padding:11px;
}


.snow-month-vod{
  padding:8px 9px;
  font-size:10px;
  line-height:1.5;
}

.snow-month-more{
  font-size:10px;
}

/* 빈 상태 */
.snow-vod-empty,
.history-empty{
  color:#638596;
  font-size:14px;
}

/* 관리자 HISTORY 가독성 */
.admin-history-row{
  grid-template-columns:145px minmax(0,1fr);
  gap:20px;
  min-height:78px;
  padding:16px 20px;
}

.admin-history-row time{
  font-size:13px;
}

.admin-history-row p{
  color:#294f63;
  font-size:14px;
  line-height:1.6;
}

#historyContentInput{
  min-height:220px;
  font-size:14px;
  line-height:1.7;
}

/* 모바일에서는 가독성 유지하면서 폭만 축소 */
@media(max-width:760px){
  .history-title-row p{
    font-size:14px;
  }
.history-date{
    font-size:14px;
  }

  .history-content{
    font-size:15px;
    line-height:1.75;
  }

  .snow-vod-mode{
    flex:1;
    min-width:0;
  }

  .snow-day-card{
    grid-template-columns:1fr;
    gap:9px;
    min-height:auto;
  }

  .snow-day-time{
    font-size:14px;
  }

  .snow-day-main strong{
    font-size:16px;
  }

  .admin-history-row{
    grid-template-columns:1fr;
    gap:5px;
  }
}

/* ===== VOD UX UPGRADE ===== */
.history-date,.history-content{line-height:1.78;}
.history-date{padding-top:0;}

.snow-vod-stage{position:relative;min-height:180px;transition:opacity .16s ease,filter .16s ease;}
.snow-vod-loading-shade{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:15px;background:rgba(241,249,253,.34);opacity:0;pointer-events:none;transition:opacity .14s ease;z-index:8;}
.snow-vod-loading-shade span{width:28px;height:28px;border:2px solid rgba(72,151,190,.18);border-top-color:#58add7;border-radius:50%;animation:snowVodSpin .7s linear infinite;}
#historyVodPanel.is-loading .snow-vod-stage{filter:blur(1.6px);opacity:.48;pointer-events:none;}
#historyVodPanel.is-loading .snow-vod-loading-shade{opacity:1;}
@keyframes snowVodSpin{to{transform:rotate(360deg);}}

.vod-badges{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:7px;}
.vod-badge{display:inline-flex;align-items:center;justify-content:center;min-height:21px;padding:2px 8px;border:1px solid transparent;border-radius:999px;font-size:9px;font-weight:800;line-height:1;letter-spacing:.02em;white-space:nowrap;}
.vod-badge.preheat{background:#fff4d7;border-color:#ecd9a7;color:#8b6d2e;}
.vod-badge.after{background:#e8f5fb;border-color:#c5e2ef;color:#347c9f;}
.vod-badge.content{background:#fbeaec;border-color:#eccfd3;color:#a3545c;}
.vod-badge.game{background:#e9eef1;border-color:#ced9de;color:#354b56;}

.snow-month-more{appearance:none;border:0;padding:4px 0;background:transparent;cursor:pointer;text-align:left;}
.snow-month-more:hover{color:#247da8;text-decoration:underline;}

.snow-vod-detail-panel{position:fixed;z-index:1200;top:0;right:0;width:min(460px,94vw);height:100dvh;padding:24px;background:#f5fbfe;border-left:1px solid #bddce9;box-shadow:-18px 0 48px rgba(38,91,118,.14);overflow:auto;}
.snow-vod-detail-panel[hidden]{display:none;}
.snow-vod-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:17px;border-bottom:1px solid #c9e1ec;}
.snow-vod-detail-head span{display:block;color:#5c91a9;font-size:10px;font-weight:800;letter-spacing:.1em;}
.snow-vod-detail-head strong{display:block;margin-top:4px;color:#1f5572;font-family:"Nanum Myeongjo",serif;font-size:22px;}
.snow-vod-detail-head button{appearance:none;width:36px;height:36px;border:1px solid #bfdde9;border-radius:50%;background:#fff;color:#53849a;font-size:22px;cursor:pointer;}
.snow-vod-detail-list{display:grid;gap:12px;padding-top:16px;}
.snow-vod-detail-card{overflow:hidden;border:1px solid #c7e0eb;border-radius:14px;background:#fff;}
.snow-vod-detail-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#deedf4;}
.snow-vod-detail-copy{padding:13px 14px 14px;}
.snow-vod-detail-copy time{color:#328bb4;font-size:11px;font-weight:800;}
.snow-vod-detail-copy strong{display:block;margin-top:6px;color:#244f65;font-size:14px;line-height:1.5;}
.snow-vod-detail-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px;color:#758f9d;font-size:10px;}
.snow-vod-detail-copy .snow-replay{margin-top:12px;}

.snow-vod-tooltip{position:fixed;z-index:1400;width:320px;overflow:hidden;border:1px solid #bddce9;border-radius:13px;background:rgba(255,255,255,.98);box-shadow:0 14px 38px rgba(39,95,123,.18);pointer-events:none;}
.snow-vod-tooltip[hidden]{display:none;}
.snow-vod-tooltip img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#e2f0f6;}
.snow-vod-tooltip-copy{padding:12px 13px 13px;}
.snow-vod-tooltip time{color:#328bb4;font-size:10px;font-weight:800;}
.snow-vod-tooltip strong{display:block;margin-top:5px;color:#214b61;font-size:13px;line-height:1.45;}
.snow-vod-tooltip-meta{display:flex;gap:9px;margin-top:7px;color:#718b99;font-size:10px;}

/* ADMIN VOD DATA */

.admin-voddata-row{display:grid;grid-template-columns:105px minmax(0,1fr);gap:16px;padding:14px 18px;border-bottom:1px solid #e0edf3;cursor:pointer;}
.admin-voddata-row:hover{background:#f3faff;}.admin-voddata-row.active{background:#e2f4fc;box-shadow:inset 4px 0 0 #50a9d4;}
.admin-voddata-row time{color:#388fb9;font-size:12px;font-weight:800;}
.admin-voddata-row strong{display:block;color:#294f63;font-size:13px;line-height:1.5;}
.admin-voddata-row small{display:block;margin-top:5px;color:#7993a0;font-size:10px;}
.admin-voddata-empty{padding:38px 20px;color:#7693a1;text-align:center;font-size:12px;}
.admin-voddata-info{padding:13px 14px;border:1px solid #c9e1ec;border-radius:11px;background:#f6fbfe;color:#315c72;font-size:12px;line-height:1.6;}
.admin-voddata-info strong{display:block;color:#214b61;font-size:14px;margin-bottom:5px;}
.vod-category-fieldset{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0;padding:14px;border:1px solid #c7e0eb;border-radius:12px;}
.vod-category-fieldset legend{padding:0 6px;color:#668695;font-size:11px;font-weight:700;}
.vod-category-option{display:flex;align-items:center;gap:8px;padding:10px 11px;border:1px solid transparent;border-radius:10px;cursor:pointer;font-size:12px;font-weight:800;}
.vod-category-option input{accent-color:#58add7;}.vod-category-option.cat-preheat{background:#fff8e6;border-color:#eadfbf;color:#80672f;}.vod-category-option.cat-after{background:#edf8fd;border-color:#d1e8f2;color:#347c9f;}.vod-category-option.cat-content{background:#fdf0f1;border-color:#eed9dc;color:#9c5860;}.vod-category-option.cat-game{background:#eef2f4;border-color:#dae1e5;color:#3e525c;}

@media(max-width:760px){
  .snow-vod-tooltip{display:none!important;}
  .snow-vod-detail-panel{width:100%;padding:18px;}
  .vod-category-fieldset{grid-template-columns:1fr;}
  .admin-voddata-row{grid-template-columns:1fr;gap:5px;}
}
/* ===== ADMIN VOD MONTH CALENDAR ===== */
.admin-voddata-month-nav{display:flex;align-items:center;gap:7px;}
.admin-voddata-month-nav button{appearance:none;min-width:38px;height:38px;border:1px solid #bddbe8;border-radius:10px;background:#fff;color:#3f7f9e;font-family:inherit;font-size:12px;font-weight:800;cursor:pointer;}
.admin-voddata-month-nav>strong{min-width:118px;color:#285f7c;text-align:center;font-size:13px;}
.admin-voddata-month-nav .admin-voddata-today{padding:0 12px;}
.admin-voddata-calendar-stage{position:relative;padding:14px 16px 16px;border-bottom:1px solid #dbeaf1;transition:opacity .15s ease,filter .15s ease;}
.admin-voddata-calendar-stage.is-loading{opacity:.52;filter:blur(1px);pointer-events:none;}
.admin-voddata-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden;border:1px solid #c7e0eb;border-radius:13px;background:#fff;}
.admin-vodcal-weekday{display:flex;align-items:center;justify-content:center;height:34px;border-right:1px solid #e2edf2;border-bottom:1px solid #dbeaf1;background:#f5fbfe;color:#72909f;font-size:10px;font-weight:800;}
.admin-vodcal-weekday:nth-child(7){border-right:0;}
.admin-vodcal-day{appearance:none;position:relative;min-height:76px;padding:9px;border:0;border-right:1px solid #e5eff4;border-bottom:1px solid #e5eff4;background:#fff;text-align:left;font-family:inherit;cursor:pointer;transition:background .12s ease,box-shadow .12s ease;}
.admin-vodcal-day:nth-child(7n){border-right:0;}
.admin-vodcal-day:hover{background:#f2faff;}.admin-vodcal-day.outside{background:#fbfdfe;opacity:.38;}
.admin-vodcal-day.today{box-shadow:inset 0 0 0 1px #8bc9e5;}.admin-vodcal-day.selected{z-index:1;background:#e9f7fd;box-shadow:inset 0 0 0 2px #58add7;}
.admin-vodcal-date{display:block;color:#58798a;font-size:11px;font-weight:800;}.admin-vodcal-day.has-vod .admin-vodcal-date{color:#257fa9;}
.admin-vodcal-day strong{display:inline-flex;margin-top:12px;padding:4px 7px;border-radius:999px;background:#e4f4fb;color:#2f83aa;font-size:9px;font-weight:800;}
.admin-vodcal-day small{display:block;margin-top:12px;color:#b3c5cd;font-size:9px;}
.admin-voddata-loading-overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;background:rgba(245,251,254,.28);}
.admin-voddata-loading-overlay[hidden]{display:none;}.admin-voddata-loading-overlay span{width:25px;height:25px;border:2px solid rgba(72,151,190,.18);border-top-color:#58add7;border-radius:50%;animation:snowVodSpin .7s linear infinite;}
.admin-voddata-day-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid #dbeaf1;background:#f9fdff;}
.admin-voddata-day-head strong{color:#2b6684;font-size:13px;}.admin-voddata-day-head span{color:#8199a5;font-size:10px;}
.admin-voddata-list{max-height:320px;overflow:auto;}
@media(max-width:900px){.admin-voddata-month-nav{width:100%;flex-wrap:wrap;}.admin-voddata-calendar-stage{overflow-x:auto;}.admin-voddata-calendar{min-width:700px;}.admin-voddata-day-head{align-items:flex-start;flex-direction:column;gap:4px;}}


/* ===== VOD DATE -> DAY NAVIGATION ===== */
.snow-week-day{
  appearance:none;
  border:0;
  border-right:1px solid #e1edf2;
  background:transparent;
  font-family:inherit;
  cursor:pointer;
  transition:background-color .14s ease,color .14s ease;
}
.snow-week-day:hover{background:#edf8fd;}
.snow-week-day:focus-visible{outline:2px solid rgba(88,173,215,.38);outline-offset:-2px;}
.snow-month-date{
  appearance:none;
  width:auto;
  min-width:26px;
  min-height:26px;
  margin:-4px 0 4px -4px;
  padding:4px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#496e81;
  font-family:inherit;
  font-size:12px;
  font-weight:800;
  text-align:left;
  cursor:pointer;
  transition:background-color .14s ease,color .14s ease;
}
.snow-month-date:hover{background:#e8f6fc;color:#257fa9;}
.snow-month-date:focus-visible{outline:2px solid rgba(88,173,215,.38);outline-offset:1px;}


/* ===== DIARY -> VOD ACCORDION ===== */
.history-item{display:block;padding:0;border-bottom:1px solid #d6e8f0;}
.history-item-toggle{appearance:none;width:100%;display:grid;grid-template-columns:150px minmax(0,1fr) 34px;gap:28px;align-items:start;padding:22px 6px;border:0;background:transparent;text-align:left;font-family:inherit;cursor:pointer;}
.history-item-toggle:hover{background:rgba(232,247,253,.42);}
.history-item.is-open .history-item-toggle{background:#f4fbfe;}
.history-expand-mark{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin-top:-2px;border:1px solid #c5e0eb;border-radius:50%;color:#4a98bc;font-size:17px;font-weight:400;line-height:1;}
.diary-vod-detail{padding:0 6px 22px 184px;background:#f4fbfe;}
.diary-vod-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.diary-vod-card{display:grid;grid-template-columns:180px minmax(0,1fr);min-height:118px;overflow:hidden;border:1px solid #c6e1ec;border-radius:14px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 8px 24px rgba(57,125,158,.05);transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease;}
.diary-vod-card:hover{transform:translateY(-1px);border-color:#8fcbe5;box-shadow:0 10px 28px rgba(57,125,158,.09);}
.diary-vod-card>img,.diary-vod-thumb-empty{width:100%;height:100%;min-height:118px;object-fit:cover;background:#eaf6fb;}
.diary-vod-thumb-empty{display:flex;align-items:center;justify-content:center;color:#72a8bf;font-size:11px;font-weight:800;letter-spacing:.12em;}
.diary-vod-copy{min-width:0;padding:14px 15px;}
.diary-vod-copy time{display:block;margin-bottom:7px;color:#4398c0;font-size:10px;font-weight:800;}
.diary-vod-copy strong{display:block;margin-bottom:8px;color:#244f65;font-size:13px;line-height:1.45;white-space:normal;}
.diary-vod-copy .vod-badges{margin:0 0 9px;}
.diary-vod-meta{display:flex;gap:12px;color:#809aa7;font-size:9px;}
.diary-vod-loading,.diary-vod-empty{min-height:92px;display:flex;align-items:center;justify-content:center;gap:9px;border:1px dashed #c8e0ea;border-radius:13px;background:#fff;color:#7895a3;font-size:11px;}
.diary-vod-loading span{width:20px;height:20px;border:2px solid rgba(72,151,190,.18);border-top-color:#58add7;border-radius:50%;animation:snowVodSpin .7s linear infinite;}
.diary-vod-loading b{font-weight:600;}
@media(max-width:980px){
  .diary-vod-cards{grid-template-columns:1fr;}
  .diary-vod-detail{padding-left:6px;}
}
@media(max-width:700px){
  .history-item-toggle{grid-template-columns:1fr 32px;gap:5px 10px;padding:18px 4px;}
  .history-item-toggle .history-date{grid-column:1;}
  .history-item-toggle .history-content{grid-column:1;}
  .history-expand-mark{grid-column:2;grid-row:1/3;}
  .diary-vod-card{grid-template-columns:120px minmax(0,1fr);}
}


/* ===== MONTH CELL EMPTY AREA -> VOD DAY DETAIL ===== */
[data-vod-month-day]{
  cursor:pointer;
}
[data-vod-month-day]:hover{
  background-color:rgba(235,248,253,.46);
}
[data-vod-month-day] .snow-month-date,
[data-vod-month-day] a,
[data-vod-month-day] button{
  cursor:pointer;
}




/* ===== PORTRAIT CLICK FX — ORIGINAL PORTRAIT LAYOUT PRESERVED ===== */
#openHistoryVodFromPortrait{
  cursor:pointer;
  transform:translateX(-50%);
  transition:filter .16s ease;
}
#openHistoryVodFromPortrait:hover{
  transform:translateX(-50%) !important;
  filter:brightness(1.015);
}
#openHistoryVodFromPortrait:focus-visible{
  outline:2px solid rgba(88,173,215,.38);
  outline-offset:5px;
}

/* Effect is viewport-fixed, so it never becomes the portrait's containing block. */
body.portrait-vod-transition::before,
body.portrait-vod-transition::after{
  content:"";
  position:fixed;
  z-index:40;
  right:7.5vw;
  top:49%;
  width:min(30vw,520px);
  aspect-ratio:1;
  border-radius:50%;
  pointer-events:none;
  transform:translate(50%,-50%) scale(.25);
  opacity:0;
}
body.portrait-vod-transition::before{
  border:1px solid rgba(122,201,236,.55);
  box-shadow:
    0 0 28px rgba(112,194,231,.20),
    inset 0 0 30px rgba(223,246,255,.28);
  animation:portraitFixedRing .36s cubic-bezier(.18,.7,.22,1) both;
}
body.portrait-vod-transition::after{
  background:radial-gradient(circle,
    rgba(218,245,255,.62) 0%,
    rgba(145,214,243,.26) 34%,
    rgba(112,193,230,.08) 58%,
    transparent 74%);
  filter:blur(13px);
  animation:portraitFixedGlow .34s ease-out both;
}

@keyframes portraitFixedRing{
  0%{opacity:0;transform:translate(50%,-50%) scale(.25)}
  20%{opacity:.78}
  100%{opacity:0;transform:translate(50%,-50%) scale(1.28)}
}
@keyframes portraitFixedGlow{
  0%{opacity:0;transform:translate(50%,-50%) scale(.35)}
  28%{opacity:.72}
  100%{opacity:0;transform:translate(50%,-50%) scale(1.18)}
}

@media(prefers-reduced-motion:reduce){
  body.portrait-vod-transition::before,
  body.portrait-vod-transition::after{
    animation:none !important;
  }
}

/* Song metadata audit */
.admin-audit-btn{height:42px;border:1px solid #9dcfe5;border-radius:10px;background:#f5fbfe;color:#2c7597;padding:0 14px;font-weight:800;white-space:nowrap}
.song-meta-modal[hidden]{display:none}
.song-meta-modal{position:fixed;inset:0;z-index:180;background:rgba(29,70,91,.28);padding:24px;display:grid;place-items:center}
.song-meta-card{width:min(1180px,100%);max-height:calc(100vh - 48px);overflow:auto;background:#f9fdff;border:1px solid #b8dceb;border-radius:18px;box-shadow:0 24px 70px rgba(31,83,108,.22);padding:22px}
.song-meta-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.song-meta-head h3{margin:4px 0 0;color:#214f67}.song-meta-head button{border:0;background:transparent;font-size:28px;color:#6c91a4;cursor:pointer}
.song-meta-help{margin:14px 0;padding:12px 14px;border-radius:11px;background:#eaf7fd;color:#416d82;font-size:13px;line-height:1.6}
.song-meta-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px}.song-meta-actions>button:not(.admin-primary){border:1px solid #b9d9e7;background:#fff;color:#3f7188;border-radius:10px;padding:11px 14px;font-weight:800}.song-meta-actions span{margin-left:auto;color:#648596;font-size:12px;font-weight:700}
.song-meta-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 15px}.song-meta-filters{display:flex;gap:7px;flex-wrap:wrap}.song-meta-filters button,.song-meta-copy{border:1px solid #bfdde9;background:#fff;color:#4b768a;border-radius:999px;padding:8px 11px;font-size:12px;font-weight:800;cursor:pointer}.song-meta-filters button b{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:4px;padding:0 5px;border-radius:999px;background:#eaf6fb;color:#54849a;font-size:10px}.song-meta-filters button.active{background:#2c789d;border-color:#2c789d;color:#fff}.song-meta-filters button.active b{background:rgba(255,255,255,.2);color:#fff}.song-meta-copy{border-radius:10px;padding:9px 13px}.song-meta-copy:disabled{opacity:.45;cursor:not-allowed}
.song-meta-results{display:grid;gap:9px}.song-meta-row{display:grid;grid-template-columns:30px 58px minmax(180px,1fr) 28px minmax(220px,1.15fr);gap:12px;align-items:center;padding:11px;border:1px solid #d5e7ef;border-radius:12px;background:#fff}.song-meta-row.uncertain{background:#fffaf1;border-color:#ead6ad}.song-meta-row.failed{background:#fff7f7;border-color:#edcfd2}.song-meta-cover{width:54px;height:54px;border-radius:8px;object-fit:cover;background:#eaf6fb}.song-meta-old,.song-meta-new{min-width:0}.song-meta-old strong,.song-meta-new strong{display:block;color:#244f65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-meta-old small,.song-meta-new small{display:block;margin-top:4px;color:#76909d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-meta-arrow{text-align:center;color:#80abc0;font-weight:900}.song-meta-badge{display:inline-block;margin-top:5px;padding:2px 7px;border-radius:999px;background:#e8f6fc;color:#3c85a5;font-size:10px;font-weight:800}.song-meta-row.uncertain .song-meta-badge{background:#fff0cf;color:#9b7325}.song-meta-row.failed .song-meta-badge{background:#fde7e8;color:#a45d64}
@media(max-width:760px){.song-meta-modal{padding:10px}.song-meta-card{max-height:calc(100vh - 20px);padding:14px}.song-meta-row{grid-template-columns:26px 48px 1fr 20px 1fr;gap:7px}.song-meta-cover{width:44px;height:44px}.song-meta-actions span{width:100%;margin-left:0}.song-meta-toolbar{align-items:stretch}.song-meta-filters{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.song-meta-filters button{flex:0 0 auto}.song-meta-copy{width:100%}}


.admin-field-help{display:block;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.5;}
.song-cover-admin-preview{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid rgba(84,151,188,.18);border-radius:14px;background:rgba(239,249,255,.65);}
.song-cover-admin-preview[hidden]{display:none;}
.song-cover-admin-preview img{width:72px;height:72px;object-fit:cover;border-radius:12px;background:#eef7fc;border:1px solid rgba(84,151,188,.16);}
.song-cover-admin-preview span{font-size:12px;color:var(--muted);}

/* ===== SNOW SONG DETAIL PLAYER ===== */
.song-browser{
  transition:grid-template-columns .24s ease,gap .24s ease;
}
.song-browser.detail-open{
  grid-template-columns:190px minmax(0,1fr) minmax(280px,330px);
  gap:22px;
}
.song-browser.detail-open .song-table-head,
.song-browser.detail-open .song-item{
  grid-template-columns:minmax(220px,1.35fr) minmax(110px,.85fr) 92px 20px;
  gap:12px;
}
.song-browser.detail-open .song-table-head span:nth-child(4),
.song-browser.detail-open .song-item .song-note{display:none;}
.song-item{
  position:relative;
  cursor:pointer;
  overflow:hidden;
}
.song-item::before{
  content:"";
  position:absolute;left:0;top:12px;bottom:12px;width:2px;
  border-radius:99px;background:transparent;
  transition:background .15s ease,box-shadow .15s ease;
}
.song-item::after{
  content:"❄";
  position:absolute;right:46px;top:50%;
  transform:translateY(-50%);opacity:0;
  color:#8bcce9;font-size:11px;
  transition:opacity .15s ease;
}
.song-item:hover::after{opacity:.7;}
.song-item.selected{
  border-color:#73badc;
  background:linear-gradient(100deg,rgba(234,248,255,.98),rgba(255,255,255,.96));
  box-shadow:0 8px 22px rgba(43,116,151,.12);
}
.song-item.selected::before{
  background:#55add7;
  box-shadow:0 0 12px rgba(85,173,215,.42);
}
.song-cover{box-shadow:0 3px 10px rgba(55,115,143,.08);}
.song-category{
  display:inline-flex;align-items:center;width:max-content;max-width:100%;
  padding:5px 8px;border-radius:999px;
  background:#e9f6fc;border:1px solid rgba(105,181,216,.18);
}

.song-detail-panel{
  position:sticky;top:24px;min-width:0;
  animation:snowPlayerIn .24s ease both;
}
.song-detail-panel[hidden]{display:none;}
@keyframes snowPlayerIn{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
.song-detail-close{
  position:absolute;z-index:3;right:12px;top:10px;
  width:30px;height:30px;border:0;border-radius:50%;
  background:rgba(255,255,255,.76);color:#4a7f99;
  font-size:21px;line-height:1;cursor:pointer;
  backdrop-filter:blur(8px);
}
.song-detail-close:hover{background:#fff;color:#225f80;}
.song-player-shell{
  position:relative;overflow:hidden;
  padding:18px 18px 20px;
  border:1px solid rgba(91,165,201,.28);border-radius:24px;
  background:
    radial-gradient(circle at 100% 0%,rgba(151,222,250,.32),transparent 34%),
    linear-gradient(165deg,rgba(248,253,255,.98),rgba(226,245,253,.96));
  box-shadow:0 18px 45px rgba(47,110,141,.14);
}
.song-player-shell::before{
  content:"";position:absolute;left:-55px;bottom:-70px;width:160px;height:160px;
  border:1px solid rgba(103,188,226,.2);border-radius:50%;
  box-shadow:0 0 0 22px rgba(126,201,234,.055),0 0 0 45px rgba(126,201,234,.035);
}
.song-player-top{
  position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;
  padding:0 2px 13px;color:#4b89a6;font-size:0;font-weight:900;letter-spacing:.14em;
}
.song-player-top::before{
  content:"SNOW ARCHIVE · SONG DETAIL";
  color:#4b89a6;font-size:10px;font-weight:900;letter-spacing:.14em;
}
.song-player-top i{font-style:normal;letter-spacing:2px;color:#87afc2;font-size:10px;}
.song-player-art-wrap{
  position:relative;z-index:1;aspect-ratio:1;overflow:hidden;
  padding:7px;border:1px solid rgba(87,165,201,.3);border-radius:18px;
  background:rgba(255,255,255,.78);box-shadow:0 10px 28px rgba(36,103,134,.12);
}
.song-player-art{width:100%;height:100%;display:block;object-fit:cover;border-radius:13px;background:#eaf6fb;}
.song-player-snow{
  position:absolute;right:16px;bottom:14px;display:grid;place-items:center;
  width:30px;height:30px;border-radius:50%;background:rgba(245,252,255,.9);
  color:#55add7;font-size:14px;box-shadow:0 4px 12px rgba(38,103,133,.13);
}
.song-player-meta{position:relative;z-index:1;padding:18px 3px 8px;}
.song-player-label{color:#64a5c3;font-size:9px;font-weight:900;letter-spacing:.16em;}
.song-player-meta h3{
  margin:7px 0 4px;color:#173f55;font-family:"Nanum Myeongjo",serif;
  font-size:24px;line-height:1.25;font-weight:700;word-break:keep-all;
}
.song-player-meta p{margin:0;color:#55798b;font-size:13px;font-weight:700;}
.song-player-categories{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px;}
.song-player-categories span{
  padding:5px 8px;border:1px solid rgba(84,165,202,.22);border-radius:999px;
  background:rgba(255,255,255,.68);color:#3e86a8;font-size:10px;font-weight:900;
}
.song-player-copy-id{
  position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;
  width:auto;min-width:112px;min-height:36px;margin-top:12px;padding:0 13px;
  border:1px solid #b8dbea;border-radius:999px;
  background:rgba(255,255,255,.88);color:#347b9c;
  box-shadow:0 4px 12px rgba(45,111,143,.06);
  font:800 11px/1 system-ui,-apple-system,"Noto Sans KR",sans-serif;cursor:pointer;
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease,box-shadow .15s ease;
}
.song-player-copy-id::before{content:"#";margin-right:6px;color:#69acd0;font-weight:900;}
.song-player-copy-id:hover{background:#fff;border-color:#7fc0dd;color:#226b8d;box-shadow:0 6px 16px rgba(45,111,143,.10);transform:translateY(-1px);}
.song-player-copy-id:active{transform:translateY(0);}
.song-player-progress{position:relative;z-index:1;height:16px;margin:10px 3px 8px;}
.song-player-progress::before{
  content:"";position:absolute;left:0;right:0;top:7px;height:2px;border-radius:99px;background:#c9e3ef;
}
.song-player-progress span{position:absolute;left:0;top:7px;width:29%;height:2px;border-radius:99px;background:#5caed5;}
.song-player-progress i{position:absolute;left:calc(29% - 4px);top:4px;width:8px;height:8px;border-radius:50%;background:#fff;border:2px solid #5caed5;}
.song-player-controls{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:2px 3px 0;}
.song-player-controls button{
  appearance:none;border:0;background:transparent;color:#5b7d8d;font-size:16px;pointer-events:none;
}
.song-player-controls .song-player-play{
  width:48px;height:48px;border-radius:50%;background:#fff;color:#54aad2;font-size:18px;
  box-shadow:0 7px 20px rgba(50,115,145,.16);border:1px solid rgba(91,167,202,.18);
}

@media(max-width:1100px){
  .song-browser.detail-open{grid-template-columns:150px minmax(0,1fr) 280px;gap:14px;}
  .song-browser.detail-open .song-table-head,.song-browser.detail-open .song-item{grid-template-columns:minmax(210px,1fr) 90px 20px;}
  .song-browser.detail-open .song-table-head span:nth-child(3),
  .song-browser.detail-open .song-item .song-category{display:none;}
  .song-browser.detail-open .song-table-head span:nth-child(4){display:none;}
  .song-player-meta h3{font-size:21px;}
}
@media(max-width:820px){
  .song-browser.detail-open{grid-template-columns:1fr;}
  .song-browser.detail-open .filters{grid-column:1;}
  .song-browser.detail-open .song-table-wrap{grid-column:1;}
  .song-detail-panel{
    position:fixed;z-index:90;right:14px;bottom:14px;top:auto;
    width:min(340px,calc(100vw - 28px));max-height:calc(100vh - 28px);overflow:auto;
  }
  .song-browser.detail-open .song-table-head,.song-browser.detail-open .song-item{grid-template-columns:minmax(0,1fr) auto;}
  .song-browser.detail-open .song-item .song-artist{display:block;}
}
@media(max-width:620px){
  .song-detail-panel{right:10px;bottom:10px;width:calc(100vw - 20px);max-height:calc(100vh - 20px);}
  .song-player-shell{display:grid;grid-template-columns:112px minmax(0,1fr);gap:0 14px;padding:16px;border-radius:20px;}
  .song-player-top{grid-column:1/-1;}
  .song-player-art-wrap{grid-column:1;grid-row:2 / span 3;align-self:start;}
  .song-player-meta{grid-column:2;grid-row:2;padding:2px 0 0;}
  .song-player-meta h3{font-size:19px;}
  .song-player-progress{grid-column:2;grid-row:3;margin:8px 0 2px;}
  .song-player-controls{grid-column:2;grid-row:4;padding:0;}
  .song-player-controls .song-player-play{width:40px;height:40px;}
}


/* ===== FLOATING LYRICS WINDOW ===== */
.song-player-actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.song-player-actions .song-player-copy-id{margin-top:0}
.song-player-lyrics-btn{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border:1px solid #b8dbea;border-radius:999px;background:linear-gradient(180deg,#fff,#f3fbff);color:#347b9c;box-shadow:0 4px 12px rgba(45,111,143,.06);font:800 11px/1 system-ui,-apple-system,"Noto Sans KR",sans-serif;cursor:pointer;transition:.15s ease}
.song-player-lyrics-btn::before{content:"♪";margin-right:6px;color:#69acd0;font-size:13px}
.song-player-lyrics-btn:hover{border-color:#7fc0dd;background:#fff;color:#226b8d;transform:translateY(-1px);box-shadow:0 6px 16px rgba(45,111,143,.1)}
.song-player-lyrics-btn.has-lyrics{border-color:#8ccbe6;background:linear-gradient(180deg,#fff,#edf9ff)}
.lyrics-window{position:fixed;left:calc(100vw - 552px);top:90px;width:520px;height:650px;min-width:360px;min-height:360px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);resize:both;overflow:hidden;z-index:4000;border:1px solid rgba(137,194,220,.78);border-radius:20px;background:rgba(249,253,255,.96);box-shadow:0 24px 70px rgba(49,104,132,.22),0 2px 10px rgba(49,104,132,.08);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.lyrics-window[hidden]{display:none!important}
.lyrics-window-handle{height:58px;padding:0 15px 0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dbeef6;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(239,249,253,.96));cursor:move;user-select:none;touch-action:none}
.lyrics-window-handle>div{display:flex;align-items:baseline;gap:9px}.lyrics-window-kicker{font-size:9px;font-weight:900;letter-spacing:.16em;color:#79abc1}.lyrics-window-handle strong{font-size:15px;color:#2f7595;letter-spacing:.02em}.lyrics-window-close{width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:#6f9db2;font-size:23px;line-height:1;cursor:pointer}.lyrics-window-close:hover{background:#e7f5fb;color:#347b9c}
.lyrics-window-body{height:calc(100% - 58px);overflow:auto;padding:24px 26px 32px;overscroll-behavior:contain}.lyrics-song-summary{display:grid;grid-template-columns:112px minmax(0,1fr);gap:20px;align-items:center}.lyrics-song-summary img{width:112px;height:112px;object-fit:cover;border-radius:14px;border:1px solid #d4e9f2;box-shadow:0 8px 24px rgba(51,111,140,.12)}.lyrics-song-meta{min-width:0;display:flex;flex-direction:column;align-items:flex-start}.lyrics-categories{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:9px}.lyrics-categories span{padding:4px 8px;border:1px solid #c7e3ef;border-radius:999px;background:#f4fbfe;color:#4f8da9;font-size:9px;font-weight:800}.lyrics-song-meta strong{max-width:100%;font-size:22px;line-height:1.28;color:#213b49;word-break:keep-all;overflow-wrap:anywhere}.lyrics-song-meta>span{margin-top:5px;font-size:13px;font-weight:700;color:#71909f}.lyrics-divider{height:1px;margin:23px 0;background:linear-gradient(90deg,#b9ddea,rgba(185,221,234,.18))}.lyrics-divider.short{margin:12px 0 20px}.lyrics-heading{display:flex;align-items:baseline;gap:9px}.lyrics-heading strong{font-family:Georgia,"Times New Roman",serif;font-size:26px;font-weight:500;color:#285f78}.lyrics-heading span{font-size:11px;font-weight:800;color:#8aabb9}.lyrics-content{white-space:pre-wrap;font-size:15px;line-height:2;color:#314b58;word-break:keep-all;overflow-wrap:anywhere;padding-bottom:28px}.lyrics-content.empty{color:#91a9b4;font-style:italic}.lyrics-window.dragging{box-shadow:0 30px 80px rgba(49,104,132,.28)}
@media(max-width:720px){.lyrics-window{inset:10px!important;width:auto!important;height:auto!important;min-width:0;min-height:0;max-width:none;max-height:none;resize:none;border-radius:18px}.lyrics-window-handle{cursor:default}.lyrics-window-body{padding:20px 18px 28px}.lyrics-song-summary{grid-template-columns:86px minmax(0,1fr);gap:15px}.lyrics-song-summary img{width:86px;height:86px}.lyrics-song-meta strong{font-size:19px}.lyrics-content{font-size:14px;line-height:1.9}}


/* ===== ADMIN LYRICS SEARCH ===== */
.admin-lyrics-search{margin:-4px 0 4px;padding:14px;border:1px solid #d8eaf2;border-radius:14px;background:linear-gradient(180deg,#fbfeff,#f5fbfe)}
.admin-lyrics-search-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.admin-lyrics-search-head>div{display:flex;flex-direction:column;gap:3px;min-width:0}.admin-lyrics-search-head strong{font-size:12px;color:#315f75}.admin-lyrics-search-head span{font-size:10px;line-height:1.45;color:#86a3b1}.admin-lyrics-search-head button{flex:0 0 auto;min-height:34px;padding:0 14px;border:1px solid #a9d3e6;border-radius:999px;background:#fff;color:#347b9c;font-size:11px;font-weight:900;cursor:pointer;box-shadow:0 4px 12px rgba(45,111,143,.06)}.admin-lyrics-search-head button:hover{border-color:#75bddd;background:#effaff}.admin-lyrics-search-head button:disabled{opacity:.55;cursor:wait}.admin-lyrics-search-status{margin-top:10px;padding-top:9px;border-top:1px solid #e2eff5;font-size:10px;font-weight:800;color:#6f98aa}.admin-lyrics-search-results{display:grid;gap:8px;margin-top:10px;max-height:430px;overflow:auto}.admin-lyrics-result{padding:11px;border:1px solid #dcecf3;border-radius:12px;background:#fff}.admin-lyrics-result-top{display:flex;align-items:flex-start;gap:9px}.admin-lyrics-source{flex:0 0 auto;padding:4px 6px;border-radius:6px;font-size:8px;font-weight:950;letter-spacing:.08em}.admin-lyrics-source.lrclib{background:#e7f6fd;color:#2c789a}.admin-lyrics-source.bugs{background:#f2f8e8;color:#63842d}.admin-lyrics-result-meta{min-width:0;display:flex;flex-direction:column;gap:2px}.admin-lyrics-result-meta strong{font-size:12px;color:#263f4b;overflow-wrap:anywhere}.admin-lyrics-result-meta span{font-size:9px;color:#8aa3af;overflow-wrap:anywhere}.admin-lyrics-result pre{margin:9px 0 0;padding:9px 10px;border-radius:9px;background:#f7fbfd;color:#58727e;font:10px/1.7 system-ui,-apple-system,"Noto Sans KR",sans-serif;white-space:pre-wrap;max-height:92px;overflow:hidden}.admin-lyrics-result-note{margin:9px 0 0;font-size:10px;line-height:1.55;color:#7895a2}.admin-lyrics-result-actions{display:flex;gap:7px;margin-top:9px}.admin-lyrics-result-actions button,.admin-lyrics-result-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 10px;border:1px solid #b9dbe9;border-radius:8px;background:#fff;color:#347b9c;font-size:9px;font-weight:900;text-decoration:none;cursor:pointer}.admin-lyrics-result-actions button:hover,.admin-lyrics-result-actions a:hover{background:#edf9fe;border-color:#82c3de}.admin-lyrics-search-empty{padding:12px;border:1px dashed #cfe3ec;border-radius:10px;text-align:center;font-size:10px;color:#89a3af}
@media(max-width:720px){.admin-lyrics-search-head{align-items:flex-start;flex-direction:column}.admin-lyrics-search-head button{width:100%}}
