html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:Arial,Helvetica,sans-serif;background:#111;color:#fff}canvas{display:block}.hidden{display:none!important}#error-diagnostic{position:fixed;left:16px;right:16px;top:16px;z-index:10000;background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:12px;padding:12px 14px}#top-nav{position:fixed;z-index:50;top:14px;left:14px;display:flex;gap:8px;align-items:center}.nav-link,.nav-btn{border:0;border-radius:999px;background:rgba(0,0,0,.68);color:#fff;text-decoration:none;padding:9px 13px;font-weight:700;backdrop-filter:blur(10px);cursor:pointer}.nav-link:hover,.nav-btn:hover,.nav-btn.active{background:#d4af37;color:#111}#intro{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:linear-gradient(120deg,rgba(0,0,0,.72),rgba(0,0,0,.28));padding:20px}.intro-card{max-width:680px;text-align:center;background:rgba(17,24,39,.72);border:1px solid rgba(255,255,255,.18);border-radius:24px;padding:30px 24px;box-shadow:0 30px 100px rgba(0,0,0,.35);backdrop-filter:blur(14px)}.intro-card h1{margin:0 0 12px;font-size:34px}.intro-card p{margin:0 0 20px;color:#e5e7eb;line-height:1.6}.intro-card button,#guide-close{border:0;border-radius:999px;background:#d4af37;color:#111;font-weight:800;padding:12px 18px;cursor:pointer}#empty-state{position:fixed;z-index:35;left:50%;top:84px;transform:translateX(-50%);background:#fff;color:#111;padding:12px 16px;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.22)}#empty-state a{color:#2563eb;font-weight:700}#guide-modal{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.58);display:flex;align-items:center;justify-content:center;padding:18px}.modal-content{position:relative;width:min(520px,92vw);background:#fff;color:#111;border-radius:18px;padding:22px;box-shadow:0 20px 70px rgba(0,0,0,.32)}.modal-x{border:0;background:#111;color:#fff;border-radius:999px;width:32px;height:32px;font-size:20px;line-height:1;cursor:pointer}.modal-content .modal-x{position:absolute;right:12px;top:12px}.modal-content h3{margin:0 38px 12px 0}.modal-content p{line-height:1.55;color:#374151}#door-hint{position:fixed;z-index:30;bottom:74px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.62);padding:9px 13px;border-radius:999px;font-size:13px}#minimap-shell{position:fixed;z-index:30;right:14px;bottom:14px;width:148px;height:108px;border:1px solid rgba(255,255,255,.55);border-radius:14px;background:rgba(0,0,0,.52);backdrop-filter:blur(10px);cursor:pointer;overflow:hidden}#minimap-shell:before{content:"";position:absolute;inset:18px 12px 12px;border:1px dashed rgba(255,255,255,.45);border-radius:8px}#minimap-player{position:absolute;z-index:3;width:14px;height:14px;border-radius:50%;background:#ff3b30;border:2px solid #fff;box-shadow:0 0 0 2px rgba(0,0,0,.35),0 0 10px rgba(255,59,48,.75);pointer-events:none}#minimap-player:after{content:"";position:absolute;left:50%;top:-7px;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:8px solid #fff}.minimap-title{position:absolute;top:5px;left:10px;font-size:11px;font-weight:800}.minimap-help{position:absolute;bottom:6px;left:10px;font-size:10px;color:#d1d5db}#mobile-tip{position:fixed;z-index:30;left:14px;bottom:14px;background:rgba(0,0,0,.58);border-radius:999px;padding:8px 12px;font-size:12px;color:#e5e7eb}.room-list-page{overflow:auto;background:#f3f4f6;color:#111}.room-list-wrap{max-width:1180px;margin:0 auto;padding:34px 18px}.room-list-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:22px}.room-list-header h1{margin:0 0 8px;font-size:30px}.room-list-header p{margin:0;color:#4b5563;line-height:1.55}.manage-link{display:inline-block;background:#111;color:#fff;text-decoration:none;border-radius:10px;padding:11px 14px;font-weight:800}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.room-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 10px 38px rgba(0,0,0,.08);border:1px solid #e5e7eb}.room-cover{display:block;height:172px;background:#111;text-decoration:none}.room-cover img{width:100%;height:100%;object-fit:cover;display:block}.room-cover-empty{height:100%;display:flex;align-items:center;justify-content:center;color:#d4af37;font-size:44px;font-weight:900}.room-card-body{padding:16px}.room-card-body h2{margin:0 0 8px;font-size:19px}.room-card-body h2 a{color:#111;text-decoration:none}.room-card-body p{margin:0 0 14px;color:#4b5563;line-height:1.5}.room-card-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.room-card-actions a,.room-card-actions button{border:0;border-radius:999px;background:#f3f4f6;color:#111;text-decoration:none;padding:8px 10px;font-weight:700;cursor:pointer}.room-card-actions span{margin-right:auto;color:#6b7280;font-size:13px}@media(max-width:760px){.intro-card h1{font-size:25px}#top-nav{top:10px;left:10px}.nav-link,.nav-btn{padding:8px 10px}#minimap-shell{width:118px;height:90px}.room-list-header{display:block}.manage-link{margin-top:14px}.info-card-split{grid-template-columns:1fr!important}}

#minimap-shell .minimap-wall{position:absolute;z-index:1;background:rgba(255,255,255,.38);border:1px solid rgba(255,255,255,.72);border-radius:4px;pointer-events:none}#minimap-shell .minimap-door{position:absolute;z-index:2;width:16px;height:6px;background:#d4af37;border:1px solid #fff;border-radius:999px;transform:translate(-50%,-50%);pointer-events:none}
#video-modal{position:fixed;inset:0;z-index:10020;background:rgba(0,0,0,.78);display:flex;align-items:center;justify-content:center;padding:18px}#video-modal.hidden{display:none!important}.video-card{position:relative;width:min(1080px,96vw);height:min(640px,86vh);background:#000;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.55);padding:44px 14px 14px}.video-card iframe,.video-card video,#videoMount{width:100%;height:100%;display:block;border:0;border-radius:12px;background:#000}.video-full-btn{position:absolute;right:58px;top:10px;border:0;border-radius:999px;background:#d4af37;color:#111;font-weight:800;padding:8px 12px;cursor:pointer}#door-hint,#mobile-tip{display:none!important}
#tour-panel{position:fixed;z-index:80;top:62px;left:14px;width:min(320px,88vw);max-height:62vh;overflow:auto;background:rgba(17,24,39,.92);border:1px solid rgba(255,255,255,.2);border-radius:16px;padding:12px;box-shadow:0 18px 60px rgba(0,0,0,.34);backdrop-filter:blur(12px)}.tour-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.tour-panel-head button{border:0;border-radius:999px;background:#111;color:#fff;width:26px;height:26px;cursor:pointer}#tourPointList{display:grid;gap:8px;max-height:50vh;overflow:auto;padding-right:4px}#tourPointList button{border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(255,255,255,.08);color:#fff;padding:9px 10px;text-align:left;font-weight:700;cursor:pointer}#tourPointList button:hover{background:#d4af37;color:#111}.tour-empty{color:#d1d5db;padding:10px}
#gallery2d-modal{position:fixed;inset:0;z-index:10010;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;padding:18px}#gallery2d-modal.hidden{display:none!important}.gallery2d-card{position:relative;width:min(1280px,96vw);height:min(820px,92vh);background:#fff;color:#111;border-radius:22px;box-shadow:0 28px 90px rgba(0,0,0,.55);padding:20px;display:flex;flex-direction:column;gap:14px}.gallery2d-main{display:grid;grid-template-columns:minmax(360px,62%) minmax(280px,38%);gap:18px;min-height:0;flex:1}.gallery2d-image-wrap{background:#f8fafc;border-radius:16px;display:flex;align-items:center;justify-content:center;overflow:hidden}.gallery2d-image-wrap img{max-width:100%;max-height:100%;object-fit:contain}.gallery2d-info{overflow:auto;padding:4px 8px}.gallery2d-info h2{font-size:28px;margin:0 42px 14px 0}.gallery2d-info p{line-height:1.55}.gallery2d-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.gallery2d-actions button{border:0;border-radius:999px;background:#111;color:#fff;padding:10px 14px;font-weight:800;cursor:pointer}.gallery2d-actions button:hover{background:#d4af37;color:#111}.gallery2d-thumbs{display:flex;gap:10px;overflow-x:auto;padding:8px 2px 2px}.gallery2d-thumbs button{flex:0 0 auto;width:112px;height:74px;border:3px solid transparent;border-radius:12px;padding:0;background:#f3f4f6;overflow:hidden;cursor:pointer}.gallery2d-thumbs button.active{border-color:#d4af37}.gallery2d-thumbs img{width:100%;height:100%;object-fit:cover;display:block}#gallery2dClose{position:absolute;right:14px;top:12px;z-index:2}@media(max-width:820px){.gallery2d-card{padding:12px}.gallery2d-main{grid-template-columns:1fr}.gallery2d-info h2{font-size:22px}.gallery2d-thumbs button{width:86px;height:58px}}

