*{box-sizing:border-box}
:root{
  --bg:#fff;--text:#171717;--muted:#737373;--line:#e8e8e8;
  --accent:#853c57;--accent-dark:#6f2f48;--accent-soft:#f6e9ee;
  --surface:#fafafa;--danger:#a33f50;--shadow:rgba(0,0,0,.14)
}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  transition:background .2s,color .2s
}
body.dark{
  --bg:#151416;--text:#f4f1f2;--muted:#aaa3a6;--line:#343034;
  --accent:#e49ab5;--accent-dark:#efb2c8;--accent-soft:#33242b;
  --surface:#201e20;--danger:#f19aaa;--shadow:rgba(0,0,0,.5)
}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
a{color:inherit}
header{
  position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 94%,transparent);
  border-bottom:1px solid var(--line);backdrop-filter:blur(12px)
}
.header-inner{max-width:1040px;margin:auto;padding:18px 22px 14px}
.brand-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{color:var(--text);font-family:Georgia,"Times New Roman",serif;font-size:29px;text-decoration:none}
.header-actions{display:flex;align-items:center;gap:10px}
.admin-badge{color:var(--accent);font-size:12px;font-weight:700}
.icon-button{width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--surface)}
nav{display:flex;gap:22px;margin-top:14px;overflow-x:auto;scrollbar-width:none}
nav::-webkit-scrollbar{display:none}
.nav-button{
  position:relative;padding:7px 0;border:0;color:var(--text);background:transparent;
  font-size:14px;white-space:nowrap
}
.nav-button::after{
  content:"";position:absolute;right:0;bottom:0;left:0;height:2px;background:var(--accent);
  transform:scaleX(0);transition:.2s
}
.nav-button.active::after,.nav-button:hover::after{transform:scaleX(1)}
.nav-button.active{color:var(--accent);font-weight:700}
main{max-width:780px;margin:auto;padding:0 20px 70px}
.site-page{display:none;min-height:calc(100vh - 150px)}
.site-page.active{display:block;animation:fade .2s ease}
@keyframes fade{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.notice{margin:20px 0 0;padding:13px 15px;border-radius:10px;font-size:14px}
.notice.success{background:#edf8ef;color:#286b35}
.notice.error{background:#fff0f2;color:#9a3448}
.hero{padding:78px 4px 52px;text-align:center;border-bottom:1px solid var(--line)}
.hero h1{margin:0 0 20px;font:500 48px Georgia,"Times New Roman",serif}
.accent-line{width:44px;height:2px;margin:0 auto 23px;background:var(--accent)}
.hero p{margin:0;font-size:16px;line-height:1.95}
.bgm-player{
  display:inline-flex;align-items:center;gap:10px;margin-top:24px;padding:10px 14px;
  border:1px solid var(--line);border-radius:999px;background:var(--surface)
}
.bgm-player button{border:0;color:var(--accent);background:transparent;font-weight:700}
.music-title{font-size:13px}
.small-link{margin-top:15px;border:0;color:var(--accent);background:transparent;font-size:12px;text-decoration:underline}
.content-block{padding:32px 0}
.section-title h2{margin:0 0 18px;font-size:22px}
.section-title h2 span{display:inline-block;width:4px;height:20px;margin-right:10px;border-radius:999px;background:var(--accent);vertical-align:-3px}
.one-line-form{display:flex;gap:10px;margin-bottom:24px}
input,textarea,select{
  width:100%;border:1px solid var(--line);border-radius:10px;padding:13px 14px;
  color:var(--text);background:var(--bg);outline:none
}
input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
textarea{min-height:150px;resize:vertical}
.one-line-form input{flex:1;min-width:0}
.one-line-form button,.board-toolbar button,.admin-login button,.dialog-form>button,.board-write-bottom button,.board-search button{
  border:0;border-radius:10px;padding:11px 16px;color:#fff;background:var(--accent);font-weight:700
}
.one-line-list{border-top:1px solid var(--line)}
.one-line-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}
.one-line-content{font-size:15px;line-height:1.55;word-break:break-word}
.one-line-meta{display:flex;align-items:center;gap:9px}
.one-line-meta time{color:var(--muted);font-size:12px;white-space:nowrap}
.one-line-meta form,.post-actions form,.post-admin-actions form{margin:0}
.text-danger{border:0;color:var(--danger);background:transparent;font-size:12px;padding:0}
.today-note{margin-top:28px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.today-note strong{display:block;margin-bottom:8px;color:var(--accent)}
.today-note p{margin:0;line-height:1.7}
.visitor-counter{display:flex;justify-content:center;gap:24px;padding-top:24px;color:var(--muted);font-size:12px}
.page-header{padding:44px 0 25px;border-bottom:1px solid var(--line)}
.page-header h1{margin:0;font-size:31px}
.page-header p{margin:9px 0 0;color:var(--muted);font-size:14px;line-height:1.7}
.greeting-content{padding:34px 0}
.greeting-content h2{margin:0 0 16px;font-size:25px}
.greeting-content p{margin:0;font-size:16px;line-height:2}
.updated{margin-top:24px;color:var(--muted);font-size:12px}
.board-search{display:flex;gap:9px;align-items:center;padding:22px 0 4px}
.board-search input{flex:1}
.board-search a{color:var(--muted);font-size:13px}
.filter-note{margin:14px 0;padding:11px 14px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-size:13px}
.board-toolbar{display:flex;justify-content:flex-end;padding:18px 0 0}
.board-list{border-top:1px solid var(--line);margin-top:18px}
.board-card{display:grid;grid-template-columns:112px minmax(0,1fr);gap:17px;padding:20px 0;border-bottom:1px solid var(--line)}
.thumb-link{text-decoration:none}
.post-thumb{width:112px;aspect-ratio:4/3;object-fit:cover;border-radius:10px;background:#eee}
.post-thumb.placeholder{display:grid;place-items:center;color:var(--accent);background:var(--accent-soft);font-size:13px;text-align:center}
.category{margin-bottom:6px;color:var(--accent);font-size:12px;font-weight:700}
.board-copy h2{margin:0 0 8px;font-size:19px}
.board-copy h2 a{text-decoration:none}
.board-copy>p{
  display:-webkit-box;margin:0;overflow:hidden;color:var(--muted);font-size:14px;line-height:1.65;
  -webkit-line-clamp:3;-webkit-box-orient:vertical
}
.board-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;color:var(--muted);font-size:12px}
.post-actions{display:flex;align-items:center;gap:10px}
.post-actions a{color:var(--accent);text-decoration:none}
.tag-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.tag-list a{padding:6px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;text-decoration:none}
.tag-list.compact{margin-top:10px}
.tag-list.compact a{padding:4px 7px}
.board-write-bottom{display:flex;justify-content:center;padding:28px 0 8px}
.board-write-bottom button{min-width:150px}
.post-view{padding:32px 0}
.post-view-head{padding-bottom:22px;border-bottom:1px solid var(--line)}
.post-view-head h1{margin:5px 0 10px;font-size:30px;line-height:1.35}
.post-date{color:var(--muted);font-size:13px}
.post-gallery{display:grid;gap:14px;margin:26px 0}
.gallery-button{padding:0;border:0;border-radius:13px;overflow:hidden;background:var(--surface)}
.gallery-button img{display:block;width:100%;max-height:760px;object-fit:contain;background:var(--surface)}
.post-body{padding:12px 0 30px;font-size:16px;line-height:1.95;word-break:break-word}
.post-admin-actions{display:flex;justify-content:flex-end;gap:9px;margin-bottom:20px}
.button-link,.danger-button{display:inline-flex;align-items:center;border:0;border-radius:9px;padding:9px 13px;text-decoration:none}
.button-link.secondary{color:var(--accent);background:var(--accent-soft)}
.danger-button{color:var(--danger);background:#f8e6ea}
.post-navigation{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;
  padding:22px 0;border-top:1px solid var(--line)
}
.post-navigation a{color:var(--accent);text-decoration:none;font-size:14px}
.post-navigation .list-button{padding:9px 14px;border:1px solid var(--line);border-radius:999px;color:var(--text)}
.next-link{text-align:right}
.admin-login{padding:28px 0}
.admin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:26px 0}
.admin-grid>button{padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);text-align:left;color:var(--text)}
.admin-grid strong{display:block;margin-bottom:6px;color:var(--accent)}
.admin-grid span{color:var(--muted);font-size:13px}
.admin-summary{padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.admin-summary p{margin:0 0 10px}
.logout-link{display:inline-block;margin-top:15px;color:var(--accent)}
.empty{padding:28px 0;color:var(--muted);text-align:center}
dialog{width:min(620px,calc(100% - 30px));border:0;border-radius:18px;padding:0;background:var(--bg);color:var(--text);box-shadow:0 24px 70px var(--shadow)}
dialog::backdrop{background:rgba(20,20,20,.55)}
.dialog-form{display:grid;gap:14px;padding:24px}
.dialog-form h2{margin:0 0 4px}
.dialog-form label{display:grid;gap:7px;color:var(--muted);font-size:13px}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.dialog-form button{border:0;border-radius:10px;padding:11px 16px;color:#fff;background:var(--accent);font-weight:700}
.dialog-form .secondary{color:var(--accent);background:var(--accent-soft)}
.help{margin:0;color:var(--muted);font-size:12px;line-height:1.65}
.field-title{margin-bottom:5px;font-size:13px;font-weight:700}
.image-sorter{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sortable-image{position:relative;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:grab}
.sortable-image.dragging{opacity:.45}
.sortable-image img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}
.sortable-image label{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:5px!important;margin-top:7px}
.sortable-image label input{width:auto}
.sortable-image span{display:block;margin-top:5px;color:var(--muted);font-size:10px;text-align:center}
.lightbox{
  position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:30px;
  background:rgba(0,0,0,.9)
}
.lightbox[hidden]{display:none}
.lightbox img{max-width:96vw;max-height:92vh;object-fit:contain}
.lightbox-close{position:fixed;top:17px;right:20px;width:45px;height:45px;border:0;border-radius:50%;color:#fff;background:rgba(255,255,255,.16);font-size:30px}
footer{padding:24px 18px 36px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;text-align:center}
@media(max-width:560px){
  .header-inner{padding-left:18px;padding-right:18px}
  nav{gap:17px}
  main{padding-left:18px;padding-right:18px}
  .hero{padding-top:62px}.hero h1{font-size:43px}
  .one-line-form,.board-search{display:grid}
  .board-card{grid-template-columns:86px minmax(0,1fr);gap:14px}
  .post-thumb{width:86px}
  .admin-grid{grid-template-columns:1fr}
  .image-sorter{grid-template-columns:repeat(2,1fr)}
  .post-view-head h1{font-size:26px}
}


.pagination{
  display:flex;
  justify-content:center;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  padding:26px 0 4px;
}
.pagination a{
  color:var(--muted);
  font-size:14px;
  text-decoration:none;
}
.pagination a.active,
.pagination a:hover{
  color:var(--accent);
  font-weight:800;
}

.post-navigation{
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
}
.post-nav-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:9px 13px;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--accent)!important;
  background:var(--surface);
  text-decoration:none;
  white-space:nowrap;
}
.post-nav-button.list-button{
  color:var(--text)!important;
  font-weight:700;
}
.post-nav-button.disabled{
  color:var(--muted)!important;
  opacity:.42;
  cursor:default;
}
.previous-link{text-align:left}
.next-link{text-align:right}

@media(max-width:480px){
  .post-navigation{gap:7px}
  .post-nav-button{
    min-height:38px;
    padding:8px 10px;
    font-size:12px;
  }
}


.board-page-header{display:flex;align-items:center;justify-content:space-between;gap:18px}
.compact-search{width:min(260px,46%);padding:0;margin:0;display:flex;gap:7px}
.compact-search input{min-width:0;padding:9px 11px;font-size:13px}
.compact-search button{padding:9px 12px;font-size:12px}
.board-categories{display:flex;gap:10px;align-items:center;padding:20px 0 4px}
.board-categories a{padding:8px 13px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:var(--surface);font-size:13px;text-decoration:none}
.board-categories a.active,.board-categories a:hover{color:var(--accent);border-color:var(--accent);font-weight:700}
.detail-categories{padding-top:0;padding-bottom:20px}
.button-link.primary{color:#fff;background:var(--accent);font-weight:700}
.board-write-bottom .button-link{min-width:150px;justify-content:center}
.full-page-editor{display:grid;gap:18px;padding:28px 0 10px}
.full-page-editor label{display:grid;gap:8px;color:var(--muted);font-size:13px}
.full-page-editor textarea{min-height:420px}
.editor-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:8px}
.editor-actions button{border:0;border-radius:10px;padding:11px 18px;color:#fff;background:var(--accent);font-weight:700}
.admin-card-link{display:block;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);text-align:left;text-decoration:none}
.admin-card-link strong{display:block;margin-bottom:6px;color:var(--accent)}
.admin-card-link span{color:var(--muted);font-size:13px}
@media(max-width:560px){.board-page-header{align-items:flex-start}.compact-search{width:48%}.compact-search button{display:none}.full-page-editor textarea{min-height:320px}}


.persistent-bgm{
  display:flex;
  align-items:center;
  gap:10px;
  width:max-content;
  max-width:100%;
  margin-top:12px;
  padding:8px 12px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
}
.persistent-bgm .music-title{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.persistent-bgm button{
  flex:none;
  border:0;
  color:var(--accent);
  background:transparent;
  font-weight:700;
}
.page-loading #pageContent{
  opacity:.56;
  pointer-events:none;
}
#pageContent{
  transition:opacity .15s ease;
}


.bgm-mount{
  display:flex;
  justify-content:center;
  min-height:0;
  margin:0 0 22px;
}
.bgm-mount:empty{
  display:none;
}
.bgm-mount .persistent-bgm{
  margin:0;
}
.header-inner > .persistent-bgm{
  display:none;
}
