:root{
  --accent:#c9a227; --accent2:#e8c874;
  --ink:#1c1a16; --muted:#8a8478;
  --radius:6px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Pretendard Variable',Pretendard,'NanumSquare',-apple-system,'Segoe UI',sans-serif;
  background:#f4f1ea; color:var(--ink); min-height:100vh; padding-bottom:90px;
  transition:background .4s,color .4s;
}
body.dark{background:#08080a;color:#e8e6e0}
button{font-family:inherit;cursor:pointer}
.serif{font-family:'Noto Serif KR',serif}

/* ---------- header ---------- */
.topbar{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:14px 32px 8px;flex-wrap:wrap;max-width:1600px;margin:0 auto;
}
.brand h1{
  font-family:'Noto Serif KR',serif;font-size:25px;font-weight:700;letter-spacing:-1px;
  border-bottom:3px solid var(--accent);display:inline-block;padding-bottom:6px;
  outline:none;min-width:60px;
}
.brand h1:focus{background:rgba(201,162,39,.12)}
.brand p{font-size:14px;color:var(--muted);margin-top:10px;letter-spacing:2px}
.top-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
body.exhibiting .topbar,body.exhibiting .styleswitch,body.exhibiting .criteria{display:none}
.walk-menu{
  position:absolute;top:56px;left:14px;z-index:6;display:flex;flex-direction:column;gap:6px;
  background:rgba(10,10,12,.88);border:1px solid #3a3a42;border-radius:12px;padding:10px;min-width:172px;
  box-shadow:0 12px 32px rgba(0,0,0,.5);backdrop-filter:blur(8px);
}
.walk-menu[hidden]{display:none}
.walk-menu .btn{background:transparent;color:#f4f1ea;border-color:transparent;text-align:left}
.walk-menu .btn:hover{background:rgba(255,255,255,.08)}
.menu-wrap{position:relative}
.menu-pop{
  position:absolute;right:0;top:calc(100% + 8px);z-index:60;
  display:flex;flex-direction:column;gap:6px;min-width:170px;
  background:rgba(20,20,24,.96);border:1px solid #3a3a42;border-radius:12px;padding:10px;
  box-shadow:0 12px 32px rgba(0,0,0,.4);backdrop-filter:blur(8px);
}
.menu-pop[hidden]{display:none}
.menu-pop .btn{background:transparent;color:#f4f1ea;border-color:transparent;text-align:left}
.menu-pop .btn:hover{background:rgba(255,255,255,.08)}
.btn{
  border:1px solid #d8d2c4;background:#fff;color:var(--ink);
  border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .15s;
}
body.dark .btn{background:#17171b;border-color:#2a2a30;color:#e8e6e0}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.12)}
.btn.primary{background:var(--ink);color:#f4f1ea;border-color:var(--ink)}
body.dark .btn.primary{background:var(--accent);border-color:var(--accent);color:#141414}
.btn.ghost{background:transparent}
.btn.icon{padding:10px 13px}

/* ---------- style switch ---------- */
.styleswitch{
  display:flex;gap:8px;justify-content:center;flex-wrap:wrap;
  max-width:1280px;margin:26px auto 0;padding:0 24px;
}
.styleswitch button{
  background:transparent;border:1px solid #d8d2c4;color:var(--muted);
  border-radius:20px;padding:9px 18px;font-size:13px;font-weight:700;transition:all .2s;
}
body.dark .styleswitch button{border-color:#2a2a30}
.styleswitch button.active{background:var(--ink);border-color:var(--ink);color:#f4f1ea}
body.dark .styleswitch button.active{background:var(--accent);border-color:var(--accent);color:#141414}

/* ---------- gallery common ---------- */
.gallery{max-width:1600px;margin:18px auto 0;padding:0 32px;min-height:300px}
.gallery.g-walkthrough{max-width:none;margin:10px 0 0;padding:0}
.g-walkthrough{border-radius:0;border-left:none;border-right:none}
.gallery.fade{animation:fadein .3s ease}
@keyframes fadein{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---------- whitecube ---------- */
.g-whitecube{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:44px 36px}
.work{cursor:pointer}
.work .frame{
  background:#fff;padding:18px;border:1px solid #e2ddd2;
  box-shadow:0 2px 4px rgba(0,0,0,.06),0 18px 40px -18px rgba(0,0,0,.25);
  transition:transform .25s,box-shadow .25s;
}
.work:hover .frame{transform:translateY(-6px);box-shadow:0 4px 8px rgba(0,0,0,.08),0 30px 60px -20px rgba(0,0,0,.35)}
.work .frame .inner{border:6px solid #1c1a16;background:#000;overflow:hidden}
.work img,.work video{width:100%;display:block;aspect-ratio:4/3;object-fit:cover;background:#000}
.work .plate{margin-top:14px;display:flex;gap:12px;align-items:flex-start}
.work .plate .no{
  font-family:'Noto Serif KR',serif;font-size:13px;color:var(--accent);font-weight:700;
  border-top:2px solid var(--accent);padding-top:6px;min-width:34px;
}
.work .plate h3{font-family:'Noto Serif KR',serif;font-size:17px;font-weight:600;outline:none}
.work .plate h3:focus{background:rgba(201,162,39,.12)}
.work .plate p{font-size:12px;color:var(--muted);margin-top:4px}
.work .plate .desc{font-size:13px;color:#5c574c;margin-top:6px;line-height:1.6;outline:none}
.work .plate .desc:focus{background:rgba(201,162,39,.08)}

/* ---------- darkroom ---------- */
.g-darkroom{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:26px}
.g-darkroom .dwork{position:relative;cursor:pointer;overflow:hidden;border-radius:4px;background:#000}
.g-darkroom img,.g-darkroom video{width:100%;display:block;aspect-ratio:4/3;object-fit:cover;opacity:.55;transition:opacity .4s,transform .6s}
.g-darkroom .dwork:hover img,.g-darkroom .dwork:hover video{opacity:1;transform:scale(1.04)}
.g-darkroom .dwork::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(420px 300px at 50% 40%,transparent 30%,rgba(0,0,0,.75) 100%);
  transition:opacity .4s;
}
.g-darkroom .dwork:hover::after{opacity:.25}
.g-darkroom .dcap{
  position:absolute;left:0;right:0;bottom:0;padding:34px 18px 14px;color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.85));
  font-family:'Noto Serif KR',serif;opacity:0;transform:translateY(8px);transition:all .35s;
}
.g-darkroom .dwork:hover .dcap{opacity:1;transform:none}
.g-darkroom .dcap h3{font-size:16px}
.g-darkroom .dcap p{font-size:11px;color:#b9b4a8;margin-top:3px;letter-spacing:1px}

/* ---------- walkthrough ---------- */
.g-walk{position:relative;height:620px;border-radius:8px;overflow:hidden;background:#0c0c0e;border:1px solid #2a2a30}
.g-walkthrough{position:relative;overflow:hidden;border-radius:14px}
.g-walk canvas,.g-walkthrough canvas{display:block;cursor:grab;touch-action:none}
.walk-ui{position:absolute;top:14px;left:14px;display:flex;gap:8px;z-index:5}
.walk-ui .btn{background:rgba(10,10,12,.7);color:#fff;border-color:#3a3a42;font-size:13px;backdrop-filter:blur(6px)}
.walk-hint{
  position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:5;
  font-size:12px;color:#cfccc2;background:rgba(10,10,12,.65);padding:8px 18px;border-radius:18px;
  pointer-events:none;white-space:nowrap;backdrop-filter:blur(6px);
}
.walk-loading{
  position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;gap:14px;
  align-items:center;justify-content:center;background:#0e0e10;transition:opacity .5s;
}
.walk-loading-t{color:#e8e6e0;font-size:15px}
.walk-loading-bar{width:min(320px,70%);height:6px;border-radius:3px;background:#2a2a30;overflow:hidden}
.walk-loading-bar div{height:100%;width:0%;border-radius:3px;background:linear-gradient(90deg,#c9a227,#e8c874);transition:width .2s}
.walk-lookcard{
  position:absolute;left:50%;bottom:52px;transform:translateX(-50%);z-index:6;
  background:rgba(12,12,14,.82);border:1px solid rgba(201,162,39,.45);border-radius:10px;
  padding:10px 18px;color:#f4f1ea;text-align:center;pointer-events:none;max-width:88%;
  box-shadow:0 8px 28px rgba(0,0,0,.5);
}
.walk-lookcard b{display:block;font-size:14px;margin-bottom:2px}
.walk-lookcard span{font-size:12px;color:#b9b3a6}
.walk-joy{
  position:absolute;left:22px;bottom:22px;width:110px;height:110px;border-radius:50%;z-index:7;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);touch-action:none;
}
/* ---------- 액자 편집 패널 ---------- */
.arr-panel{
  position:absolute;top:60px;right:14px;z-index:7;width:300px;max-width:calc(100% - 28px);
  background:rgba(12,12,14,.9);border:1px solid #3a3a42;border-radius:12px;padding:12px 14px;
  color:#f4f1ea;font-size:13px;box-shadow:0 12px 32px rgba(0,0,0,.5);backdrop-filter:blur(8px);
  display:flex;flex-direction:column;gap:10px;
}
.arr-panel[hidden]{display:none}
.arr-panel .btn{background:rgba(255,255,255,.06);color:#f4f1ea;border-color:#3a3a42}
.arr-panel .btn.primary{background:var(--accent);color:#111;border-color:var(--accent)}
.arr-panel .btn:disabled{opacity:.4;cursor:default}
.arr-head{display:flex;align-items:center;justify-content:space-between}
.arr-head b{font-size:14px}
.arr-sel{color:#b9b3a6;font-size:12px}
.arr-sel b{color:#f4f1ea;font-size:13px;margin-left:4px}
.arr-row{display:flex;align-items:center;gap:10px}
.arr-row>span{width:34px;flex:none;color:#b9b3a6;font-size:12px}
.arr-row input[type=range]{flex:1;accent-color:var(--accent)}
.arr-row em{font-style:normal;width:46px;text-align:right;font-size:12px;color:#cfccc2}
.arr-styles{display:flex;gap:6px;flex-wrap:wrap}
.arr-sw{width:24px;height:24px;border-radius:50%;border:2px solid #555;background:var(--sw);cursor:pointer;color:#aaa;font-size:12px;line-height:1}
.arr-sw.on{border-color:var(--accent);box-shadow:0 0 0 2px rgba(201,162,39,.35)}
.arr-btns,.arr-foot{display:flex;gap:6px;flex-wrap:wrap}
.arr-foot{border-top:1px solid #2c2c34;padding-top:10px}
.arr-hint{color:#cfccc2;line-height:1.65;font-size:12px}
.arr-hint b{color:var(--accent2)}
/* 액자 배치 우클릭 메뉴 */
.walk-ctx{
  position:absolute;z-index:9;min-width:210px;max-width:280px;padding:6px;
  background:rgba(14,14,17,.94);border:1px solid #3a3a42;border-radius:12px;color:#f4f1ea;
  box-shadow:0 12px 32px rgba(0,0,0,.55);backdrop-filter:blur(8px);font-size:13px;
}
.walk-ctx[hidden]{display:none}
.walk-ctx button{display:block;width:100%;text-align:left;background:transparent;border:0;color:inherit;
  padding:8px 10px;border-radius:8px;font:inherit;cursor:pointer}
.walk-ctx button:hover{background:rgba(255,255,255,.09)}
.walk-ctx .ctx-h{padding:6px 10px 8px;font-weight:700;color:var(--accent2,#e8c874);border-bottom:1px solid #2c2c33;margin-bottom:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.walk-ctx .ctx-row{display:flex;gap:4px}
.walk-ctx .ctx-sub{display:block;padding:8px 10px 4px;font-size:11px;color:#9a958a}
.walk-ctx .ctx-snd{display:flex;flex-wrap:wrap;gap:4px;padding:2px 6px 6px}
.walk-ctx .ctx-snd button{width:auto;padding:5px 8px;border:1px solid #3a3a42;font-size:12px}
.walk-ctx .ctx-snd button.on{border-color:var(--accent,#c9a227);background:rgba(201,162,39,.18)}
.walk-ctx .ctx-list{max-height:240px;overflow-y:auto}
.walk-movebar{
  position:absolute;left:50%;top:70px;transform:translateX(-50%);z-index:8;display:flex;align-items:center;gap:10px;
  background:rgba(12,12,14,.88);border:1px solid var(--accent,#c9a227);border-radius:999px;padding:6px 8px 6px 16px;
  color:#f4f1ea;font-size:13px;white-space:nowrap;max-width:94%;
}
.walk-movebar[hidden]{display:none}
.walk-movebar .btn{background:rgba(255,255,255,.08);color:#fff;border-color:#3a3a42}

/* ---------- 모바일 ---------- */
@media (max-width:700px){
  .walk-ui{flex-wrap:wrap;max-width:calc(100vw - 28px);gap:6px}
  .walk-ui .btn{font-size:12px;padding:7px 10px}
  .walk-menu{top:104px;min-width:160px}
  .walk-hint{font-size:11px;padding:6px 12px;white-space:normal;text-align:center;line-height:1.5;left:124px;right:12px;transform:none;max-width:none}
  .walk-joy{width:96px;height:96px;left:14px;bottom:14px}
  .walk-lookcard{bottom:126px;padding:8px 14px}
  .arr-panel{top:auto;bottom:130px;right:12px;left:12px;width:auto;max-height:46vh;overflow-y:auto}
  .walk-movebar{top:112px;white-space:normal;border-radius:14px;font-size:12px}
  .lb-figure{flex-direction:column;gap:16px;max-height:92vh;overflow-y:auto}
  .lb-media img,.lb-media video{max-width:88vw;max-height:52vh}
}
.walk-joy-knob{
  position:absolute;left:50%;top:50%;width:48px;height:48px;border-radius:50%;
  background:rgba(201,162,39,.75);transform:translate(-50%,-50%);
}
/* ---------- 3D 공간 설정 / 작품 편집 ---------- */
.style-note{font-size:13px;color:var(--muted);padding:6px 4px;display:block}
.modal-card.wide{width:min(640px,94vw)}
.set-row{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.set-row label{flex:0 0 110px;font-size:13px;font-weight:600;color:var(--ink)}
.set-row input[type=range]{flex:1;accent-color:var(--accent)}
.set-val{flex:0 0 52px;font-size:13px;color:var(--muted);text-align:right}
.set-themes{display:flex;gap:8px;flex-wrap:wrap}
.edit-list{max-height:46vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;margin:6px 0 4px}
.edit-row{display:flex;gap:12px;align-items:flex-start;background:rgba(0,0,0,.03);border:1px solid var(--line);border-radius:10px;padding:10px}
body.dark .edit-row{background:rgba(255,255,255,.04)}
.edit-row img{width:64px;height:64px;object-fit:cover;border-radius:8px;flex:0 0 64px;background:#222}
.edit-vid{width:64px;height:64px;flex:0 0 64px;border-radius:8px;background:#1c1c20;color:#c9a227;display:flex;align-items:center;justify-content:center;font-size:20px}
.edit-fields{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}
.edit-no{font-size:11px;color:var(--muted)}
.edit-fields .textin{margin-bottom:0}

/* ---------- magazine ---------- */
.g-magazine{max-width:900px;margin-left:auto;margin-right:auto}
.mag-cover{position:relative;margin-bottom:70px}
.mag-cover img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover}
.mag-cover .mag-title{
  position:absolute;left:-10px;bottom:-34px;background:#f4f1ea;padding:18px 30px 18px 0;
  max-width:80%;
}
.mag-cover .mag-title h2{font-family:'Noto Serif KR',serif;font-size:clamp(28px,5vw,52px);line-height:1.25;letter-spacing:-1px}
.mag-cover .mag-title p{font-size:13px;color:var(--muted);margin-top:8px;letter-spacing:3px}
.mag-row{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;margin:64px 0}
.mag-row:nth-child(even) .mag-img{order:2}
.mag-img img{width:100%;display:block;box-shadow:0 20px 50px -20px rgba(0,0,0,.3)}
.mag-img .cap{font-size:12px;color:var(--muted);margin-top:10px;letter-spacing:1px}
.mag-text h3{font-family:'Noto Serif KR',serif;font-size:24px;margin-bottom:14px}
.mag-text h3 .n{color:var(--accent);font-size:15px;display:block;margin-bottom:8px;letter-spacing:2px}
.mag-text p{font-size:15px;line-height:1.9;color:#4a463d}
.mag-text p.drop::first-letter{
  font-family:'Noto Serif KR',serif;font-size:52px;float:left;line-height:1;
  padding:4px 10px 0 0;color:var(--accent);font-weight:700;
}
.mag-end{text-align:center;margin:80px 0 20px;color:var(--muted);font-size:13px;letter-spacing:4px}
.mag-end .fin{font-family:'Noto Serif KR',serif;font-size:22px;color:var(--ink);letter-spacing:8px;margin-bottom:10px}

/* ---------- empty ---------- */
.empty{max-width:620px;margin:60px auto;text-align:center;padding:40px 24px}
.empty-art{font-size:54px;margin-bottom:18px}
.empty h2{font-family:'Noto Serif KR',serif;font-size:24px;margin-bottom:12px}
.empty p{color:var(--muted);line-height:1.8;font-size:15px}
.empty p b{color:var(--ink)}
.empty-btns{display:flex;gap:10px;justify-content:center;margin:24px 0 14px;flex-wrap:wrap}
.empty-note{font-size:12px!important}

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed;inset:0;z-index:60;background:rgba(8,8,10,.94);
  display:flex;align-items:center;justify-content:center;padding:30px;animation:fadein .2s ease;
}
.lb-figure{display:flex;gap:36px;align-items:center;max-width:1100px;max-height:88vh}
.lb-media img,.lb-media video{max-width:min(66vw,760px);max-height:82vh;display:block;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.lb-caption{color:#e8e6e0;max-width:280px}
.lb-caption h3{font-family:'Noto Serif KR',serif;font-size:24px;margin-bottom:10px;outline:none}
.lb-caption h3:focus{background:rgba(201,162,39,.15)}
.lb-meta{font-size:12px;color:#9a958a;letter-spacing:2px;margin-bottom:14px}
.lb-desc{font-size:14px;line-height:1.8;color:#c9c4b8;outline:none;white-space:pre-wrap}
.lb-desc:focus{background:rgba(201,162,39,.1)}
.lb-close{position:absolute;top:18px;right:18px}
.lb-nav{position:absolute;top:44%;font-size:28px;padding:10px 17px}
.lb-nav.prev{left:16px}.lb-nav.next{right:16px}

/* ---------- projector ---------- */
.projector{position:fixed;inset:0;z-index:70;background:#000;display:flex;flex-direction:column}
.pj-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pj-stage img{max-width:92vw;max-height:78vh;object-fit:contain;box-shadow:0 0 120px rgba(255,255,255,.08)}
.pj-grain{
  position:absolute;inset:0;z-index:3;pointer-events:none;opacity:.07;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
}
.pj-stage::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%)}
.pj-bar{
  display:flex;justify-content:space-between;align-items:center;gap:12px;z-index:4;
  padding:16px 26px;background:rgba(5,5,7,.92);border-top:1px solid #222;
}
.pj-caption h3{color:#f0ede6;font-family:'Noto Serif KR',serif;font-size:17px}
.pj-caption p{color:#8a867c;font-size:12px;margin-top:4px;letter-spacing:2px}
.pj-controls{display:flex;align-items:center;gap:8px}
.pj-controls .btn{background:#17171b;border-color:#2c2c33;color:#e8e6e0}
.pj-count{font-size:13px;color:#8a867c;min-width:64px;text-align:center}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:80;background:rgba(8,8,10,.6);display:flex;align-items:center;justify-content:center;padding:20px}
.modal[hidden]{display:none}
[hidden]{display:none!important}
.modal-card{background:#fffdf8;border:1px solid #e2ddd2;border-radius:12px;padding:26px;width:min(520px,94vw);max-height:88vh;overflow-y:auto;color:var(--ink)}
body.dark .modal-card{background:#17171b;border-color:#2a2a30;color:#e8e6e0}
.modal-card h2{font-size:19px;margin-bottom:12px;font-family:'Noto Serif KR',serif}
.modal-card .hint{font-size:13px;color:var(--muted);line-height:1.7;margin-bottom:14px}
.modal-card textarea{
  width:100%;border:1px solid #d8d2c4;border-radius:8px;padding:12px;
  font-family:inherit;font-size:13px;resize:vertical;background:#fff;color:var(--ink);outline:none;
}
.modal-card textarea:focus{border-color:var(--accent)}
body.dark .modal-card textarea{background:#0e0e10;border-color:#2c2c33;color:#e8e6e0}
.modal-actions{display:flex;gap:8px;margin-top:16px}
.spacer{flex:1}
.btn.sm{padding:8px 14px;font-size:13px}
.textin{
  width:100%;border:1px solid #d8d2c4;border-radius:8px;padding:10px 12px;
  font-family:inherit;font-size:13px;margin-bottom:8px;background:#fff;color:var(--ink);outline:none;
}
.textin:focus{border-color:var(--accent)}
body.dark .textin{background:#0e0e10;border-color:#2c2c33;color:#e8e6e0}
.sep{border:none;border-top:1px solid var(--line);margin:16px 0}
.hint.small{font-size:12px}
.hint a{color:var(--accent)}

/* ---------- 전시 기준 바 ---------- */
.criteria{
  max-width:1280px;margin:16px auto 0;padding:10px 24px;
  font-size:13px;font-weight:700;text-align:center;
  border-radius:10px;
}
.criteria.ok{background:rgba(201,162,39,.1);border:1px solid rgba(201,162,39,.4);color:var(--ink)}
.criteria.warn{background:rgba(220,60,60,.08);border:1px solid rgba(220,60,60,.45);color:#b03a3a}
body.dark .criteria.warn{color:#ff9a9a}
.criteria .btn{margin-left:10px}
.crit-row{display:flex;align-items:center;justify-content:center;gap:14px;margin:6px 0 4px}
.crit-row label{font-size:14px;font-weight:600}
.crit-row input{
  width:70px;text-align:center;font-size:16px;font-weight:700;font-family:inherit;
  border:1px solid #d8d2c4;border-radius:8px;padding:8px;background:#fff;color:var(--ink);outline:none;
}
.crit-row input:focus{border-color:var(--accent)}
body.dark .crit-row input{background:#0e0e10;border-color:#2c2c33;color:#e8e6e0}

/* ---------- 벤토 그리드 ---------- */
.g-bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:12px;grid-auto-flow:dense}
.bento-item{position:relative;overflow:hidden;border-radius:10px;cursor:pointer;background:#000}
.bento-item img,.bento-item video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.bento-item:hover img{transform:scale(1.06)}
.bento-item .bcap{
  position:absolute;left:0;right:0;bottom:0;padding:26px 14px 10px;color:#fff;font-size:13px;font-weight:600;
  background:linear-gradient(transparent,rgba(0,0,0,.75));opacity:0;transition:opacity .3s;
}
.bento-item:hover .bcap{opacity:1}
.bento-item .type-badge{
  position:absolute;top:8px;right:8px;font-size:10px;font-weight:800;color:#fff;
  background:rgba(0,0,0,.6);border-radius:6px;padding:3px 7px;
}

/* ---------- 가로 스크롤 ---------- */
.g-hscroll{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 4px 20px}
.hcard{flex:0 0 auto;scroll-snap-align:center;cursor:pointer;position:relative}
.hcard img,.hcard video{height:58vh;min-height:300px;width:auto;max-width:84vw;object-fit:cover;display:block;border-radius:6px;box-shadow:0 18px 44px -18px rgba(0,0,0,.4);background:#000}
.hcard:nth-child(even) img,.hcard:nth-child(even) video{height:46vh;margin-top:7vh}
.hcard .hcap{margin-top:10px;font-family:'Noto Serif KR',serif;font-size:15px}
.hcard .hcap span{color:var(--accent);font-size:12px;margin-right:8px}

/* ---------- 마퀴 ---------- */
.g-marquee{overflow:hidden;display:flex;flex-direction:column;gap:16px;padding:10px 0}
.mq-row{display:flex;gap:14px;width:max-content;animation:mq 46s linear infinite}
.mq-row.rev{animation-direction:reverse;animation-duration:60s}
.g-marquee:hover .mq-row{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.mq-item{flex:0 0 auto;cursor:pointer;position:relative}
.mq-item img{height:210px;width:auto;object-fit:cover;display:block;border-radius:8px}
.mq-row.rev .mq-item img{height:170px}
.mq-item .bcap{
  position:absolute;left:0;right:0;bottom:0;padding:20px 10px 8px;color:#fff;font-size:12px;
  background:linear-gradient(transparent,rgba(0,0,0,.7));opacity:0;transition:opacity .3s;border-radius:0 0 8px 8px;
}
.mq-item:hover .bcap{opacity:1}

/* ---------- 3D 캐러셀 ---------- */
.g-carousel{position:relative}
.car-stage{position:relative;height:500px;perspective:1400px;overflow:hidden;border-radius:10px;
  background:radial-gradient(700px 260px at 50% 110%,rgba(201,162,39,.14),transparent 70%)}
body.dark .car-stage{background:radial-gradient(700px 260px at 50% 110%,rgba(201,162,39,.1),transparent 70%),#0c0c0e}
.car-item{
  position:absolute;left:50%;top:50%;width:min(320px,64vw);cursor:pointer;
  transform-style:preserve-3d;will-change:transform;
}
.car-item img,.car-item video{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;border-radius:8px;
  box-shadow:0 24px 60px -18px rgba(0,0,0,.5);background:#000;border:6px solid #fff}
body.dark .car-item img,body.dark .car-item video{border-color:#1c1c20}
.car-item .ccap{text-align:center;font-family:'Noto Serif KR',serif;font-size:14px;margin-top:10px;color:var(--ink)}
body.dark .car-item .ccap{color:#e8e6e0}

/* ---------- 폴라로이드 ---------- */
.g-polaroid{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;padding:20px 0}
.pol{
  background:#fff;padding:14px 14px 18px;cursor:pointer;position:relative;
  box-shadow:0 12px 32px -10px rgba(0,0,0,.28);
  transform:rotate(var(--r,0deg));transition:transform .25s,box-shadow .25s;
}
.pol:hover{transform:rotate(0deg) scale(1.06);box-shadow:0 24px 50px -12px rgba(0,0,0,.4);z-index:3}
.pol::before{
  content:"";position:absolute;top:-12px;left:50%;transform:translateX(-50%) rotate(-3deg);
  width:92px;height:26px;background:rgba(233,222,190,.75);border:1px solid rgba(0,0,0,.06);
}
.pol img,.pol video{width:230px;aspect-ratio:1;object-fit:cover;display:block;background:#eee}
.pol figcaption{
  font-family:'Noto Serif KR',serif;font-style:italic;font-size:14px;color:#4a463d;
  text-align:center;margin-top:12px;
}

/* ---------- toast ---------- */
.toast{
  position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:90;
  background:#1c1a16;color:#f4f1ea;padding:12px 24px;border-radius:24px;font-size:14px;
  box-shadow:0 8px 24px rgba(0,0,0,.35);animation:fadein .2s ease;max-width:90vw;text-align:center;
}

@media (max-width:720px){
  .topbar{padding:22px 20px 6px}
  .gallery{padding:0 20px}
  .mag-row{grid-template-columns:1fr;gap:20px}
  .mag-row:nth-child(even) .mag-img{order:0}
  .lb-figure{flex-direction:column;gap:18px}
  .lb-media img,.lb-media video{max-width:92vw;max-height:56vh}
  .lb-caption{max-width:92vw;text-align:center}
  .lb-nav{display:none}
  .g-walk{height:480px}
}

/* 3D 공간 테마 선택줄 */
.walk-themes{top:auto;bottom:52px;left:14px;align-items:center;background:rgba(10,10,12,.55);padding:6px 10px;border-radius:12px;backdrop-filter:blur(6px)}
.walk-themes-label{font-size:12px;color:#d8d3c6;white-space:nowrap}
.walk-themes .btn{font-size:12px;padding:5px 10px}
/* 라이트박스 AI 설명 */
.lb-actions{display:flex;align-items:center;gap:10px;margin-top:14px}
.lb-hint{font-size:12px;color:#8f897c}
@media (max-width:640px){.lb-actions{flex-direction:column;align-items:stretch}.walk-themes{bottom:auto;top:64px}}