.info-card-split .info-detail, .info-card-split .info-body, .info-card-split .info-body p{color:#0b2f6b!important}.art-social{margin:14px 0}.art-social button,#btnOpenArtComment{border:0;border-radius:999px;background:#fee2e2;color:#991b1b;font-weight:800;padding:9px 13px;cursor:pointer}.art-comment-box{margin-top:10px;border-top:1px solid #e5e7eb;padding-top:10px}.chat-empty{color:#6b7280;font-size:13px;padding:8px 0}.chat-line{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:9px 10px;margin:8px 0;color:#0f172a}.chat-line p{margin:5px 0;line-height:1.45}.chat-line small{color:#64748b}#chat-modal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.62);display:flex;align-items:center;justify-content:center;padding:18px}#chat-modal.hidden{display:none!important}.chat-card{width:min(760px,94vw);max-height:88vh;overflow:auto;background:#fff;color:#111;border-radius:20px;padding:20px;position:relative;box-shadow:0 24px 80px rgba(0,0,0,.35)}.chat-card h2{margin:0 38px 14px 0}.chat-list{max-height:300px;overflow:auto;border:1px solid #e5e7eb;border-radius:14px;padding:10px;background:#fff}.chat-form{margin-top:14px}.chat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.chat-form input,.chat-form textarea{width:100%;border:1px solid #d1d5db;border-radius:10px;padding:10px;font-size:14px}.chat-form textarea{min-height:92px;margin-top:10px;resize:vertical}.chat-form button[type=submit]{margin-top:10px;border:0;border-radius:999px;background:#111;color:#fff;font-weight:800;padding:11px 15px;cursor:pointer}.emoji-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:8px 0}.emoji-row button{border:1px solid #e5e7eb;background:#fff;border-radius:999px;padding:7px 9px;cursor:pointer}.chat-hint{font-size:12px;color:#64748b;margin-top:8px}.tour-point-row{display:flex;gap:6px;align-items:stretch;margin-bottom:7px}.tour-point-row>button:first-child{flex:1}.tour-delete{width:34px;border:0;border-radius:10px;background:#fee2e2;color:#991b1b;font-weight:900;cursor:pointer}#tourPointList{max-height:60vh;overflow:auto}.nav-btn#btnRoomHeart{padding-left:11px;padding-right:11px}@media(max-width:720px){.chat-grid{grid-template-columns:1fr}}

.lib-folder{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:120px;background:#fff7ed}.lib-folder b{font-size:13px;color:#92400e;word-break:break-word;text-align:center}

#model-link-modal{position:fixed;inset:0;z-index:99996;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:24px}#model-link-modal.hidden{display:none}.model-link-box{position:relative;width:min(1180px,94vw);height:min(760px,88vh);background:#fff;border-radius:18px;padding:16px;box-shadow:0 30px 90px rgba(0,0,0,.45);display:flex;flex-direction:column}.model-link-box h2{margin:0 52px 12px 0;color:#0b376d}.model-link-box iframe{flex:1;width:100%;border:1px solid #dbe3ef;border-radius:12px;background:#fff}.viewer-close{position:absolute;right:14px;top:12px;border:0;background:#111;color:#fff;border-radius:999px;width:34px;height:34px;font-size:22px;font-weight:900;cursor:pointer}

/* V26_CHAT_FIX */
.chat-card{width:min(780px,92vw)!important;overflow-x:hidden!important;box-sizing:border-box}.chat-card *{box-sizing:border-box}.chat-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:8px!important}.chat-form input,.chat-form textarea{max-width:100%!important;box-sizing:border-box!important}.chat-form textarea{display:block;width:100%!important}.emoji-row{margin:8px 0 10px!important}.chat-form button[type=submit]{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}.chat-hint{padding-bottom:2px}@media(max-width:720px){.chat-grid{grid-template-columns:1fr!important}.chat-card{width:94vw!important;padding:16px!important}}


.emoji-palette{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 10px;padding:8px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.emoji-palette button{border:1px solid #e5e7eb;background:#fff;border-radius:10px;padding:7px 9px;cursor:pointer;font-size:18px}.emoji-palette.hidden{display:none!important}.is-loading{opacity:.55}.admin-tab-panel-flash{animation:tabFlash 1.2s ease}@keyframes tabFlash{0%{box-shadow:0 0 0 4px #fbbf24}100%{box-shadow:none}}

.admin-tabbar{position:sticky;top:0;z-index:9998;background:rgba(243,244,246,.96);backdrop-filter:blur(6px);display:flex;gap:8px;flex-wrap:wrap;padding:10px 0 12px;margin:-6px 0 16px;border-bottom:1px solid #e5e7eb}.admin-tabbar button{border:0;border-radius:999px;background:#fff;color:#111827;padding:10px 14px;font-weight:800;box-shadow:0 3px 14px rgba(0,0,0,.08);cursor:pointer}.admin-tabbar button.active{background:#111827;color:#fff}.admin-tab-hidden{display:none!important}.is-loading{opacity:.55;pointer-events:none}.model-link-box iframe{min-height:420px}#btnArtHeart:disabled,#btnRoomHeart:disabled{opacity:.55;cursor:wait}

.mini-editor-toolbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap;border:1px solid #dbe3ef;border-bottom:0;border-radius:12px 12px 0 0;background:#f8fafc;padding:7px 10px;margin-top:8px}
.mini-editor-toolbar button{border:1px solid #d1d5db;background:#fff;border-radius:9px;padding:6px 10px;font-weight:800;cursor:pointer}
.mini-editor-toolbar .color-mini{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#334155;background:#fff;border:1px solid #d1d5db;border-radius:9px;padding:4px 8px}
.mini-editor-toolbar input[type=color]{width:28px;height:24px;border:0;background:transparent;padding:0}
.chat-form textarea#chatContentInput{border-radius:0 0 12px 12px;margin-top:0}

.chat-editor-wrap{border:1px solid #d1d5db;border-radius:12px;overflow:visible;margin-top:10px;background:#fff;position:relative}.chat-toolbar{display:flex;gap:4px;align-items:center;flex-wrap:wrap;border-bottom:1px solid #e5e7eb;background:#f8fafc;padding:6px}.chat-toolbar button{border:1px solid #d1d5db;background:#fff;border-radius:5px;min-width:36px;height:34px;font-weight:800;cursor:pointer}.chat-editor{min-height:150px;padding:24px 28px;font-size:16px;line-height:1.6;outline:none;overflow:auto}.chat-editor:empty:before{content:attr(data-placeholder);color:#9ca3af}.editor-palette{position:absolute;left:8px;top:43px;z-index:5;background:#fff;border:1px solid #cfd8e3;border-radius:6px;box-shadow:0 12px 36px rgba(0,0,0,.18);padding:8px;display:grid;grid-template-columns:repeat(11,22px);gap:4px}.editor-palette button{width:22px;height:22px;border:1px solid #d1d5db;cursor:pointer}.emoji-palette{position:absolute;left:8px;top:43px;z-index:6;background:#fff;border:1px solid #cfd8e3;border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.18);padding:8px;display:flex;flex-wrap:wrap;gap:5px;max-width:360px}.emoji-palette button{border:1px solid #e5e7eb;background:#fff;border-radius:8px;font-size:18px;padding:5px;cursor:pointer}.chat-form textarea.hidden{display:none!important}.chat-card .modal-x{left:auto!important;right:16px!important;top:16px!important}.model-nudge-panel{position:fixed;right:18px;top:86px;z-index:9996;background:rgba(17,24,39,.92);color:#fff;border-radius:14px;padding:10px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:440px;box-shadow:0 12px 42px rgba(0,0,0,.3)}.model-nudge-panel.hidden{display:none!important}.model-nudge-panel button{border:0;border-radius:8px;background:#fff;color:#111827;font-weight:800;padding:7px 9px;cursor:pointer}.model-nudge-panel b{width:100%;font-size:13px}

/* V32 fixes */
.chat-card{position:relative!important}.chat-card .modal-x,#chatClose{left:auto!important;right:16px!important;top:16px!important;position:absolute!important}.chat-toolbar [data-format="hiliteColor"],.chat-toolbar [data-format="justifyLeft"],.chat-toolbar [data-format="justifyCenter"]{display:none!important}.chat-toolbar{gap:6px!important}.editor-palette{grid-template-columns:repeat(7,22px)!important}.model-nudge-panel{right:18px!important;top:82px!important}.model-nudge-panel:not(.hidden){display:flex!important}

.model-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.model-lib-card{background:#fff;border:1px solid #dbeafe;border-radius:14px;padding:12px}.model-lib-thumb-btn{width:100%;height:192px;border:1px solid #d1d5db;border-radius:12px;background:#f8fafc;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-bottom:8px;overflow:hidden}.model-lib-thumb-btn img{width:100%;height:100%;object-fit:contain;display:block}.model-lib-no-thumb{font-size:56px}.model-lib-preview-box{width:min(760px,94vw);max-height:90vh;overflow:auto;background:#fff;color:#111;border-radius:18px;padding:18px;position:relative;box-shadow:0 24px 80px rgba(0,0,0,.45)}.model-lib-preview-box>button{position:absolute;right:12px;top:12px;border:0;background:#111;color:#fff;border-radius:999px;width:34px;height:34px;font-size:22px;font-weight:900;cursor:pointer}.model-lib-preview-box img{width:100%;max-height:62vh;object-fit:contain;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.model-lib-preview-box h3{margin:12px 42px 8px 0}.model-lib-preview-box p{word-break:break-word;color:#475569}
#mobile-move-pad{position:fixed;left:16px;bottom:18px;z-index:60;display:none;flex-direction:column;gap:6px;align-items:center;background:rgba(0,0,0,.34);backdrop-filter:blur(8px);padding:8px;border-radius:16px}#mobile-move-pad div{display:flex;gap:6px}#mobile-move-pad button{width:48px;height:44px;border:0;border-radius:13px;background:rgba(0,0,0,.72);color:#fff;font-size:20px;font-weight:900;box-shadow:0 6px 22px rgba(0,0,0,.22)}@media(max-width:900px),(pointer:coarse){#mobile-move-pad{display:flex}#minimap-shell{bottom:128px}}

.model-nudge-panel{max-width:620px!important}.model-nudge-panel button{margin:1px}

html,body,canvas{touch-action:none;}
#app, .canvas-wrap, canvas{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}

/* V36 mobile layout fixes */
#top-nav{flex-wrap:wrap;max-width:calc(100vw - 18px);right:9px;align-content:flex-start;row-gap:7px}
#mobile-move-pad,#mobile-move-pad button{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
#mobile-move-pad button.down{background:#d4af37!important;color:#111!important}
@media(max-width:900px),(pointer:coarse){
  #top-nav{top:8px;left:8px;gap:6px;max-width:calc(100vw - 16px)}
  .nav-link,.nav-btn{padding:8px 10px;font-size:14px}
  #mobile-move-pad{left:14px;bottom:14px}
  #minimap-shell{bottom:14px!important;right:10px;width:112px;height:88px}
}


/* V37 door/mobile/info fixes */
#info{position:fixed;inset:0;z-index:10005;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden;overscroll-behavior:contain}
#info.hidden{display:none!important}
#info,#info *{touch-action:auto!important}
.info-card-split{position:relative;width:min(1180px,94vw);max-height:90vh;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:#fff;color:#111;border-radius:22px;box-shadow:0 26px 90px rgba(0,0,0,.55);padding:20px;box-sizing:border-box;display:grid;grid-template-columns:minmax(260px,55%) minmax(240px,45%);gap:18px}
.info-card-split #infoClose{position:sticky!important;top:0;left:auto!important;right:0!important;margin-left:auto;z-index:80;grid-column:1/-1;align-self:start;justify-self:end;box-shadow:0 4px 16px rgba(0,0,0,.25)}
.info-image-wrap{min-height:0}.info-image-wrap img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:14px;display:block;margin:auto}.info-detail{min-width:0}.info-body{max-height:none;overflow:visible}
@media(max-width:760px){
  #info{align-items:flex-start;padding:8px}
  .info-card-split{width:calc(100vw - 16px);max-height:calc(100vh - 16px);grid-template-columns:1fr!important;padding:12px;gap:10px;border-radius:16px}
  .info-image-wrap img{max-height:48vh}
  .info-card-split #infoClose{top:0}
}
body.soft-fullscreen-3d{overflow:hidden!important}
body.soft-fullscreen-3d #top-nav{z-index:70}
body.soft-fullscreen-3d canvas{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important}
@media(max-width:900px),(pointer:coarse){
  #mobile-move-pad{left:12px!important;bottom:12px!important;z-index:75!important}
  #minimap-shell{bottom:12px!important;right:10px!important}
  #top-nav{flex-wrap:wrap!important;row-gap:6px!important;max-width:calc(100vw - 10px)!important}
}


/* V38 door-wall balance, popup close and fullscreen stability */
#info #infoClose{position:fixed!important;top:max(12px,env(safe-area-inset-top))!important;right:max(12px,env(safe-area-inset-right))!important;left:auto!important;z-index:10150!important;margin:0!important;box-shadow:0 6px 24px rgba(0,0,0,.34)!important}
#info .info-card-split{padding-top:54px!important;scrollbar-gutter:stable;overscroll-behavior:contain}
@media(max-width:760px){#info #infoClose{top:max(10px,env(safe-area-inset-top))!important;right:max(10px,env(safe-area-inset-right))!important}.info-card-split{padding-top:52px!important}.info-card-split .info-image-wrap{min-height:180px!important}.info-card-split .info-detail{overflow:visible!important}}
body.soft-fullscreen-3d #top-nav{position:fixed!important;top:8px!important;left:8px!important}
body.soft-fullscreen-3d #minimap-shell,body.soft-fullscreen-3d #mobile-move-pad{position:fixed!important}
#mobile-move-pad button.down{background:#d4af37!important;color:#111!important;transform:translateY(1px)}


/* V39: mobile 2D close, stable soft fullscreen and door-wall layout support */
#gallery2dClose{
  position:fixed!important;
  top:max(10px,env(safe-area-inset-top))!important;
  right:max(10px,env(safe-area-inset-right))!important;
  left:auto!important;
  z-index:10180!important;
  width:42px!important;
  height:42px!important;
  border-radius:999px!important;
  background:#111!important;
  color:#fff!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-shadow:0 8px 28px rgba(0,0,0,.35)!important;
}
#gallery2d-modal{overflow:auto!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important}
#gallery2d-modal .gallery2d-card{overflow:auto!important;max-height:calc(100vh - 18px)!important;padding-top:58px!important;overscroll-behavior:contain!important}
@media(max-width:820px){
  #gallery2d-modal{align-items:flex-start!important;padding:8px!important}
  #gallery2d-modal .gallery2d-card{width:calc(100vw - 16px)!important;height:auto!important;min-height:calc(100vh - 16px)!important;border-radius:16px!important}
  #gallery2d-modal .gallery2d-main{grid-template-columns:1fr!important;display:grid!important}
  #gallery2d-modal .gallery2d-image-wrap{min-height:40vh!important}
  #gallery2d-modal .gallery2d-info{overflow:visible!important}
}
body.modal-open-3d{overflow:hidden!important}
body.soft-fullscreen-3d{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;overflow:hidden!important;touch-action:none!important;background:#000!important}
body.soft-fullscreen-3d #scene,
body.soft-fullscreen-3d #canvas-wrap{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;z-index:1!important}
body.soft-fullscreen-3d canvas{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;z-index:1!important;touch-action:none!important}
body.soft-fullscreen-3d #top-nav{position:fixed!important;top:max(6px,env(safe-area-inset-top))!important;left:6px!important;right:6px!important;z-index:120!important}
body.soft-fullscreen-3d #mobile-move-pad{position:fixed!important;z-index:130!important}
body.soft-fullscreen-3d #minimap-shell{position:fixed!important;z-index:125!important}
body.soft-fullscreen-3d #runtime-error{z-index:200!important}
#mobile-move-pad button, #top-nav button, #top-nav a{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;touch-action:none!important}



/* V40: fix mobile 2D controls, YouTube wide, room list scroll, and fullscreen */
html.room-list-html, html.room-list-html body, body.room-list-page{
  touch-action:auto!important;
  overflow:auto!important;
  position:static!important;
  height:auto!important;
  min-height:100%!important;
  -webkit-overflow-scrolling:touch!important;
}
html.soft-fullscreen-3d-root, html.soft-fullscreen-3d-root body{overflow:hidden!important;background:#000!important}
#gallery2d-modal{z-index:10120!important;overflow:auto!important;align-items:flex-start!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important}
#gallery2d-modal .gallery2d-card{position:relative!important;overflow:auto!important;padding-bottom:88px!important}
#gallery2dClose{position:fixed!important;right:max(10px,env(safe-area-inset-right))!important;top:max(10px,env(safe-area-inset-top))!important;z-index:10280!important}
@media(max-width:820px),(pointer:coarse){
  #gallery2d-modal{padding:8px!important}
  #gallery2d-modal .gallery2d-card{width:calc(100vw - 16px)!important;height:auto!important;min-height:calc(100vh - 16px)!important;max-height:none!important;display:block!important;padding:58px 10px 104px!important}
  #gallery2d-modal .gallery2d-main{display:block!important}
  #gallery2d-modal .gallery2d-image-wrap{height:46vh!important;min-height:260px!important;margin-bottom:10px!important}
  #gallery2d-modal .gallery2d-info{overflow:visible!important;padding-bottom:10px!important}
  #gallery2d-modal .gallery2d-actions{position:fixed!important;left:8px!important;right:8px!important;bottom:max(8px,env(safe-area-inset-bottom))!important;z-index:10260!important;background:rgba(255,255,255,.98)!important;border:1px solid #e5e7eb!important;border-radius:18px!important;padding:8px!important;box-shadow:0 8px 28px rgba(0,0,0,.25)!important;display:flex!important;justify-content:center!important;gap:6px!important}
  #gallery2d-modal .gallery2d-actions button{padding:10px 11px!important;font-size:13px!important;min-width:0!important}
  #gallery2d-modal .gallery2d-thumbs{padding-bottom:70px!important}
}
#video-modal{z-index:10130!important;overscroll-behavior:contain!important}
#video-modal .video-card{padding-top:58px!important}
#videoClose{position:absolute!important;right:12px!important;top:10px!important;z-index:10250!important}
#videoFullscreen.video-full-btn,.video-full-btn{display:block!important;position:absolute!important;right:62px!important;top:10px!important;z-index:10245!important;white-space:nowrap!important}
#video-modal.video-wide{padding:0!important;background:#000!important}
#video-modal.video-wide .video-card{width:100vw!important;height:100vh!important;max-width:100vw!important;max-height:100vh!important;border-radius:0!important;padding:58px 8px 8px!important}
@media(max-width:820px),(pointer:coarse){
  #video-modal{align-items:flex-start!important;padding:8px!important}
  #video-modal .video-card{width:calc(100vw - 16px)!important;height:calc(100vh - 16px)!important;border-radius:14px!important}
  #videoFullscreen.video-full-btn,.video-full-btn{right:58px!important;top:10px!important;font-size:12px!important;padding:8px 10px!important}
}
body.soft-fullscreen-3d #top-nav{z-index:300!important}
body.soft-fullscreen-3d #mobile-move-pad{z-index:310!important}
body.soft-fullscreen-3d #minimap-shell{z-index:305!important}



/* V41 mobile 2D reading, model-link close, admin-only hidden, rich note display */
.admin-only-ui{display:initial}.rich-note-content iframe,.rich-note-content video,#infoNote iframe,#infoNote video,#gallery2dNote iframe,#gallery2dNote video{max-width:100%;width:100%;min-height:220px;border:1px solid #dbe3ef;border-radius:10px;background:#000}.rich-note-content img,#infoNote img,#gallery2dNote img{max-width:100%;height:auto;border-radius:10px}
#gallery2d-modal,#gallery2d-modal *{touch-action:auto!important}
#gallery2d-modal{overflow-y:auto!important;align-items:flex-start!important;-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important}
#gallery2d-modal .gallery2d-card{overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;max-height:none!important;height:auto!important;min-height:calc(100vh - 16px)!important;padding-bottom:112px!important}
#gallery2d-modal .gallery2d-info{overflow:visible!important;max-height:none!important;touch-action:auto!important}.gallery2d-info p{word-break:break-word}
@media(max-width:820px),(pointer:coarse){
  #gallery2d-modal .gallery2d-card{display:block!important;width:calc(100vw - 16px)!important;min-height:calc(100vh - 16px)!important;padding:58px 10px 118px!important}
  #gallery2d-modal .gallery2d-main{display:block!important;min-height:0!important}.gallery2d-image-wrap{height:42vh!important;min-height:220px!important}.gallery2d-info{padding:8px!important}
  #gallery2d-modal .gallery2d-actions{position:fixed!important;left:8px!important;right:8px!important;bottom:max(8px,env(safe-area-inset-bottom))!important;z-index:10300!important;background:rgba(255,255,255,.98)!important;border:1px solid #e5e7eb!important;border-radius:18px!important;padding:8px!important;box-shadow:0 8px 28px rgba(0,0,0,.25)!important}
  #gallery2d-modal .gallery2d-thumbs{padding-bottom:78px!important}
}
#model-link-modal{align-items:flex-start!important;overflow:auto!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;padding:8px!important}
#model-link-modal .model-link-box{width:calc(100vw - 16px)!important;height:calc(100vh - 16px)!important;max-height:none!important;padding:58px 10px 10px!important;border-radius:16px!important;overflow:auto!important}.model-link-box h2{margin-top:0!important}.model-link-box iframe{min-height:60vh!important}.model-link-box .viewer-close,#modelLinkClose{position:fixed!important;right:max(10px,env(safe-area-inset-right))!important;top:max(10px,env(safe-area-inset-top))!important;z-index:10400!important;width:42px!important;height:42px!important}
body.soft-fullscreen-3d,html.soft-fullscreen-3d-root{width:100vw!important;height:100vh!important;overflow:hidden!important;background:#000!important}body.soft-fullscreen-3d canvas{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;z-index:1!important}



/* V42 permission / mobile scroll / compact note editor / folder actions */
html.room-list-html, html.room-list-html body, body.room-list-page{touch-action:auto!important;overflow:auto!important;height:auto!important;min-height:100%!important;position:static!important;-webkit-overflow-scrolling:touch!important}
#gallery2d-modal{height:100dvh!important;overflow-y:auto!important;align-items:flex-start!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important}
#gallery2d-modal *{touch-action:auto!important}
#gallery2d-modal .gallery2d-card{height:auto!important;min-height:auto!important;max-height:none!important;overflow:visible!important;margin:8px auto 96px!important;padding-bottom:128px!important}
#gallery2d-modal .gallery2d-info{overflow:visible!important;max-height:none!important;padding-bottom:120px!important}
#gallery2d-modal .gallery2d-main{overflow:visible!important}
@media(max-width:820px),(pointer:coarse){#gallery2d-modal .gallery2d-card{display:block!important;width:calc(100vw - 16px)!important;padding:58px 10px 136px!important}.gallery2d-image-wrap{height:40vh!important;min-height:210px!important}.gallery2d-actions{position:fixed!important;left:8px!important;right:8px!important;bottom:max(8px,env(safe-area-inset-bottom))!important;z-index:10350!important}.gallery2d-thumbs{padding-bottom:88px!important}}
#model-link-modal{height:100dvh!important;overflow-y:auto!important;align-items:flex-start!important;padding:8px!important;touch-action:auto!important}
#model-link-modal .model-link-box{width:calc(100vw - 16px)!important;height:auto!important;min-height:calc(100dvh - 16px)!important;max-height:none!important;overflow:visible!important;padding:60px 10px 14px!important;margin:0 auto!important}.model-link-box .viewer-close,#modelLinkClose{position:fixed!important;top:max(10px,env(safe-area-inset-top))!important;right:max(10px,env(safe-area-inset-right))!important;z-index:10450!important}.model-link-box iframe{height:calc(100dvh - 100px)!important;min-height:520px!important}
.note-rich-wrap.compact-note-editor{border:1px solid #d1d5db;border-radius:10px;background:#fff;overflow:hidden}.note-rich-toolbar.compact{display:flex;gap:6px;align-items:center;flex-wrap:wrap;background:#f8fafc;border-bottom:1px solid #e5e7eb;padding:7px}.note-rich-toolbar.compact button,.note-color-btn{height:34px;min-width:38px;border:1px solid #d1d5db;background:#fff;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;cursor:pointer;padding:0 9px;position:relative}.note-color-btn input[type=color]{position:absolute;inset:0;opacity:0;cursor:pointer}.note-rich-editor{min-height:120px;padding:12px;color:#111;background:#fff;line-height:1.55}.note-rich-editor:empty:before{content:'Nhập ghi chú tác phẩm...';color:#9ca3af}.note-rich-editor img{max-width:100%;height:auto;border-radius:10px}.note-rich-editor iframe,.note-rich-editor video{max-width:100%;width:100%;min-height:220px;border:1px solid #dbe3ef;border-radius:10px;background:#000}.note-emoji-palette{position:absolute;z-index:99999;background:#fff;border:1px solid #d1d5db;border-radius:10px;padding:8px;box-shadow:0 14px 45px rgba(0,0,0,.18);display:flex;gap:4px;flex-wrap:wrap;max-width:260px}.note-emoji-palette.hidden{display:none!important}.note-emoji-palette button{border:0;background:#f3f4f6;border-radius:7px;width:30px;height:30px;font-size:18px;cursor:pointer}.fm-file-big{font-size:58px}.fm-node3d.folder .fm-actions3d{display:none}.fm-node3d.folder:hover .fm-actions3d{display:flex}



/* V43: trình nhập ghi chú gọn kiểu my_editor */
.note-rich-wrap.compact-note-editor{
  border:1px solid #cfd7e3!important;
  border-radius:10px!important;
  background:#fff!important;
  overflow:visible!important;
  margin-top:6px!important;
}
.note-rich-toolbar.compact{
  min-height:44px!important;
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  flex-wrap:wrap!important;
  background:#f8fafc!important;
  border-bottom:1px solid #e5e7eb!important;
  padding:7px 8px!important;
  position:relative!important;
}
.note-rich-toolbar.compact button,
.note-rich-toolbar.compact .note-tool-btn,
.note-color-btn{
  height:34px!important;
  min-width:42px!important;
  padding:0 10px!important;
  border:1px solid #cfd7e3!important;
  background:#fff!important;
  border-radius:6px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:3px!important;
  color:#111827!important;
  font:800 15px/1 Arial,Helvetica,sans-serif!important;
  cursor:pointer!important;
  box-sizing:border-box!important;
  vertical-align:middle!important;
  position:relative!important;
}
.note-color-btn{overflow:hidden!important}
.note-color-btn .note-a{color:#dc2626!important;font-weight:900!important;font-size:17px!important;line-height:1!important;display:inline-block!important;transform:none!important;margin:0!important}
.note-caret{font-size:11px!important;color:#111!important;line-height:1!important}
.note-color-btn input[type=color]{position:absolute!important;inset:0!important;opacity:0!important;cursor:pointer!important;width:100%!important;height:100%!important}
.note-rich-editor{
  min-height:150px!important;
  padding:14px!important;
  color:#111!important;
  background:#fff!important;
  line-height:1.6!important;
  outline:none!important;
  overflow:auto!important;
  border-radius:0 0 10px 10px!important;
}
.note-rich-editor:empty:before{content:'Nhập ghi chú tác phẩm...';color:#9ca3af;font-weight:600}
.note-media-menu{position:relative;display:inline-flex}
.note-media-dropdown{
  position:absolute;left:0;top:39px;z-index:100200;
  min-width:190px;background:#fff;border:1px solid #cfd7e3;border-radius:8px;
  box-shadow:0 14px 40px rgba(0,0,0,.18);padding:6px;display:grid;gap:3px
}
.note-media-dropdown.hidden{display:none!important}
.note-media-dropdown button{
  width:100%!important;justify-content:flex-start!important;border:0!important;background:#fff!important;
  padding:9px 10px!important;height:auto!important;font-weight:600!important;border-radius:6px!important
}
.note-media-dropdown button:hover{background:#eef2ff!important;color:#1d4ed8!important}
.note-emoji-palette{z-index:100210!important;margin-top:3px}
.note-insert-modal{position:fixed;inset:0;z-index:100300;background:rgba(0,0,0,.55);display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto}
.note-insert-modal.hidden{display:none!important}
.note-insert-card{width:min(940px,94vw);background:#fff;border-radius:6px;box-shadow:0 24px 80px rgba(0,0,0,.35);overflow:hidden;margin-top:20px}
.note-insert-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid #e5e7eb;background:#f8fafc;font-size:18px}
.note-insert-head button{border:0;background:transparent;font-size:22px;font-weight:900;cursor:pointer}
.note-insert-body{padding:18px 24px;display:grid;gap:14px}
.note-insert-body label{font-weight:800;color:#374151;margin-bottom:6px;display:block}
.note-insert-urlrow{display:flex;gap:8px}
.note-insert-urlrow input,.note-insert-grid input,.note-insert-grid select{height:42px;border:1px solid #cfd7e3;border-radius:5px;padding:0 11px;font-size:15px;box-sizing:border-box;width:100%}
.note-insert-urlrow button{border:0;background:#6b7280;color:#fff;border-radius:5px;padding:0 18px;font-weight:800;cursor:pointer}
.note-insert-grid{display:grid;grid-template-columns:minmax(220px,1fr) 130px 130px;gap:14px}
.note-insert-foot{padding:14px 18px;border-top:1px solid #e5e7eb;text-align:right;background:#f8fafc}
.note-insert-foot button{border:0;background:#0d6efd;color:#fff;border-radius:6px;padding:11px 22px;font-weight:900;cursor:pointer}
.note-rich-editor figure{margin:12px 0}.note-rich-editor figcaption{font-size:13px;color:#64748b;margin-top:6px;text-align:center}
@media(max-width:700px){.note-insert-grid{grid-template-columns:1fr}.note-insert-urlrow{display:grid}.note-insert-card{margin-top:6px}}



/* V44: ưu tiên quản lý file trên popup chèn, sửa emoji/A, thêm pinch zoom */
.fm-modal3d{z-index:100600!important}
.note-insert-modal{z-index:100300!important}
.note-emoji-palette{
  background:#ffffff!important;
  border:1px solid #d1d5db!important;
  border-radius:12px!important;
  padding:8px!important;
  box-shadow:0 14px 45px rgba(15,23,42,.18)!important;
  display:grid!important;
  grid-template-columns:repeat(8,34px)!important;
  gap:6px!important;
  max-width:none!important;
  width:max-content!important;
}
.note-emoji-palette.hidden{display:none!important}
.note-emoji-palette button{
  width:34px!important;height:34px!important;min-width:34px!important;
  border:1px solid #eef2f7!important;background:#f8fafc!important;color:#111!important;
  border-radius:9px!important;font-size:18px!important;padding:0!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  box-shadow:none!important
}
.note-emoji-palette button:hover{background:#e0f2fe!important;border-color:#93c5fd!important;transform:translateY(-1px)}
.note-color-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important}
.note-color-btn .note-a{display:inline-flex!important;align-items:center!important;justify-content:center!important;height:100%!important;line-height:1!important;margin-top:0!important;vertical-align:middle!important}
.note-rich-toolbar.compact .note-tool-btn sup,.note-rich-toolbar.compact .note-tool-btn sub{font-size:10px;line-height:0}
.note-supsub{font-family:Arial,Helvetica,sans-serif!important;min-width:44px!important}
[data-info-row][style*="none"]{display:none!important}
@media(max-width:700px){.note-emoji-palette{grid-template-columns:repeat(6,34px)!important}}



/* V45: material ajax, grouped format menu, mobile zoom buttons */
.note-format-menu{position:relative;display:inline-flex}
.note-format-dropdown{
  position:absolute;left:0;top:39px;z-index:100220;
  min-width:188px;background:#fff;border:1px solid #cfd7e3;border-radius:8px;
  box-shadow:0 14px 40px rgba(0,0,0,.18);padding:6px;display:grid;gap:3px
}
.note-format-dropdown.hidden{display:none!important}
.note-format-dropdown button{
  width:100%!important;height:auto!important;justify-content:flex-start!important;border:0!important;background:#fff!important;
  padding:9px 10px!important;font-weight:700!important;border-radius:6px!important;color:#111827!important
}
.note-format-dropdown button:hover{background:#eef2ff!important;color:#1d4ed8!important}
.note-format-dropdown hr{border:0;border-top:1px solid #e5e7eb;width:100%;margin:4px 0}
#mobile-move-pad .pad-top,#mobile-move-pad .pad-bottom{display:flex;gap:6px}
#mobile-move-pad button[data-zoom]{font-size:16px!important;min-width:48px}



/* V46: sửa chọn vật liệu đúng mục và chống giật khi chạm 2 ngón trên canvas */
#canvas-wrap, #scene, canvas { touch-action:none!important; -ms-touch-action:none!important; overscroll-behavior:none!important; }
.fm-modal3d{z-index:100600!important}


/* V47 fixes */
.stat-only{cursor:default!important;pointer-events:none!important}
.note-format-btn{font-weight:900!important}
.note-color-btn,.note-rich-toolbar.compact button{align-items:center!important;vertical-align:middle!important}
.note-color-btn .note-a{line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;transform:translateY(0)!important}
.note-media-dropdown,.note-format-dropdown,.note-emoji-palette{z-index:100500!important}
.room-card-actions span{display:inline-flex;align-items:center;gap:3px}

/* V48 material picker hard fix + mobile zoom */
.texture-preview .hint{display:inline-block;margin-left:8px;color:#047857;font-weight:700;font-size:12px}


/* V49 editor button labels */
.note-format-btn{min-width:54px!important;font-weight:900!important}
.note-media-btn{min-width:54px!important}


/* V50: ổn định chọn vật liệu, dropdown ghi chú và zoom ảnh */
body.viewer-not-started #top-nav,
body.viewer-not-started #minimap-shell,
body.viewer-not-started #mobile-move-pad,
body.viewer-not-started #mobile-tip,
body.viewer-not-started #door-hint{display:none!important}
.note-rich-wrap.compact-note-editor{position:relative!important;overflow:visible!important}.note-rich-toolbar.compact{position:relative!important}.note-emoji-palette{position:absolute!important;top:42px!important;left:8px;z-index:100600!important;display:grid!important;grid-template-columns:repeat(8,34px)!important;background:#fff!important}.note-emoji-palette.hidden{display:none!important}.note-color-btn,.note-rich-toolbar.compact .note-tool-btn{height:36px!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0 11px!important}.note-color-btn .note-a{position:static!important;top:auto!important;transform:none!important;line-height:1!important;height:auto!important;margin:0!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}.note-format-dropdown,.note-media-dropdown{position:absolute!important;top:42px!important;z-index:100600!important}.zoom-pane{position:relative!important;overflow:hidden!important;touch-action:none!important}.zoom-pane img[data-zoom-img]{transition:transform .08s linear;will-change:transform;max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}.image-zoom-controls{position:absolute;right:10px;bottom:10px;z-index:20;display:flex;gap:6px;background:rgba(0,0,0,.45);border-radius:999px;padding:5px;backdrop-filter:blur(8px)}.image-zoom-controls button{border:0;border-radius:999px;background:#fff;color:#111;font-weight:900;min-width:34px;height:32px;padding:0 10px;cursor:pointer}.image-zoom-controls button:hover{background:#d4af37}.info-image-wrap.zoom-pane,.gallery2d-image-wrap.zoom-pane{cursor:default}@media(max-width:820px){.image-zoom-controls{left:10px;right:auto;bottom:10px}.image-zoom-controls button{height:36px;min-width:38px}.note-emoji-palette{grid-template-columns:repeat(6,34px)!important}}



/* V51: vật liệu chọn đúng, chèn ảnh trả URL, gom màu chữ vào nút B */
.note-color-btn{display:none!important}
.note-format-dropdown{min-width:210px!important}
.note-format-dropdown .fmt-color-row{
  display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;
  padding:9px 10px!important;border-radius:6px!important;font-weight:800!important;color:#111827!important;background:#fff!important;cursor:pointer!important
}
.note-format-dropdown .fmt-color-row:hover{background:#eef2ff!important;color:#1d4ed8!important}
.note-format-dropdown .fmt-color-row input[type=color]{width:38px!important;height:28px!important;padding:0!important;border:1px solid #cfd7e3!important;border-radius:5px!important;background:#fff!important;cursor:pointer!important}
.fm-modal3d{z-index:100900!important}
.note-insert-modal{z-index:100300!important}
.note-tool-btn,.note-format-btn,.note-media-btn{height:36px!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important}


/* V52 model size buttons */
.model-nudge-panel button[data-scale]{background:#164e63!important;color:#fff!important}

#minimap-shell .minimap-outer-wall{background:rgba(255,255,255,.58)!important;border-color:rgba(255,255,255,.9)!important;border-radius:2px!important}


/* V54 minimap/zoom/model library */
body.minimap-hidden #minimap-shell{display:none!important}
.image-zoom-controls{position:absolute!important;left:50%!important;bottom:10px!important;top:auto!important;right:auto!important;transform:translateX(-50%)!important;z-index:8;background:rgba(17,24,39,.82)!important;border-radius:999px!important;padding:6px!important;display:flex!important;gap:6px!important;opacity:0;transition:opacity .18s;pointer-events:none}
.zoom-pane:hover .image-zoom-controls{opacity:1;pointer-events:auto}
.image-zoom-controls button{border:0;border-radius:999px;background:#fff;color:#111;font-weight:900;padding:7px 10px;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.25)}
@media(max-width:820px),(pointer:coarse){.image-zoom-controls{display:none!important}}
.model-lib-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important}
.model-lib-card{min-width:0!important}
.model-lib-thumb-btn{width:100%!important;height:180px!important}
.model-lib-thumb-btn img{width:100%!important;height:100%!important;object-fit:contain!important;background:#fff!important}
@media(max-width:760px){.model-lib-grid{grid-template-columns:1fr!important}.model-lib-thumb-btn{height:150px!important}}


/* V55: sửa zoom ảnh + mini map canvas */
#minimap-canvas{position:absolute;inset:0;z-index:1;pointer-events:none}
#minimap-player{z-index:5!important}
#minimap-shell .minimap-title,#minimap-shell .minimap-help{z-index:6!important;position:absolute}
.info-image-wrap.zoom-pane,.gallery2d-image-wrap.zoom-pane{touch-action:none!important;overflow:hidden!important;position:relative!important}
.zoom-pane img[data-zoom-img]{transform-origin:center center!important;max-width:100%!important;max-height:100%!important;width:auto!important;height:auto!important;object-fit:contain!important;user-select:none!important;-webkit-user-drag:none!important;touch-action:none!important}
.image-reset-corner{position:fixed;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));z-index:10060;border:0;border-radius:999px;background:#111;color:#fff;font-weight:900;padding:9px 13px;box-shadow:0 8px 24px rgba(0,0,0,.28);cursor:pointer}
#gallery2d-modal .image-reset-corner{position:absolute;left:14px;top:12px;z-index:12}
#info .image-reset-corner{position:fixed!important}
.image-zoom-controls{bottom:12px!important;left:50%!important;right:auto!important;transform:translateX(-50%)!important}
@media(max-width:820px),(pointer:coarse){.image-zoom-controls{display:none!important}.image-reset-corner{display:block!important}}


/* V56: mini map fullscreen + zoom ảnh nhiều cấp */
#minimap-shell{min-width:150px!important;min-height:96px!important;overflow:hidden!important}
#minimap-shell .minimap-title,#minimap-shell .minimap-help{display:none!important}
body.soft-fullscreen-3d #minimap-shell, html:fullscreen #minimap-shell, :fullscreen #minimap-shell{
  display:block!important; min-width:150px!important; min-height:96px!important; background:rgba(20,27,36,.78)!important;
}
#minimap-canvas{display:block!important;opacity:1!important;visibility:visible!important}
.zoom-pane img[data-zoom-img]{
  transition:none!important;
  transform-origin:center center!important;
  cursor:zoom-in;
}
.zoom-pane img[data-zoom-img].is-zoomed{cursor:grab!important}
.image-zoom-controls{opacity:0;pointer-events:none}
.zoom-pane:hover .image-zoom-controls{opacity:1!important;pointer-events:auto!important}
.image-reset-corner{z-index:10080!important}
@media(max-width:820px),(pointer:coarse){
  .image-zoom-controls{display:none!important}
  .image-reset-corner{display:block!important}
}


/* V57: sửa nút zoom/reset ảnh và mini map khi fullscreen */
body.soft-fullscreen-3d #minimap-shell #minimap-canvas,
html:fullscreen #minimap-shell #minimap-canvas,
:fullscreen #minimap-shell #minimap-canvas{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  z-index:1!important;
  display:block!important;
  pointer-events:none!important;
  opacity:1!important;
  visibility:visible!important;
}
body.soft-fullscreen-3d #minimap-shell,
html:fullscreen #minimap-shell,
:fullscreen #minimap-shell{
  contain:layout paint!important;
  overflow:hidden!important;
}
.zoom-pane{touch-action:none!important;overscroll-behavior:contain!important}
.zoom-pane img[data-zoom-img]{
  touch-action:none!important;
  user-select:none!important;
  -webkit-user-select:none!important;
  -webkit-user-drag:none!important;
  transform-origin:center center!important;
}
.image-zoom-controls{z-index:100!important;pointer-events:auto!important}
.image-zoom-controls button,.image-reset-corner{pointer-events:auto!important;touch-action:manipulation!important}


/* V58: ảnh dài có thể cuộn, zoom nhiều cấp và minimap kín góc */
#info .info-card-split{
  overflow:hidden!important;
}
#info .info-image-wrap.zoom-pane{
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
  max-height:calc(88vh - 40px)!important;
  scrollbar-gutter:stable!important;
  -webkit-overflow-scrolling:touch!important;
}
#info .info-image-wrap.zoom-pane img[data-zoom-img]{
  max-height:none!important;
  height:auto!important;
  width:100%!important;
  max-width:100%!important;
  object-fit:contain!important;
  margin:auto!important;
}
#gallery2d-modal .gallery2d-image-wrap.zoom-pane{
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
  -webkit-overflow-scrolling:touch!important;
}
#gallery2d-modal .gallery2d-image-wrap.zoom-pane img[data-zoom-img]{
  max-height:none!important;
  height:auto!important;
  width:auto!important;
  max-width:100%!important;
  object-fit:contain!important;
  margin:auto!important;
}
.image-zoom-controls{
  position:absolute!important;
  left:50%!important;
  bottom:12px!important;
  transform:translateX(-50%)!important;
  z-index:101!important;
  pointer-events:auto!important;
}
.image-zoom-controls button{
  pointer-events:auto!important;
  touch-action:manipulation!important;
  user-select:none!important;
}
#minimap-shell #minimap-canvas{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
}
body.soft-fullscreen-3d #minimap-shell #minimap-canvas,
html:fullscreen #minimap-shell #minimap-canvas,
:fullscreen #minimap-shell #minimap-canvas{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
}
@media(max-width:820px),(pointer:coarse){
  #info .info-card-split{overflow:auto!important}
  #info .info-image-wrap.zoom-pane{max-height:60vh!important}
  #info .info-image-wrap.zoom-pane img[data-zoom-img]{width:100%!important;max-width:100%!important}
  #gallery2d-modal .gallery2d-image-wrap.zoom-pane img[data-zoom-img]{width:100%!important;max-width:100%!important}
}


/* V59: chọn vật liệu đúng mặt/tường và preview ngay đúng ô */
.face-box[data-material-picker] .texture-preview[data-ajax-preview],
.face-box[data-material-picker] .texture-preview{margin-top:10px;align-items:flex-start;flex-wrap:wrap}
.face-box[data-material-picker] .texture-preview img{width:88px;height:64px;object-fit:cover;border:2px solid #22c55e;border-radius:8px;background:#fff}
.face-box[data-material-picker] .texture-preview .hint{display:block;width:100%;margin-top:4px;color:#047857;font-weight:700}


/* V60: preview vật liệu tường giữa / ô thông tin sau khi chọn AJAX */
.texture-preview[data-ajax-preview]{
  border:1px solid #86efac;
  background:#f0fdf4;
  border-radius:10px;
  padding:8px;
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:8px;
}
.texture-preview[data-ajax-preview] img{
  width:76px;
  height:52px;
  object-fit:cover;
  border-radius:6px;
  border:1px solid #d1d5db;
}
.texture-preview[data-ajax-preview] .hint{
  color:#047857;
  font-weight:700;
}


/* V61: thanh chỉnh đậm/nhạt cho chất liệu tường giữa và tường thông tin */
[data-range-label="centerWallTextureStrength"],
[data-range-label="infoWallTextureStrength"]{font-weight:800;color:#0f766e}

/* V62 clip border picker */
input[name^='tuong_thong_tin_'][name$='_video_border']{height:42px;min-width:90px;padding:4px;border-radius:10px}

/* V63: tăng độ chắc chắn khi bấm clip */
#video-modal{touch-action:auto!important}

/* V65 custom wall management */
.custom-wall-upload{box-shadow:0 10px 28px rgba(37,99,235,.08)}
[data-custom-wall-material-box] .texture-preview img{width:78px;height:56px;object-fit:cover;border-radius:8px}
[data-admin-tab="wall"] .dropzone{min-height:130px}


/* V66: bảng di chuyển tường tùy biến */
#custom-wall-nudge-panel{
  z-index:10050;
  max-width:min(760px, calc(100vw - 30px));
}
#custom-wall-nudge-panel b{
  display:block;
  width:100%;
  margin-bottom:6px;
}

/* V67: user thường không thấy tường/model không link như đối tượng bấm */
#custom-wall-nudge-panel.hidden,#model-nudge-panel.hidden{display:none!important}

/* V68: tường tùy biến xoay góc dùng va chạm xoay đúng hình, không chặn một vùng vuông quá lớn */

/* V69 admin edit tools */
.model-nudge-panel{padding-right:42px!important}
.model-nudge-panel .panel-close{
  position:absolute;right:9px;top:8px;width:28px;height:28px;border-radius:50%;
  border:0;background:#fff;color:#111;font-weight:900;cursor:pointer
}
.model-nudge-panel button.danger{background:#dc2626!important;color:#fff!important}
#btnAdminPassThrough.active{background:#0ea5e9!important;color:#fff!important}
.admin-context-menu-3d{
  position:fixed;z-index:10090;min-width:260px;max-width:330px;
  background:rgba(17,24,39,.96);color:#fff;border-radius:14px;padding:10px;
  box-shadow:0 18px 45px rgba(0,0,0,.35);font-family:Arial,sans-serif
}
.admin-context-menu-3d.hidden{display:none!important}
.admin-context-menu-3d b{display:block;margin:2px 4px 8px;font-size:13px;color:#e5e7eb}
.admin-context-menu-3d button{
  width:100%;display:block;text-align:left;border:0;border-radius:9px;padding:9px 10px;
  background:#fff;color:#111;font-weight:800;margin:5px 0;cursor:pointer
}
.admin-context-menu-3d button:hover{background:#fde68a}
.admin-context-menu-3d .ctx-subtitle{font-size:12px;color:#cbd5e1;margin:10px 4px 4px}
.admin-context-menu-3d .ctx-empty{padding:10px;color:#cbd5e1;font-size:13px}

/* V70: hold-to-repeat + xuyên tường state + rotation input */
.model-nudge-panel button.holding{transform:scale(.96);filter:brightness(1.1)}
.model-nudge-panel .pass-btn.on{background:#22c55e!important;color:#fff!important}
.model-nudge-panel .pass-btn.off{background:#374151!important;color:#d1d5db!important}
.model-nudge-panel .rot-input{display:inline-flex;align-items:center;gap:6px;background:#eef2ff;color:#111827;border-radius:8px;padding:6px 8px;font-weight:800;margin:2px}
.model-nudge-panel .rot-input input{width:76px;border:1px solid #cbd5e1;border-radius:6px;padding:6px}
.light-admin-card .light-list{display:grid;gap:8px;margin-top:12px}
.light-admin-card .light-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #e5e7eb;border-radius:12px;padding:10px;background:#fff}
.light-admin-card .light-row span{color:#64748b;font-size:13px;flex:1}
@media(max-width:760px){.light-admin-card .light-row{display:block}.light-admin-card .light-row form{margin-top:8px}}

/* V71: nút xuyên tường rõ trạng thái; không còn icon bóng đèn giả trên trần */
.model-nudge-panel .pass-btn.on{box-shadow:0 0 0 2px rgba(34,197,94,.45) inset}
.model-nudge-panel .pass-btn.off{opacity:.78}

/* V72: model GLB/OBJ xuyen_tuong OFF dùng raycast theo mesh để chặn đi xuyên tường model */

/* V73: chặn cả khối thấp/bệ/bàn trong model GLB khi Xuyên tường OFF */

/* V74: tắt đèn trần triệt hơn, ẩn light/mesh đèn trong GLB khi center light OFF; chặn vật thấp bằng multi-ray */

/* V75: xóa thẳng đèn/vệt sáng trần trong index; bỏ root blocker để vào được bên trong model kiến trúc */

/* V76: xóa hẳn mesh bóng đèn/vòng tròn giả trên trần trong main.js */

/* V77: công tắc đèn phòng */
#btnRoomLightSwitch.active{background:#fbbf24!important;color:#111!important;box-shadow:0 0 0 2px rgba(251,191,36,.35) inset}
#btnRoomLightSwitch:not(.active){background:#374151!important;color:#e5e7eb!important}

/* V78 */
.outer-wall-visible-box .wall-visible-row{justify-content:flex-start;gap:18px;flex-wrap:wrap}

/* V80: panel chỉnh kích thước phòng tổng */
.room-size-panel-v80{right:18px;top:96px;max-width:520px}
.room-size-panel-v80 .room-size-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}
.room-size-panel-v80 label{display:inline-flex;align-items:center;gap:6px;background:#eef2ff;color:#111827;border-radius:8px;padding:6px 8px;font-weight:800}
.room-size-panel-v80 input{width:86px;border:1px solid #cbd5e1;border-radius:6px;padding:6px}
.room-size-panel-v80 .room-size-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}

/* V81: phòng tổng bấm giữ +,- và bảng chỉnh model/tường chỉ mở khi click */
.room-size-panel-v80 button.holding{filter:brightness(1.12); box-shadow:0 0 0 2px rgba(59,130,246,.35) inset}

/* V82: toast, minimap đúng độ dày, quản lý đối tượng, modal thêm tranh tường */
.gallery-toast-v82{position:fixed;right:20px;top:82px;background:#0f172a;color:#fff;padding:12px 16px;border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.22);z-index:99999;opacity:0;transform:translateY(-8px);pointer-events:none;transition:.22s;font-weight:800}
.gallery-toast-v82.show{opacity:1;transform:translateY(0)}
.gallery-toast-v82.error{background:#b91c1c}
.object-manager-modal-v82,.wall-art-modal-v82{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99990;display:flex;align-items:center;justify-content:center;padding:20px}
.object-manager-modal-v82.hidden,.wall-art-modal-v82.hidden{display:none}
.object-manager-box,.wall-art-box{background:#fff;color:#0f172a;border-radius:18px;padding:22px;max-width:760px;width:min(92vw,760px);max-height:84vh;overflow:auto;position:relative;box-shadow:0 20px 55px rgba(0,0,0,.35)}
.object-manager-item{display:grid;grid-template-columns:1fr auto auto auto auto;gap:8px;align-items:center;border:1px solid #e5e7eb;border-radius:12px;padding:10px;margin:8px 0;background:#f8fafc}
.object-manager-item span{color:#64748b}
.object-manager-item button,.wall-art-actions button{border:0;border-radius:10px;padding:8px 11px;font-weight:800;background:#111827;color:#fff;cursor:pointer}
.wall-art-box label{display:grid;gap:6px;margin:10px 0;font-weight:800}
.wall-art-box input,.wall-art-box select,.wall-art-box textarea{border:1px solid #cbd5e1;border-radius:10px;padding:9px;font-size:15px}
.wall-art-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.wall-art-actions .danger,.object-manager-item .danger{background:#dc2626}
.model-nudge-panel{max-width:min(760px,92vw)}
.model-nudge-panel .panel-close{position:absolute;right:12px;top:10px;border-radius:50%;width:32px;height:32px;padding:0}
@media(max-width:760px){.object-manager-item{grid-template-columns:1fr 1fr}.object-manager-item b{grid-column:1/-1}}

/* V83: box tác phẩm mới vào tường giống form quản lý */
.wall-art-box-large{max-width:980px!important;width:min(94vw,980px)!important}
.wall-art-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.wall-art-file-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.wall-art-checks{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px}
.wall-art-inline-config{display:grid;grid-template-columns:1fr 1fr auto auto auto;gap:8px;align-items:center;width:100%;border-top:1px solid rgba(255,255,255,.18);padding-top:8px;margin-top:8px}
.wall-art-inline-config b{grid-column:1/-1;color:#fff}
.wall-art-inline-config label{display:inline-flex;align-items:center;gap:6px;background:#eef2ff;color:#111827;border-radius:8px;padding:6px 8px;font-weight:800}
.wall-art-inline-config input{width:76px;border:1px solid #cbd5e1;border-radius:6px;padding:6px}
@media(max-width:800px){.wall-art-grid,.wall-art-file-row{grid-template-columns:1fr}.wall-art-inline-config{grid-template-columns:1fr 1fr}.wall-art-inline-config b{grid-column:1/-1}}

/* V84: nút admin trong popup thông tin tác phẩm */
.art-social .admin-art-action{margin-left:8px;border:0;border-radius:12px;padding:8px 11px;font-weight:800;background:#111827;color:#fff;cursor:pointer}
.art-social .admin-art-action.danger{background:#dc2626}
.art-social .admin-art-action.hidden{display:none!important}

/* V85: bố cục tranh tường tùy biến đồng bộ admin/user + quản lý danh sách tranh trong tab tường */
.art-social .admin-art-action{margin-left:8px;border:0;border-radius:12px;padding:8px 11px;font-weight:800;background:#111827;color:#fff;cursor:pointer}
.art-social .admin-art-action.danger{background:#dc2626}
.art-social .admin-art-action.hidden{display:none!important}
.custom-wall-face-art-list{margin-top:10px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;padding:10px;display:grid;gap:8px;max-height:260px;overflow:auto}
.wall-art-mini-row{display:grid;grid-template-columns:54px 1fr;gap:8px;align-items:center;border-bottom:1px dashed #e5e7eb;padding-bottom:7px}
.wall-art-mini-row:last-child{border-bottom:0;padding-bottom:0}
.wall-art-mini-row .thumb{width:52px;height:40px;border-radius:8px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #cbd5e1;color:#94a3b8;font-weight:900}
.wall-art-mini-row img{width:100%;height:100%;object-fit:cover}
.wall-art-mini-row small{display:block;color:#64748b;margin-top:2px}

/* V86: sửa hover tranh không làm phóng/lệch khung, box sửa tranh */
.wall-art-box-large .wall-art-grid input[type=range]{width:100%}

/* V87: quản lý tranh trong tab tường không bị bung ảnh, thêm khoảng cách tranh */
.custom-wall-face-art-list{max-height:360px!important;overflow:auto!important;align-content:start!important}
.custom-wall-face-art-list .wall-art-mini-row{display:grid!important;grid-template-columns:58px minmax(0,1fr)!important;gap:10px!important;align-items:center!important;min-height:48px!important;background:#f8fafc!important;border:1px solid #e5e7eb!important;border-radius:10px!important;padding:8px!important;margin:6px 0!important}
.custom-wall-face-art-list .wall-art-mini-row .thumb{width:52px!important;height:40px!important;max-width:52px!important;max-height:40px!important;overflow:hidden!important;display:flex!important;align-items:center!important;justify-content:center!important;flex:none!important}
.custom-wall-face-art-list .wall-art-mini-row .thumb img,
.custom-wall-face-art-list .wall-art-mini-row img{width:52px!important;height:40px!important;max-width:52px!important;max-height:40px!important;object-fit:cover!important;display:block!important}
.custom-wall-face-art-list .wall-art-mini-row span:nth-child(2){min-width:0!important;overflow:hidden!important}
.custom-wall-face-art-list .wall-art-mini-row b{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.wall-art-inline-config{grid-template-columns:repeat(3,minmax(0,1fr)) auto auto auto auto!important}
.wall-art-inline-config label input[data-wall-art-spacing-panel]{width:72px!important}
@media(max-width:900px){.wall-art-inline-config{grid-template-columns:1fr 1fr!important}}

/* V88: quản lý tác phẩm trên 4 mặt tường tùy biến giống mục quản lý tranh */
.custom-wall-full-list{margin-top:10px}
.custom-wall-full-list .wall-list{max-height:720px;overflow:auto;background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:10px}
.custom-wall-full-list .art-card{max-width:100%;margin-bottom:12px}
.custom-wall-full-list .thumb{width:96px!important;height:72px!important;max-width:96px!important;max-height:72px!important;object-fit:cover!important;display:block!important}
.custom-wall-full-list .art-form{grid-template-columns:1fr 1fr}
@media(max-width:900px){.custom-wall-full-list .art-form{grid-template-columns:1fr}}

/* V89: nút đổi thứ tự tranh trong popup */
.art-social .admin-art-action#btnAdminMoveArtPrev,
.art-social .admin-art-action#btnAdminMoveArtNext{min-width:36px;padding:8px 12px;font-size:18px;line-height:1;background:#0f172a}
.art-social .admin-art-action#btnAdminMoveArtPrev:hover,
.art-social .admin-art-action#btnAdminMoveArtNext:hover{background:#fbbf24;color:#111}

/* V91: đưa cụm Khoảng cách xuống hàng dưới để ô độ cao hàng 1/2 không bị che */
.wall-art-inline-config{grid-template-columns:repeat(2,minmax(170px,1fr)) repeat(4,auto)!important;align-items:stretch!important}
.wall-art-inline-config label{min-width:0!important;justify-content:space-between!important}
.wall-art-inline-config label input{min-width:88px!important;max-width:120px!important;width:100%!important}
.wall-art-inline-config label:has(input[data-wall-art-spacing-panel]),
.wall-art-inline-config .wall-art-spacing-row-v91{grid-column:1/-1!important;display:grid!important;grid-template-columns:minmax(120px,auto) minmax(100px,180px)!important;justify-content:start!important;align-items:center!important;gap:10px!important;margin-top:2px!important}
.wall-art-inline-config label:has(input[data-wall-art-spacing-panel]) input,
.wall-art-inline-config .wall-art-spacing-row-v91 input{width:120px!important;max-width:120px!important}
@media(max-width:900px){
  .wall-art-inline-config{grid-template-columns:1fr 1fr!important}
  .wall-art-inline-config label:has(input[data-wall-art-spacing-panel]),
  .wall-art-inline-config .wall-art-spacing-row-v91{grid-column:1/-1!important}
}
@media(max-width:560px){.wall-art-inline-config{grid-template-columns:1fr!important}.wall-art-inline-config label,.wall-art-inline-config b{grid-column:1!important}}

/* V93: checkbox tường trong suốt ngay tại bảng cấu hình tường đang chọn */
#custom-wall-nudge-panel .wall-transparent-toggle-v93{display:inline-flex;align-items:center;gap:8px;background:#f8fafc;color:#111827;border:1px solid #cbd5e1;border-radius:9px;padding:7px 10px;font-weight:800;cursor:pointer;min-height:34px}
#custom-wall-nudge-panel .wall-transparent-toggle-v93 input{width:18px;height:18px;margin:0;accent-color:#2563eb;flex:0 0 auto}
#custom-wall-nudge-panel .wall-transparent-toggle-v93:has(input:checked){background:#dbeafe;border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.16) inset}
#custom-wall-nudge-panel .wall-transparent-toggle-v93 span{white-space:normal;line-height:1.2}



/* V94: bật/tắt animation lặp cho model 3D trong bảng cấu hình trên index */
.model-nudge-panel .animation-btn.on{background:#16a34a!important;color:#fff!important;box-shadow:0 0 0 2px rgba(34,197,94,.42) inset}
.model-nudge-panel .animation-btn.off{background:#7c2d12!important;color:#fff!important}
.model-nudge-panel .animation-btn.unavailable,.model-nudge-panel .animation-btn:disabled{background:#374151!important;color:#9ca3af!important;opacity:.72;cursor:not-allowed!important}

/* V96: chọn background từng mặt tường và popup chọn chất liệu ngay trên index */
[data-custom-wall-face-box] [data-face-background-controls]{margin-top:8px;padding:10px;border:1px dashed #cbd5e1;border-radius:10px;background:#fff}
[data-custom-wall-face-box] [data-custom-wall-face-bg-preview]{margin-top:10px}
[data-custom-wall-face-box] [data-custom-wall-face-bg-preview] img{width:112px;height:78px;object-fit:cover;border-radius:8px;border:1px solid #cbd5e1;background:#fff}
#custom-wall-nudge-panel button[data-open-wall-material]{background:#0f766e!important;color:#fff!important}
.wall-material-modal-v96{position:fixed;inset:0;z-index:100120;background:rgba(2,6,23,.64);display:flex;align-items:center;justify-content:center;padding:18px}
.wall-material-modal-v96.hidden{display:none!important}
.wall-material-box-v96{position:relative;width:min(880px,96vw);max-height:90vh;overflow:auto;background:#fff;color:#0f172a;border-radius:18px;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.38)}
.wall-material-box-v96 h3{margin:0 48px 16px 0;font-size:21px}
.wall-material-close-v96{position:absolute;right:14px;top:12px;width:36px;height:36px;border:0;border-radius:999px;background:#111827;color:#fff;font-size:24px;line-height:1;cursor:pointer}
.wall-material-preview-v96{min-height:150px;border:1px solid #dbe3ee;border-radius:14px;background:#f8fafc;display:flex;align-items:center;justify-content:center;gap:12px;padding:12px;overflow:hidden}
.wall-material-preview-v96 img{max-width:100%;width:260px;height:140px;object-fit:cover;border-radius:10px;border:1px solid #cbd5e1;background:#fff}
.wall-material-preview-v96 span{font-size:13px;color:#475569;overflow-wrap:anywhere}
.wall-material-settings-v96{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
.wall-material-settings-v96 label{display:flex;flex-direction:column;gap:7px;font-weight:800;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px}
.wall-material-settings-v96 select,.wall-material-settings-v96 input{width:100%}
.wall-material-settings-v96 output{font-size:12px;color:#2563eb;font-weight:900}
.wall-material-upload-v96{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin-top:14px}
.wall-material-upload-v96 input[type=file]{border:1px solid #cbd5e1;border-radius:10px;padding:9px;background:#fff}
.wall-material-upload-v96 button,.wall-material-actions-v96 button{border:0;border-radius:10px;padding:10px 14px;font-weight:900;background:#0f172a;color:#fff;cursor:pointer}
.wall-material-actions-v96{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.wall-material-actions-v96 button:first-child{background:#0f766e}
.wall-material-actions-v96 button:last-child{background:#2563eb}
.wall-material-status-v96{min-height:22px;margin-top:10px;font-weight:800;color:#047857}
.wall-material-status-v96.error,.wall-material-loading-v96.error{color:#b91c1c}
.wall-material-library-v96{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:12px;padding:12px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc;max-height:360px;overflow:auto}
.wall-material-library-v96.hidden{display:none!important}
.wall-material-library-v96 button{border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:7px;cursor:pointer;text-align:left;overflow:hidden}
.wall-material-library-v96 button:hover{border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.12)}
.wall-material-library-v96 img{width:100%;height:88px;object-fit:cover;border-radius:7px;background:#e5e7eb;display:block}
.wall-material-library-v96 span{display:block;margin-top:6px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wall-material-loading-v96{grid-column:1/-1;padding:14px;text-align:center;color:#475569;font-weight:800}
@media(max-width:720px){.wall-material-settings-v96{grid-template-columns:1fr}.wall-material-upload-v96{grid-template-columns:1fr}.wall-material-preview-v96{flex-direction:column}.wall-material-preview-v96 img{width:100%}}


/* V98: quản lý điểm đèn ở admin và trực tiếp trong index */
.light-admin-card .light-list{display:grid;gap:12px;margin-top:16px}
.light-admin-card .light-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff}
.light-row-fields-v98{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:9px;align-items:end}
.light-row-fields-v98 label{margin:0;font-size:12px}.light-row-fields-v98 input{margin-top:5px;padding:8px}
.light-visible-v98{display:flex!important;align-items:center;gap:6px;padding-bottom:9px;white-space:nowrap}.light-visible-v98 input{width:auto!important;margin:0!important}
.light-row-actions-v98{display:flex;gap:7px;align-items:center;white-space:nowrap}
.point-light-panel-v98{position:fixed;right:18px;top:92px;z-index:1500;width:min(390px,calc(100vw - 28px));max-height:calc(100vh - 112px);overflow:auto;background:rgba(255,255,255,.98);color:#111;border:1px solid rgba(0,0,0,.12);border-radius:16px;padding:16px;box-shadow:0 18px 60px rgba(0,0,0,.28);display:grid;grid-template-columns:1fr 1fr;gap:9px}
.point-light-panel-v98.hidden{display:none!important}.point-light-panel-v98>b,.point-light-panel-v98 .point-light-coords-v98,.point-light-panel-v98>button{grid-column:1/-1}.point-light-panel-v98 label{font-size:12px;font-weight:700}.point-light-panel-v98 input{width:100%;margin-top:5px;padding:8px;border:1px solid #d1d5db;border-radius:8px}.point-light-panel-v98 .panel-close{position:absolute;right:8px;top:8px;width:30px;height:30px;border-radius:50%;padding:0}.point-light-coords-v98{font-size:12px;color:#64748b;padding-right:28px}.point-light-buttons-v98{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.point-light-panel-v98 button{border:0;border-radius:9px;padding:9px 10px;background:#111;color:#fff;font-weight:700;cursor:pointer}.point-light-panel-v98 button.save{background:#1677ff}.point-light-panel-v98 button.danger{background:#dc2626}
.point-light-enabled-v99{grid-column:1/-1!important;display:flex!important;align-items:center;gap:8px;background:#f8fafc;border:1px solid #dbe4ee;border-radius:10px;padding:9px 10px}.point-light-enabled-v99 input{width:auto!important;margin:0!important}.point-light-enabled-v99 span{font-weight:800}.light-enabled-create-v99{display:flex;align-items:end}.light-enabled-create-v99 label{display:flex;align-items:center;gap:7px;padding:10px 0;margin:0}.light-enabled-create-v99 input[type=checkbox]{width:auto;margin:0}
@media(max-width:1100px){.light-row-fields-v98{grid-template-columns:repeat(4,minmax(100px,1fr))}.light-admin-card .light-row{grid-template-columns:1fr}.light-row-actions-v98{justify-content:flex-end}}
@media(max-width:680px){.light-row-fields-v98{grid-template-columns:repeat(2,minmax(0,1fr))}.point-light-panel-v98{right:8px;top:72px}}

/* V100 - Quản lý nhân vật ảo và lời thoại */
.virtual-character-config-v100{grid-column:1/-1;background:linear-gradient(135deg,#eef2ff,#f8fafc);border:1px solid #c7d2fe;border-radius:16px;padding:14px;margin-top:8px}.virtual-character-config-v100 h4,.character-audio-manager-v100 h4{margin:0 0 10px}.character-config-grid-v100{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.character-switch-v100{display:flex!important;gap:9px;align-items:flex-start;background:#fff;border:1px solid #dbeafe;border-radius:12px;padding:10px}.character-switch-v100 input{width:auto!important;margin-top:3px}.character-switch-v100 span{display:grid;gap:3px}.character-switch-v100 small{color:#64748b;font-weight:400;line-height:1.35}.character-audio-manager-v100{margin-top:12px;padding:14px;border:1px solid #d1fae5;border-radius:16px;background:#f0fdf4}.character-audio-add-form-v100,.character-audio-item-v100{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end}.character-audio-add-form-v100{padding:12px;background:#fff;border:1px dashed #86efac;border-radius:12px}.character-audio-list-v100{display:grid;gap:10px;margin-top:12px}.character-audio-item-v100{padding:12px;background:#fff;border:1px solid #dcfce7;border-radius:12px}.character-audio-item-v100 audio{width:100%;min-width:180px;align-self:center}.character-audio-item-v100 .row-actions{align-self:end}
#virtual-character-panel-v100{position:fixed;z-index:145;right:16px;bottom:16px;width:min(430px,calc(100vw - 32px));max-height:calc(100vh - 90px);overflow:auto;background:rgba(255,255,255,.97);color:#111;border:1px solid rgba(15,23,42,.18);border-radius:20px;padding:16px;box-shadow:0 24px 80px rgba(0,0,0,.35);backdrop-filter:blur(14px)}#virtual-character-panel-v100 h3{margin:0 38px 12px 0}#virtual-character-panel-v100 .vc-grid-v100{display:grid;grid-template-columns:1fr 1fr;gap:10px}#virtual-character-panel-v100 label{display:grid;gap:5px;font-size:12px;font-weight:700}#virtual-character-panel-v100 select,#virtual-character-panel-v100 input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:9px;padding:8px;background:#fff}#virtual-character-panel-v100 .vc-actions-v100{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}#virtual-character-panel-v100 button{border:0;border-radius:999px;padding:9px 12px;font-weight:800;cursor:pointer;background:#e2e8f0;color:#111}#virtual-character-panel-v100 button.primary{background:#2563eb;color:#fff}#virtual-character-panel-v100 button.danger{background:#fee2e2;color:#b91c1c}#virtual-character-panel-v100 .vc-status-v100{margin-top:10px;border-radius:10px;background:#f1f5f9;padding:9px;font-size:12px;line-height:1.45}#btnRoleplayCharacterV100.active{background:#22c55e;color:#052e16}.vc-character-buttons-v100{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.vc-character-buttons-v100 button{background:#dcfce7!important;color:#166534!important}
@media(max-width:650px){#virtual-character-panel-v100{right:8px;bottom:8px;width:calc(100vw - 16px);padding:13px}#virtual-character-panel-v100 .vc-grid-v100{grid-template-columns:1fr}.character-audio-add-form-v100,.character-audio-item-v100{grid-template-columns:1fr}}

/* V101 - quét clip nhân vật và trạng thái tự dò rõ ràng */
.character-scan-tools-v101{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed #cbd5e1}
.character-scan-tools-v101 .hint{flex:1;min-width:260px;margin:0}
.character-scan-result-v101{margin-top:10px;padding:10px 12px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a5f;line-height:1.55;font-size:13px}
.character-scan-result-v101 b{color:#0f172a}
#virtual-character-panel-v100 .vc-status-v100 small{color:#64748b;font-weight:400}

/* V102 - bảng nói bằng văn bản và tải audio trực tiếp cho nhân vật */
#virtual-character-panel-v100{width:min(540px,calc(100vw - 32px))}
#virtual-character-panel-v100 textarea{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:10px;padding:9px;background:#fff;resize:vertical;min-height:74px;font:inherit}
#virtual-character-panel-v100 h4{margin:0 0 9px;font-size:14px}
#virtual-character-panel-v100 .vc-text-speech-v102,#virtual-character-panel-v100 .vc-audio-upload-v102{margin-top:12px;padding:12px;border:1px solid #dbeafe;border-radius:14px;background:#f8fafc}
#virtual-character-panel-v100 .vc-audio-upload-v102{border-color:#bbf7d0;background:#f0fdf4}
#virtual-character-panel-v100 .vc-help-v102{margin-top:8px;font-size:11px;line-height:1.45;color:#64748b}
#virtual-character-panel-v100 input[type=file]{padding:6px}
#virtual-character-panel-v100 button:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:650px){#virtual-character-panel-v100{width:calc(100vw - 16px)}}

/* V104: trạng thái nút Ngồi/Đứng của nhân vật */
#virtual-character-panel-v100 .vc-actions-v100 button.active{background:#16a34a;color:#fff;box-shadow:0 0 0 2px rgba(22,163,74,.18)}

/* V110: sửa tác phẩm trực tiếp trên index - thư viện ảnh + bộ gõ ghi chú */
.art-note-label-v110{display:block;margin-top:12px}
.art-note-label-v110>.note-rich-wrap{margin-top:6px}
.art-note-editor-v110{position:relative;z-index:4}
.art-note-editor-v110 .note-rich-editor{min-height:150px;max-height:300px;overflow:auto}
.art-note-editor-v110 .note-format-menu{position:relative}
.art-note-editor-v110 .note-format-dropdown{left:0;min-width:210px}
.art-note-editor-v110 .note-media-dropdown{right:8px;left:auto;min-width:210px}
.art-note-editor-v110 .note-emoji-palette{top:44px!important;left:92px!important}
.art-image-picker-v110{display:grid;grid-template-columns:180px minmax(0,1fr);gap:12px;margin-top:14px;padding:12px;border:1px solid #dbe3ef;border-radius:14px;background:#f8fafc}
.art-image-preview-v110{grid-row:1/4;min-height:150px;border:1px dashed #94a3b8;border-radius:12px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:8px;overflow:hidden;color:#64748b;font-size:12px;text-align:center}
.art-image-preview-v110 img{max-width:100%;max-height:142px;object-fit:contain;display:block;border-radius:6px}
.art-image-preview-v110 span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.art-image-picker-v110 .wall-art-file-row{margin:0}
.art-image-picker-actions-v110{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.art-image-picker-actions-v110 button{border:0;border-radius:9px;background:#0f6fea;color:#fff;padding:9px 12px;font-weight:800;cursor:pointer}
.art-image-picker-actions-v110 button+button{background:#475569}
.art-library-grid-v110{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:9px;max-height:310px;overflow:auto;padding:10px;border:1px solid #cbd5e1;border-radius:12px;background:#fff}
.art-library-grid-v110.hidden{display:none!important}
.art-library-grid-v110 button{min-width:0;border:1px solid #dbe3ef;border-radius:10px;background:#fff;padding:6px;cursor:pointer;color:#0f172a;text-align:left}
.art-library-grid-v110 button:hover{border-color:#0f6fea;box-shadow:0 0 0 2px rgba(15,111,234,.12)}
.art-library-grid-v110 img{width:100%;height:92px;object-fit:contain;background:#f8fafc;border-radius:7px;display:block}
.art-library-grid-v110 span{display:block;margin-top:5px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.art-library-status-v110{grid-column:1/-1;padding:14px;text-align:center;color:#475569}
.art-library-status-v110.error{color:#b91c1c}
@media(max-width:760px){.art-image-picker-v110{grid-template-columns:1fr}.art-image-preview-v110{grid-row:auto;min-height:180px}.art-library-grid-v110{grid-column:1}.art-note-editor-v110 .note-emoji-palette{left:8px!important}}

/* V113: bảng cấu hình tường chia tab, không che khuất nội dung */
#custom-wall-nudge-panel{
  width:min(690px,calc(100vw - 24px))!important;
  max-width:min(690px,calc(100vw - 24px))!important;
  max-height:calc(100vh - 104px)!important;
  overflow:hidden!important;
  align-items:stretch!important;
  padding:12px 44px 12px 12px!important;
}
#custom-wall-nudge-panel:not(.hidden){display:block!important}
#custom-wall-nudge-panel .wall-panel-summary-v113{
  display:block!important;width:100%!important;box-sizing:border-box;
  padding:2px 4px 9px;margin:0!important;font-size:13px;line-height:1.35;
  white-space:normal;overflow-wrap:anywhere;border-bottom:1px solid rgba(255,255,255,.22)
}
#custom-wall-nudge-panel .wall-panel-tabs-v113{
  display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0 8px
}
#custom-wall-nudge-panel .wall-panel-tabs-v113 button{
  margin:0!important;padding:10px 12px!important;background:#334155!important;color:#e2e8f0!important
}
#custom-wall-nudge-panel .wall-panel-tabs-v113 button.active{
  background:#fbbf24!important;color:#111827!important;box-shadow:0 0 0 2px rgba(251,191,36,.28) inset
}
#custom-wall-nudge-panel .wall-panel-tab-v113{
  display:none;max-height:calc(100vh - 212px);overflow:auto;padding:2px 4px 8px 0;
  scrollbar-width:thin;overscroll-behavior:contain
}
#custom-wall-nudge-panel .wall-panel-tab-v113.active{display:block}
#custom-wall-nudge-panel .wall-panel-button-grid-v113{
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px
}
#custom-wall-nudge-panel .wall-panel-button-grid-v113 button,
#custom-wall-nudge-panel .wall-panel-actions-v113 button,
#custom-wall-nudge-panel .wall-panel-rotation-v113 button{margin:0!important;min-height:38px}
#custom-wall-nudge-panel .wall-panel-actions-v113{
  display:flex;flex-wrap:wrap;gap:7px;margin-top:9px
}
#custom-wall-nudge-panel .wall-panel-toggle-grid-v113{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;margin-top:9px;align-items:stretch
}
#custom-wall-nudge-panel .wall-panel-toggle-grid-v113 .wall-transparent-toggle-v93{margin:0!important}
#custom-wall-nudge-panel .wall-panel-rotation-v113{
  display:grid;grid-template-columns:minmax(190px,1fr) auto auto;gap:7px;margin-top:9px;align-items:stretch
}
#custom-wall-nudge-panel .wall-panel-rotation-v113 .rot-input{margin:0!important;justify-content:space-between}
#custom-wall-nudge-panel .wall-art-inline-config{
  display:grid!important;width:100%!important;box-sizing:border-box!important;
  grid-template-columns:minmax(190px,1fr) minmax(190px,1fr) auto auto!important;
  gap:8px!important;padding:10px!important;border:1px solid rgba(255,255,255,.22)!important;
  border-radius:12px!important;background:rgba(255,255,255,.06)!important;align-items:stretch!important
}
#custom-wall-nudge-panel .wall-art-inline-config>b{
  grid-column:1/-1!important;margin:0 0 3px!important;padding-bottom:8px!important;
  border-bottom:1px solid rgba(255,255,255,.18)!important
}
#custom-wall-nudge-panel .wall-art-inline-config label{
  display:flex!important;align-items:center!important;justify-content:space-between!important;
  gap:9px!important;min-width:0!important;margin:0!important;padding:9px!important;
  border-radius:9px!important;background:#eef2ff!important;color:#111827!important;font-weight:800!important
}
#custom-wall-nudge-panel .wall-art-inline-config label input[type=number]{
  width:96px!important;min-width:78px!important;max-width:110px!important;box-sizing:border-box!important
}
#custom-wall-nudge-panel .wall-art-inline-config label:has([data-wall-art-spacing-panel]){
  grid-column:1/3!important;display:flex!important;grid-template-columns:none!important;margin:0!important
}
#custom-wall-nudge-panel .wall-art-inline-config label:has([data-wall-art-depth-panel]){grid-column:1/3!important}
#custom-wall-nudge-panel .wall-art-inline-config .wall-transparent-toggle-v93{
  grid-column:1/-1!important;background:#f8fafc!important;color:#111827!important
}
#custom-wall-nudge-panel .wall-art-inline-config .wall-art-apply-v113{
  grid-column:1/-1!important;background:#16a34a!important;color:#fff!important;min-height:42px!important
}
@media(max-width:700px){
  #custom-wall-nudge-panel{right:8px!important;top:70px!important;width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;max-height:calc(100vh - 78px)!important}
  #custom-wall-nudge-panel .wall-panel-tab-v113{max-height:calc(100vh - 186px)}
  #custom-wall-nudge-panel .wall-panel-button-grid-v113{grid-template-columns:repeat(3,minmax(0,1fr))}
  #custom-wall-nudge-panel .wall-panel-rotation-v113{grid-template-columns:1fr 1fr}
  #custom-wall-nudge-panel .wall-panel-rotation-v113 .rot-input{grid-column:1/-1}
  #custom-wall-nudge-panel .wall-art-inline-config{grid-template-columns:1fr 1fr!important}
  #custom-wall-nudge-panel .wall-art-inline-config label,
  #custom-wall-nudge-panel .wall-art-inline-config label:has([data-wall-art-spacing-panel]),
  #custom-wall-nudge-panel .wall-art-inline-config label:has([data-wall-art-depth-panel]){grid-column:1/-1!important}
}

/* V114: popup xem tác phẩm lớn hơn và zoom trực tiếp từ độ phân giải gốc */
#info{
  padding:8px!important;
  align-items:center!important;
  justify-content:center!important;
}
#info .info-card-split{
  width:min(1680px,98vw)!important;
  height:min(95vh,1040px)!important;
  max-height:95vh!important;
  padding:14px!important;
  padding-top:52px!important;
  grid-template-columns:minmax(0,74%) minmax(300px,26%)!important;
  gap:16px!important;
  overflow:hidden!important;
}
#info .info-image-wrap.zoom-pane{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  background:#111!important;
  border-radius:14px!important;
}
#info .info-image-wrap.zoom-pane img[data-zoom-img]{
  width:auto!important;
  height:auto!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
  image-rendering:auto!important;
  backface-visibility:hidden!important;
  will-change:auto!important;
}
#info .info-detail{
  min-height:0!important;
  height:100%!important;
  overflow:auto!important;
  padding:6px 8px 18px 4px!important;
}
#info .info-body{overflow:visible!important}
#info .image-zoom-controls{position:absolute!important}
@media(max-width:980px){
  #info .info-card-split{
    width:calc(100vw - 12px)!important;
    height:calc(100vh - 12px)!important;
    max-height:calc(100vh - 12px)!important;
    grid-template-columns:1fr!important;
    grid-template-rows:minmax(52vh,1fr) auto!important;
    overflow:auto!important;
  }
  #info .info-image-wrap.zoom-pane{height:56vh!important;min-height:340px!important}
  #info .info-detail{height:auto!important;overflow:visible!important}
}
@media(max-width:620px){
  #info .info-card-split{padding:10px!important;padding-top:48px!important;border-radius:14px!important}
  #info .info-image-wrap.zoom-pane{height:53vh!important;min-height:260px!important}
}

/* V115: kéo ảnh zoom tới đủ bốn góc và chế độ đổi vị trí tranh */
#info .info-image-wrap.zoom-pane,
#gallery2d-modal .gallery2d-image-wrap.zoom-pane{
  cursor:default;
  touch-action:none!important;
  user-select:none!important;
}
#info .info-image-wrap.zoom-pane img[data-zoom-img].is-zoomed,
#gallery2d-modal .gallery2d-image-wrap.zoom-pane img[data-zoom-img].is-zoomed{
  cursor:grab!important;
}
#info .info-image-wrap.zoom-pane img[data-zoom-img].is-zoomed:active,
#gallery2d-modal .gallery2d-image-wrap.zoom-pane img[data-zoom-img].is-zoomed:active{
  cursor:grabbing!important;
}
#btnSwapArtworkV115.active{
  background:#f59e0b!important;
  color:#111!important;
  box-shadow:0 0 0 3px rgba(245,158,11,.32),0 8px 24px rgba(0,0,0,.28)!important;
}
@media(max-width:980px){
  #btnSwapArtworkV115{max-width:170px;white-space:normal;line-height:1.1}
}

/* V116: kéo ảnh zoom tự do, viền khung tùy chỉnh và hộp sửa ổn định */
#info .info-image-wrap.zoom-pane img[data-zoom-img],
#gallery2d-modal .gallery2d-image-wrap.zoom-pane img[data-zoom-img]{
  transition:none!important;
  animation:none!important;
  pointer-events:auto!important;
}
#info .info-image-wrap.zoom-pane,
#gallery2d-modal .gallery2d-image-wrap.zoom-pane{
  overscroll-behavior:contain!important;
  position:relative!important;
}
.frame-border-settings-v116{
  display:grid;
  grid-template-columns:minmax(260px,1.6fr) minmax(170px,.8fr);
  gap:10px 14px;
  align-items:end;
  margin:12px 0;
  padding:12px;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#f8fafc;
}
.frame-border-settings-v116 .frame-border-default-toggle-v116{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:9px!important;
  margin:0!important;
}
.frame-border-settings-v116 input[type=checkbox]{width:18px;height:18px;flex:0 0 auto}
.frame-border-settings-v116 input[type=number]:disabled,
#artAdminFrameBorderV116:disabled{opacity:.52;background:#e5e7eb;cursor:not-allowed}
.wall-frame-border-v116{grid-column:1/-1;grid-template-columns:minmax(280px,2fr) minmax(150px,.7fr) auto}
.wall-frame-border-v116 button{min-height:42px}
#art-admin-modal-v82{z-index:10040!important;pointer-events:auto!important}
#art-admin-modal-v82 .wall-art-box{pointer-events:auto!important;isolation:isolate}
#art-admin-modal-v82 input,#art-admin-modal-v82 textarea,#art-admin-modal-v82 [contenteditable=true]{user-select:text!important}
@media(max-width:760px){
  .frame-border-settings-v116,.wall-frame-border-v116{grid-template-columns:1fr}
}


/* V117: menu gọn, trạng thái phòng và ánh sáng tranh */
#top-nav{overflow:visible!important}
.nav-menu-wrap{position:relative;display:inline-flex;align-items:center}
.nav-popover{position:absolute;top:calc(100% + 9px);right:0;z-index:10080;width:min(310px,calc(100vw - 20px));max-height:min(72vh,620px);overflow:auto;padding:9px;background:rgba(15,23,42,.97);border:1px solid rgba(255,255,255,.16);border-radius:16px;box-shadow:0 20px 65px rgba(0,0,0,.48);backdrop-filter:blur(14px);display:flex;flex-direction:column;gap:6px;color:#fff}
.nav-popover.hidden{display:none!important}
.nav-popover-title{padding:5px 8px 8px;color:#cbd5e1;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(255,255,255,.11);margin-bottom:2px}
.nav-menu-item{box-sizing:border-box;width:100%;display:flex;align-items:center;gap:8px;justify-content:flex-start;border:0;border-radius:11px;background:rgba(255,255,255,.075);color:#fff;text-decoration:none;padding:10px 12px;font-size:14px;line-height:1.25;font-weight:800;cursor:pointer;text-align:left;white-space:normal}
.nav-menu-item:hover,.nav-menu-item.active{background:#d4af37;color:#111}
.nav-menu-item:disabled{opacity:.55;cursor:wait}
.nav-menu-item.room-is-hidden{background:#7f1d1d;color:#fff}
.nav-admin-popover{right:0}
.room-hidden-badge{display:inline-flex;margin:-2px 0 10px;padding:5px 9px;border-radius:999px;background:#fee2e2;color:#991b1b;font-size:12px;font-weight:900}
@media(max-width:760px){
  .nav-popover{position:fixed;top:58px;left:8px;right:8px;width:auto;max-height:calc(100vh - 76px)}
  #top-nav{overflow:visible!important}
}

/* V118: nút ẩn/hiện phòng ở danh sách, menu thoát, ảnh đại diện model và trạng thái khóa. */
.room-card-actions .room-visibility-list-btn-v118{border:0;border-radius:999px;padding:8px 12px;font-weight:800;cursor:pointer;background:#e8f5e9;color:#166534}
.room-card-actions .room-visibility-list-btn-v118.room-is-hidden{background:#fee2e2;color:#991b1b}
.room-card-actions .room-visibility-list-btn-v118:disabled{opacity:.55;cursor:wait}
.nav-menu-exit-v118{margin-top:8px!important;border-top:1px solid rgba(255,255,255,.16)!important;padding-top:12px!important;color:#ffd6d6!important}
.model-visibility-btn-v118.is-off{background:#6b7280!important;color:#fff!important}
.model-lock-btn-v118.is-locked{background:#b91c1c!important;color:#fff!important}
.object-manager-model-v118{display:grid!important;grid-template-columns:76px minmax(160px,1fr) minmax(260px,auto)!important;align-items:center!important;gap:12px!important}
.object-manager-thumb-v118{width:72px;height:58px;object-fit:cover;border-radius:10px;border:1px solid #d1d5db;background:#111;display:block}
.object-manager-thumb-v118.empty{display:flex;align-items:center;justify-content:center;font-weight:900;color:#d4af37;font-size:18px}
.object-manager-main-v118{min-width:0;display:flex;flex-direction:column;gap:4px}
.object-manager-main-v118 b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.object-manager-badges-v118{display:flex;flex-wrap:wrap;gap:5px}
.object-manager-badges-v118 em{font-style:normal;font-size:11px;background:#eef2ff;color:#334155;border-radius:999px;padding:3px 7px}
.object-manager-actions-v118{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.object-manager-actions-v118 button{white-space:nowrap}
.object-is-locked-v118{outline:2px solid rgba(185,28,28,.28)}
@media(max-width:760px){.object-manager-model-v118{grid-template-columns:62px 1fr!important}.object-manager-thumb-v118{width:58px;height:52px}.object-manager-actions-v118{grid-column:1/-1;justify-content:flex-start}}

/* V121 */
.room-list-footer-v121{max-width:1180px;margin:8px auto 0;padding:20px 18px 34px;border-top:1px solid #dfe3e8;color:#667085;display:flex;justify-content:space-between;gap:15px}.rich-display-v121{line-height:1.7;color:#344054;overflow-wrap:anywhere}.rich-display-v121 img{max-width:100%;height:auto}.rich-editor-v121{min-height:170px;border:1px solid #cfd6df;border-radius:0 0 12px 12px;background:#fff;padding:14px;line-height:1.65;overflow:auto}.rich-toolbar-v121{display:flex;flex-wrap:wrap;gap:6px;padding:8px;border:1px solid #cfd6df;border-bottom:0;border-radius:12px 12px 0 0;background:#f7f9fc}.rich-toolbar-v121 button,.rich-toolbar-v121 select,.rich-toolbar-v121 input[type=color]{min-height:34px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;padding:5px 9px}.rich-toolbar-v121 input[type=color]{width:42px;padding:3px}.room-rich-admin-section-v121,.model-info-admin-v121{border:1px solid #e4e7ec;border-radius:14px;padding:14px;background:#fafbfc}.banner-preview-v121 img{width:100%;max-height:180px;object-fit:cover}.room-info-card-v121,.model-info-card-v121{width:min(840px,94vw);max-height:88vh;overflow:auto}.room-rich-editor-card-v121{width:min(920px,96vw);max-height:92vh;overflow:auto}.room-info-admin-actions-v121,.modal-actions-v121{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.room-rich-edit-btn-v121,#save-room-rich-v121{border:0;border-radius:10px;padding:10px 13px;background:#111827;color:#fff;font-weight:800}#room-info-modal-v121,#model-info-modal-v121,#room-rich-editor-modal-v121{position:fixed;inset:0;z-index:10080;background:rgba(0,0,0,.66);display:flex;align-items:center;justify-content:center;padding:18px}#room-info-modal-v121.hidden,#model-info-modal-v121.hidden,#room-rich-editor-modal-v121.hidden{display:none!important}@media(max-width:720px){.room-list-footer-v121{display:block}.room-list-footer-v121 span{display:block;margin-top:7px}}

/* V124 - bảng nhập vai chia tab, tránh che khuất trên màn hình thấp/mobile */
#virtual-character-panel-v100{display:flex;flex-direction:column;overflow:hidden!important;width:min(620px,calc(100vw - 24px));max-height:min(88vh,820px);padding:14px!important}
#virtual-character-panel-v100.hidden{display:none!important}
#virtual-character-panel-v100 h3{flex:0 0 auto;margin-bottom:9px}
#virtual-character-panel-v100 .vc-panel-tabs-v124{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;flex:0 0 auto;margin-bottom:10px;padding-right:34px}
#virtual-character-panel-v100 .vc-panel-tabs-v124 button{border-radius:9px;padding:8px 5px;background:#e2e8f0;color:#334155;font-size:12px}
#virtual-character-panel-v100 .vc-panel-tabs-v124 button.active{background:#0f172a;color:#fff}
#virtual-character-panel-v100 .vc-tab-pane-v124{display:none;overflow:auto;overscroll-behavior:contain;padding:2px 3px 10px;min-height:0}
#virtual-character-panel-v100 .vc-tab-pane-v124.active{display:block}
#virtual-character-panel-v100 .vc-action-grid-v124{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:10px}
#virtual-character-panel-v100 .vc-action-grid-v124 select{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:9px;padding:8px;background:#fff}
#virtual-character-panel-v100 .vc-actions-report-v124{margin-top:10px;padding:12px;border-radius:12px;background:#f1f5f9;line-height:1.55;font-size:12px;max-height:46vh;overflow:auto}
#virtual-character-panel-v100 .vc-audio-upload-v102{margin-bottom:4px}
#virtual-character-panel-v100 [data-vc-save-actions]{margin-top:4px}
#virtual-character-panel-v100 input[type=file]{max-width:100%;min-width:0}
@media(max-width:650px){
 #virtual-character-panel-v100{right:6px!important;bottom:6px!important;width:calc(100vw - 12px)!important;max-height:calc(100dvh - 18px)!important;border-radius:15px!important;padding:11px!important}
 #virtual-character-panel-v100 .vc-panel-tabs-v124{grid-template-columns:repeat(2,minmax(0,1fr));padding-right:32px}
 #virtual-character-panel-v100 .vc-action-grid-v124{grid-template-columns:1fr}
 #virtual-character-panel-v100 .vc-actions-v100{gap:6px}
 #virtual-character-panel-v100 .vc-actions-v100 button{padding:9px 10px}
}

/* V125: cấu hình tuyến giới thiệu nhân vật */
.tour-character-box .grid{grid-template-columns:repeat(3,minmax(0,1fr))}.tour-character-box input,.tour-character-box select{max-width:100%}@media(max-width:900px){.tour-character-box .grid{grid-template-columns:1fr}}

/* V126 - lối mở rõ ràng cho cấu hình Điểm xem tự động / Nhân vật giới thiệu */
.tour-panel-head-actions-v126{display:flex;align-items:center;gap:7px}.tour-panel-head-actions-v126 a{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:999px;background:#d4af37;color:#111;text-decoration:none;font-size:11px;font-weight:900;white-space:nowrap}.tour-admin-hint-v126{margin:0 0 9px;padding:8px 9px;border-radius:10px;background:rgba(59,130,246,.18);color:#dbeafe;font-size:11px;line-height:1.4}.tour-config-link-v126{display:flex;align-items:center;justify-content:center;width:34px;min-width:34px;border-radius:10px;background:#dbeafe;color:#1d4ed8;text-decoration:none;font-weight:900}.tour-config-link-v126:hover{background:#d4af37;color:#111}.tour-empty-config-v126{display:inline-block;margin-top:8px;padding:8px 10px;border-radius:10px;background:#d4af37;color:#111;text-decoration:none;font-weight:900}.nav-admin-popover #btnTourCharacterSetupV126{background:rgba(212,175,55,.2);border:1px solid rgba(212,175,55,.48)}

/* V127 - cấu hình nhanh audio và vị trí nhân vật ngay trong Điểm xem */
#tour-panel{width:min(760px,calc(100vw - 28px));max-height:min(82vh,760px);overflow:auto}
.tour-point-wrap-v127{border-bottom:1px solid rgba(255,255,255,.12);padding:4px 0}
.tour-global-follow-v127{display:flex;flex-direction:column;gap:4px;margin:8px;padding:10px 12px;border-radius:12px;background:rgba(212,175,55,.16);border:1px solid rgba(212,175,55,.45);color:#fff}
.tour-global-follow-v127 label{display:flex;gap:8px;align-items:center;cursor:pointer}
.tour-global-follow-v127 small{color:#dbe4f3;line-height:1.4}
.tour-inline-config-v127{flex:0 0 42px!important;width:42px!important;min-width:42px!important;border-radius:10px!important;background:#d4af37!important;color:#111!important;font-size:18px!important}
.tour-point-config-v127{margin:6px 8px 12px;padding:12px;border-radius:14px;background:#f8fafc;color:#111;border:1px solid #cbd5e1;box-shadow:0 10px 28px rgba(0,0,0,.18)}
.tour-point-config-v127.hidden{display:none!important}
.tour-config-grid-v127{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tour-config-grid-v127 label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700}
.tour-config-grid-v127 input,.tour-config-grid-v127 select{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:9px;padding:8px 9px;background:#fff;color:#111}
.tour-config-grid-v127 .tour-check-v127{flex-direction:row;align-items:center;align-self:end;min-height:38px}
.tour-config-grid-v127 .tour-check-v127 input{width:auto}
.tour-audio-file-v127{grid-column:span 2}
.tour-current-audio-v127{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 0}
.tour-current-audio-v127 label{flex-direction:row;align-items:center}
.tour-current-audio-v127 input{width:auto}
.tour-config-actions-v127{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.tour-config-actions-v127 button{border:0;border-radius:10px;padding:9px 12px;font-weight:800;cursor:pointer;background:#e2e8f0;color:#111}
.tour-config-actions-v127 .tour-save-v127{background:#2563eb;color:#fff}
@media(max-width:760px){
  #tour-panel{left:8px!important;right:8px!important;width:auto!important;max-height:86vh}
  .tour-config-grid-v127{grid-template-columns:1fr 1fr}
  .tour-audio-file-v127{grid-column:1/-1}
}
@media(max-width:520px){
  .tour-config-grid-v127{grid-template-columns:1fr}
  .tour-audio-file-v127{grid-column:auto}
  .tour-config-actions-v127 button{width:100%}
}

/* V128: cấu hình điểm xem rõ chữ, không còn nút trắng trên nền sáng. */
#tour-panel .tour-point-row>button:first-child{background:#2b3140!important;color:#f8fafc!important;border:1px solid rgba(255,255,255,.18)!important;text-align:left!important}
#tour-panel .tour-point-row>button:first-child small{display:block;margin-top:4px;color:#cbd5e1!important;font-weight:600;line-height:1.35}
#tour-panel .tour-point-wrap-v127.selected-v128>.tour-point-row>button:first-child{outline:3px solid #facc15;background:#354052!important}
#tour-panel .tour-inline-config-v127{background:#d4af37!important;color:#111827!important;border:1px solid #fde68a!important;opacity:1!important}
#tour-panel .tour-delete{background:#3f4656!important;color:#fff!important;border:1px solid rgba(255,255,255,.18)!important;opacity:1!important}
#tour-panel .tour-point-config-v127{background:#f8fafc!important;color:#0f172a!important}
#tour-panel .tour-point-config-v127 h4{margin:0 0 10px;color:#0f172a;font-size:15px}
#tour-panel .tour-config-section-v128{padding:12px;margin-bottom:12px;border:1px solid #dbe3ef;border-radius:13px;background:#fff}
#tour-panel .tour-config-grid-v127 label{color:#0f172a!important}
#tour-panel .tour-config-grid-v127 input,#tour-panel .tour-config-grid-v127 select,.tour-audio-manager-v128 input{color:#111827!important;background:#fff!important;border:1px solid #94a3b8!important}
#tour-panel .tour-config-actions-v127 button,#tour-panel .tour-capture-view-v128,#tour-panel .tour-audio-manager-v128 button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;border:1px solid #cbd5e1!important;background:#e2e8f0!important;color:#0f172a!important;opacity:1!important;text-shadow:none!important;box-shadow:none!important}
#tour-panel .tour-config-actions-v127 button:hover,#tour-panel .tour-capture-view-v128:hover,#tour-panel .tour-audio-manager-v128 button:hover{background:#cbd5e1!important;color:#020617!important}
#tour-panel .tour-config-actions-v127 button:disabled,#tour-panel .tour-audio-manager-v128 button:disabled{background:#dbe3ed!important;color:#64748b!important;opacity:.85!important;cursor:not-allowed}
#tour-panel .tour-config-actions-v127 .tour-save-v127{background:#2563eb!important;color:#fff!important;border-color:#1d4ed8!important}
#tour-panel .tour-config-actions-v127 .tour-save-v127:hover{background:#1d4ed8!important;color:#fff!important}
#tour-panel .tour-capture-view-v128{margin-top:8px;background:#fef3c7!important;border-color:#f59e0b!important;color:#7c2d12!important;font-weight:900}
#tour-panel .tour-audio-manager-v128{display:grid;grid-template-columns:minmax(150px,1fr) minmax(190px,1.4fr);gap:8px;margin-top:10px;padding:10px;border:1px dashed #94a3b8;border-radius:12px;background:#f1f5f9}
#tour-panel .tour-audio-manager-v128 button{font-weight:850}
#tour-panel .tour-audio-manager-v128 .danger-v128{background:#fee2e2!important;color:#991b1b!important;border-color:#fecaca!important}
#tour-panel .tour-legacy-audio-v128{margin-top:8px;padding:8px 10px;border-radius:10px;background:#fff7ed;color:#9a3412;font-size:12px;line-height:1.45}
#virtual-character-panel-v100 .vc-tab-pane-v124[data-vc-pane="speech"]{padding-bottom:14px}
#virtual-character-panel-v100 .vc-audio-upload-v102{margin-top:12px!important}
@media(max-width:720px){
 #tour-panel .tour-audio-manager-v128{grid-template-columns:1fr}
 #tour-panel .tour-config-actions-v127 button,#tour-panel .tour-capture-view-v128,#tour-panel .tour-audio-manager-v128 button{width:100%}
}

/* V143 - Song ngữ VI/EN */
.gallery-lang-switch-v143{display:inline-flex;gap:2px;align-items:center;border-radius:10px;overflow:hidden;background:rgba(15,23,42,.72)}
.gallery-lang-switch-v143 .nav-btn{min-width:42px;padding-left:10px;padding-right:10px;text-decoration:none;border-radius:0}
.gallery-lang-switch-v143 .nav-btn.active{background:#fff;color:#111827;box-shadow:inset 0 0 0 1px rgba(15,23,42,.15)}
.room-info-tabs-v143{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 16px;border-bottom:1px solid rgba(148,163,184,.35);padding-bottom:10px}
.room-info-tabs-v143 button{border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;color:#334155;padding:8px 13px;font-weight:800;cursor:pointer}
.room-info-tabs-v143 button.active{background:#0f172a;color:#fff;border-color:#0f172a}
@media(max-width:640px){.gallery-lang-switch-v143 .nav-btn{min-width:38px;padding:8px}.room-info-tabs-v143 button{flex:1}}

/* V143: chọn nhanh chế độ ngôn ngữ trong menu Admin của phòng 3D */
.admin-language-mode-v143{padding:8px 10px;border-top:1px solid rgba(148,163,184,.22);border-bottom:1px solid rgba(148,163,184,.22)}
.admin-language-mode-v143 small{display:block;margin-bottom:6px;font-weight:800;opacity:.75}
.admin-language-mode-v143>div{display:flex;gap:5px}
.admin-language-mode-v143 button{flex:1;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#334155;padding:6px 7px;font-weight:900;cursor:pointer}
.admin-language-mode-v143 button.active{background:#0f172a;color:#fff;border-color:#0f172a}

/* V144 - Nhập vai nhân vật: tab Hoạt cảnh gọn, danh sách nhiều clip chỉ mở khi chọn chế độ nhiều clip. */
#virtual-character-panel-v100 .vc-panel-tabs-v124.vc-three-tabs-v129{grid-template-columns:repeat(3,minmax(0,1fr))}
#virtual-character-panel-v100 .vc-action-grid-v124{gap:6px;margin-bottom:7px;align-items:start}
#virtual-character-panel-v100 .vc-action-field-v129{min-width:0;padding:7px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc}
#virtual-character-panel-v100 .vc-action-field-v129>label{gap:3px;font-size:11px;line-height:1.2}
#virtual-character-panel-v100 .vc-action-field-v129 select{padding:6px 7px;font-size:12px;min-height:34px}
#virtual-character-panel-v100 .vc-action-pool-v129{display:none!important;margin-top:6px;max-height:170px;overflow:auto;padding:7px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 7px}
#virtual-character-panel-v100 .vc-action-pool-v129.active{display:grid!important}
#virtual-character-panel-v100 .vc-action-pool-v129 .vc-loop-caption-v139{grid-column:1/-1;margin:0 0 3px;font-size:10px;line-height:1.35;color:#64748b}
#virtual-character-panel-v100 .vc-pool-item-v129{display:flex!important;grid-template-columns:none!important;align-items:center;gap:5px;min-width:0;padding:3px 2px;font-size:11px;font-weight:600}
#virtual-character-panel-v100 .vc-pool-item-v129 input{width:15px!important;height:15px!important;flex:0 0 auto;margin:0}
#virtual-character-panel-v100 .vc-pool-item-v129 span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#virtual-character-panel-v100 [data-vc-pane="actions"] .vc-help-v102{margin-top:4px;padding:7px 8px;border-radius:8px;background:#f1f5f9}
@media(max-width:650px){
 #virtual-character-panel-v100 .vc-panel-tabs-v124.vc-three-tabs-v129{grid-template-columns:repeat(3,minmax(0,1fr))}
 #virtual-character-panel-v100 .vc-action-pool-v129{grid-template-columns:1fr}
}


/* V145: cụm điều khiển bản duyệt ảnh 2D đặt trên cùng để người dùng nhìn thấy ngay. */
#gallery2d-modal .gallery2d-topbar-v145{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;min-height:0;padding-right:44px}
#gallery2d-modal .gallery2d-topbar-v145 .gallery2d-actions{position:static!important;inset:auto!important;margin:0!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;display:flex!important;justify-content:flex-start!important;gap:8px!important}
#gallery2d-modal .gallery2d-topbar-v145 .gallery2d-thumbs{order:2;padding:2px 0 4px!important;margin:0!important;max-width:100%;overflow-x:auto!important}
@media(max-width:820px),(pointer:coarse){
  #gallery2d-modal .gallery2d-card{padding:58px 10px 20px!important;margin:8px auto 18px!important}
  #gallery2d-modal .gallery2d-topbar-v145{padding-right:0;position:relative;z-index:3;background:#fff;border-radius:12px;margin-bottom:10px}
  #gallery2d-modal .gallery2d-topbar-v145 .gallery2d-actions{position:static!important;left:auto!important;right:auto!important;bottom:auto!important;flex-wrap:wrap!important;padding:0!important}
  #gallery2d-modal .gallery2d-topbar-v145 .gallery2d-actions button{flex:1 1 auto!important;padding:9px 10px!important}
  #gallery2d-modal .gallery2d-topbar-v145 .gallery2d-thumbs{padding-bottom:4px!important}
}

/* V146 - 2D viewer: nút Ảnh cùng hàng điều khiển, ảnh bám mép trên */
#gallery2d-modal .gallery2d-topbar-v145 .gallery2d-actions{
  align-items:center!important;
}
#gallery2d-modal .gallery-reset-inline-v146{
  border:0!important;
  border-radius:999px!important;
  background:#111!important;
  color:#fff!important;
  padding:10px 14px!important;
  font-weight:800!important;
  cursor:pointer!important;
}
#gallery2d-modal .gallery-reset-inline-v146:hover{background:#d4af37!important;color:#111!important}
#gallery2d-modal .gallery2d-main{align-items:start!important}
#gallery2d-modal .gallery2d-image-wrap{
  align-items:flex-start!important;
  justify-content:center!important;
}
#gallery2d-modal .gallery2d-image-wrap img{
  display:block!important;
  margin-top:0!important;
  align-self:flex-start!important;
}
#gallery2d-modal .gallery2d-info{padding-top:0!important}
#gallery2d-modal .gallery2d-info h2{margin-top:0!important}
