:root {
  color-scheme: light;
  --accent: #1687d9; --accent-bright: #75dcff; --accent-soft: rgba(22,135,217,.2);
  --ink: #182230; --muted: #526174; --surface: rgba(255,255,255,.10); --field: rgba(255,255,255,.84);
  font-family: "Segoe UI", Inter, ui-sans-serif, system-ui, sans-serif;
  --workspace-height-ratio: .5628;
}

/* Nền map bám theo khung nhìn giống background gắn vào camera trong Unity. */
.map-canvas-scroll {
  background-color:#05080c;
}

.wild-beast-manager{position:absolute;z-index:8;inset:0 0 0 68px;padding:18px;overflow:auto;color:#eef4fb;background:rgba(3,8,14,.9);backdrop-filter:blur(10px)}
.wild-beast-manager[hidden]{display:none!important}
.wild-beast-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;margin-bottom:14px;background:linear-gradient(135deg,rgba(28,46,68,.96),rgba(43,24,15,.94))}
.wild-beast-header .eyebrow{margin:0;color:#efbd55;font-size:11px;font-weight:850;letter-spacing:.16em}
.wild-beast-header h2{margin:5px 0;color:#fff0b5}
.wild-beast-header p:last-child{max-width:780px;margin:0;color:#b9c7d8;line-height:1.55}
.wild-beast-header button{flex:0 0 auto;min-height:42px;padding:9px 15px}
.wild-beast-test-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.wild-beast-card{display:grid;grid-template-columns:116px minmax(0,1fr);gap:13px;align-items:center;padding:12px;overflow:hidden;background:linear-gradient(145deg,rgba(17,30,45,.97),rgba(11,18,27,.97))}
.wild-beast-card>img{grid-row:1/3;width:116px;height:116px;object-fit:contain;border:1px solid rgba(238,189,85,.35);border-radius:12px;background:radial-gradient(circle,#31516a 0%,#101a26 70%)}
.wild-beast-card span{color:#e8b74f;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.wild-beast-card h3{margin:3px 0 8px;color:#fff2bd;font-size:18px}
.wild-beast-card dl{display:grid;grid-template-columns:repeat(2,1fr);gap:5px 10px;margin:0}
.wild-beast-card dl div{display:flex;justify-content:space-between;gap:7px;border-bottom:1px solid rgba(255,255,255,.08);font-size:11px}
.wild-beast-card dt{color:#8fa2b8}.wild-beast-card dd{margin:0;color:#ecf3fc;font-weight:750}.wild-beast-card small{display:block;margin-top:7px;color:#69d99a}
.wild-beast-card>button{grid-column:2;min-height:34px;border:1px solid rgba(232,189,69,.5);border-radius:8px;color:#ffe9a8;background:rgba(116,76,10,.58);font-weight:750}
@media(max-width:780px){.wild-beast-manager{position:relative;inset:auto;padding:10px 8px 20px 64px}.wild-beast-header{align-items:flex-start;flex-direction:column}.wild-beast-card{grid-template-columns:90px minmax(0,1fr)}.wild-beast-card>img{width:90px;height:90px}}

.ui-editor{padding:24px;max-width:1360px;margin:0 auto}.ui-editor-header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px}.ui-editor-header h2{margin:0;color:#ffe7a2}.ui-editor-header p{margin:7px 0 0;color:#b9c8df}.ui-editor-header button{margin-left:8px}.ui-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.ui-editor-preview-wrap{padding:16px;overflow:auto}.ui-layout-preview{position:relative;min-width:720px;aspect-ratio:20/9;overflow:hidden;border:2px solid #d69d3b;border-radius:12px;background:linear-gradient(145deg,#74c8ff 0%,#3b92df 43%,#315f3a 44%,#649d45 100%);box-shadow:inset 0 0 0 2px #1e385a}.ui-preview-hp{position:absolute;left:2%;top:3%;padding:7px 58px 7px 12px;border:3px solid #5d2109;border-radius:20px;background:#cf2929;color:#fff;font-weight:800}.ui-preview-hp span{color:#bfe8ff}.ui-preview-map{position:absolute;right:2%;top:3%;width:84px;height:45px;background:#141313;border:2px solid #d99d30;color:#d5b36e;text-align:center;padding-top:9px;font-size:12px}.ui-preview-player{position:absolute;left:48%;top:68%;color:#fff;font-weight:800;text-shadow:1px 1px #000}.ui-control{position:absolute;transform:translate(-50%,-50%);width:42px;height:42px;border:3px solid #b46a22;border-radius:50%;background:#402112;color:#ffd478;font-size:24px;cursor:grab;touch-action:none;box-shadow:0 2px 6px #000}.ui-control:active{cursor:grabbing}.ui-menu,.ui-chat{background:#3e1c0b}.ui-attack{width:60px;height:60px;background:#9d2219;color:#fff}.ui-target{background:#181c25;color:#9dfffc}.ui-editor-controls{padding:17px}.ui-editor-controls h3{margin:0;color:#ffe7a2}.ui-editor-controls>p{color:#b9c8df;font-size:13px}.ui-layout-fields{display:grid;gap:8px}.ui-layout-fields label{display:grid;grid-template-columns:1fr auto auto;gap:5px;align-items:center;padding:8px;border:1px solid #43577c;border-radius:8px;background:#14243d}.ui-layout-fields span{font-size:12px;color:#bed0ee}.ui-layout-fields input{width:54px;padding:4px;background:#0d1829;border:1px solid #5672a4;color:#fff;border-radius:4px}.ui-layout-note{border-top:1px solid #43577c;padding-top:10px}@media(max-width:900px){.ui-editor-layout{grid-template-columns:1fr}.ui-editor-header{align-items:flex-start;flex-direction:column}.ui-layout-preview{min-width:580px}}
.ui-editor .eyebrow{color:#f3bb53;font-size:11px;letter-spacing:.14em;font-weight:800}.ui-editor-actions{display:flex;flex-wrap:wrap;gap:7px}.ui-editor-header button{margin:0}.ui-editor-actions .is-active{background:#b87625;color:#fff4d7}.ui-preview-toolbar{display:flex;justify-content:space-between;padding:0 2px 10px;color:#aebfda;font-size:13px}.ui-preview-toolbar b{color:#ffdf99}.ui-layout-preview{background-image:var(--ui-scene,linear-gradient(145deg,#74c8ff 0%,#3b92df 43%,#315f3a 44%,#649d45 100%));background-size:cover;background-position:center}.ui-layout-preview.has-grid{background-image:linear-gradient(90deg,#ffffff13 1px,transparent 1px),linear-gradient(#ffffff13 1px,transparent 1px),var(--ui-scene,linear-gradient(145deg,#74c8ff 0%,#3b92df 43%,#315f3a 44%,#649d45 100%));background-size:5% 5%,5% 5%,cover;background-position:0 0,0 0,center}.ui-layout-preview.is-playing{outline:2px solid #45d782}.ui-layout-preview.is-apk{border-radius:25px;max-width:480px;margin:auto}.ui-preview-scene i{position:absolute;bottom:17%;width:14%;height:10%;background:#754722;border:2px solid #84d34b;border-radius:8px}.ui-preview-scene i:nth-child(1){left:28%}.ui-preview-scene i:nth-child(2){left:48%;bottom:25%}.ui-preview-scene i:nth-child(3){right:20%;bottom:14%}.ui-preview-mob{position:absolute;left:60%;top:70%;color:#ffdf98;font-weight:700}.ui-control.is-selected{outline:3px solid #fff7b8;outline-offset:4px}.ui-play-feedback{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);opacity:0;pointer-events:none;padding:10px 15px;border-radius:8px;background:#081424dc;color:#fff;transition:opacity .18s}.ui-play-feedback.is-visible{opacity:1}.ui-selected-control{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #405777}.ui-selected-control small{display:block;color:#a8bad7;margin-top:3px}.ui-control-badge{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:2px solid #b77827;background:#4a260e;color:#ffe19a;font-size:20px}.ui-attack{background:#aa3024}.ui-logic-panel{margin-top:16px;border-top:1px solid #405777;padding-top:12px}.ui-logic-panel h4{margin:0 0 7px;color:#ffdf9b}.ui-logic-panel b,.ui-logic-panel code,.ui-logic-panel small{display:block;margin:7px 0}.ui-logic-panel code{padding:8px;border-radius:6px;background:#07111f;color:#82c4ff;overflow-wrap:anywhere}.ui-control-library{margin-top:18px;padding:16px}.ui-control-library header{display:flex;justify-content:space-between;gap:15px;align-items:center}.ui-control-library h3{margin:0;color:#ffe7a2}.ui-control-library p{margin:4px 0;color:#aec0db;font-size:13px}.ui-control-catalog{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:9px;margin-top:14px}.ui-control-catalog button{display:flex;text-align:left;gap:9px;padding:10px;border:1px solid #3d5476;background:#0e1d31;color:#e7efff;border-radius:8px}.ui-control-catalog button.is-active{border-color:#df9e39;background:#263a53}.ui-control-catalog small{display:block;color:#9fb2ce;margin-top:3px;font-size:11px}@media(max-width:900px){.ui-control-library header{align-items:flex-start;flex-direction:column}}
.ui-layout-preview .ui-preview-hp{left:1.4%;top:2%;width:25%;height:auto;padding:0;border:0;border-radius:0;background:transparent;z-index:2}.ui-preview-scene>i{display:none}.ui-control{width:auto;height:auto;padding:0;border:0;background:transparent;box-shadow:none;overflow:visible}.ui-control>img{display:block;width:54px;height:54px;object-fit:contain;filter:drop-shadow(0 2px 2px #000)}.ui-control.ui-attack>img{width:66px;height:66px}.ui-control.ui-target>img{width:54px;height:54px}.ui-control .ui-flip{transform:scaleX(-1)}.ui-control.is-selected{outline:2px solid #fff7b8;border-radius:50%;outline-offset:3px}.ui-control-badge{padding:0;overflow:hidden}.ui-control-badge img{width:100%;height:100%;object-fit:contain}.ui-preview-character{position:absolute;left:49%;top:67%;width:110px;height:130px;transform:translate(-50%,-50%);z-index:2}.ui-preview-character img{position:absolute;left:50%;top:50%;max-width:96px;max-height:110px;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy)));image-rendering:auto}.ui-preview-character>span{position:absolute;left:50%;top:-13px;transform:translateX(-50%);color:#fff;font-weight:800;text-shadow:1px 1px 2px #000;white-space:nowrap}.ui-preview-player{display:none}.ui-preview-mob{padding:4px 7px;border-radius:5px;background:#6e1717;color:#fff;text-shadow:1px 1px #000}.ui-layout-preview.is-apk .ui-preview-hp{width:35%}
.ui-layout-fields .ui-link-enabled{grid-template-columns:1fr auto}.ui-layout-fields .ui-link-enabled input{width:18px;height:18px;accent-color:#d89d3b}.ui-layout-fields .ui-link-url{grid-template-columns:1fr}.ui-layout-fields .ui-link-url input{width:100%;box-sizing:border-box;margin-top:5px}
.ui-custom-layer{position:absolute;inset:0;pointer-events:none}.ui-custom-component{position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;pointer-events:auto;cursor:grab;touch-action:none;color:#fff}.ui-custom-component.is-hidden{display:none}.ui-custom-component.is-selected{outline:3px solid #65c8ff;outline-offset:3px}.ui-custom-panel{z-index:3}.ui-custom-panel small{position:absolute;left:6px;top:4px;padding:2px 5px;border-radius:4px;background:#07111fc4;color:#d9e8ff;font-size:10px}.ui-layout-preview.is-playing .ui-custom-panel small{display:none}.ui-custom-text,.ui-custom-image,.ui-custom-slot{z-index:4;background:transparent;border:0}.ui-custom-text{display:flex;align-items:center;justify-content:center;white-space:pre-wrap;overflow:hidden}.ui-custom-image{padding:0}.ui-custom-image img{width:100%;height:100%;object-fit:var(--fit,contain)}.ui-custom-image span{font-size:11px;color:#aec0db}.ui-custom-slot{display:grid;place-items:center;padding:3px}.ui-custom-slot img{max-width:100%;max-height:100%;object-fit:contain}.ui-custom-slot b{position:absolute;right:3px;bottom:1px;color:#fff;text-shadow:1px 1px 2px #000;font-size:11px}.ui-type-badge{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:1px solid #d59a3a;border-radius:7px;background:#17243a;color:#ffe2a0;font-weight:800}.ui-layout-fields h4{margin:12px 0 2px;color:#f3c874}.ui-layout-fields label{grid-template-columns:1fr}.ui-layout-fields label>input,.ui-layout-fields label>select,.ui-layout-fields label>textarea{width:100%;box-sizing:border-box;margin-top:5px}.ui-layout-fields textarea{min-height:72px;resize:vertical}.ui-layout-fields .ui-check{grid-template-columns:1fr auto}.ui-layout-fields .ui-check input{width:18px;height:18px;margin:0;accent-color:#d89d3b}.ui-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.ui-component-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}

/* Danh sách lớp cần ưu tiên không gian cho canvas: hàng và chữ luôn gọn. */
.map-properties .map-layer-list { gap:2px; max-height:112px; }
.map-properties .map-layer-row { grid-template-columns:minmax(0,1fr) 24px; gap:2px; border-radius:5px; }
.map-properties .map-layer-row > [data-layer-index] {
  min-height:24px;
  padding:3px 5px;
  gap:4px;
  font-size:clamp(7px,3.2cqi,9px);
  line-height:1.15;
}
.map-properties .map-layer-row > [data-layer-index] span { min-width:0; font-size:inherit; overflow-wrap:anywhere; }
.map-properties .map-layer-row > [data-layer-index] small { font-size:clamp(7px,2.8cqi,8px); line-height:1.15; }
.map-properties .map-layer-row .map-layer-delete { min-width:24px; min-height:24px; padding:0; font-size:15px; }
.map-properties .map-layer-list > .is-background { min-height:23px; padding:3px 5px; font-size:clamp(7px,3cqi,9px); }
.map-properties .map-layer-order { gap:2px; margin-top:4px; }
.map-properties .map-layer-order button,
.map-properties #map-layer-remove { min-height:26px; padding:3px 4px; font-size:clamp(7px,3cqi,9px); line-height:1.1; }
.map-properties #map-layer-remove { margin-top:3px; }

.mob-spawn-panel .map-property-content { display:grid; gap:5px; }
.mob-stat-grid,.mob-spawn-position { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px; }
.mob-spawn-position { grid-template-columns:repeat(2,minmax(0,1fr)) auto; align-items:end; }
.mob-spawn-panel label { display:grid; gap:2px; font-size:9px; color:#aab7c6; }
.mob-spawn-panel input,.mob-spawn-panel select { min-width:0; height:27px; padding:0 5px; font-size:9px; }
.mob-spawn-panel button { min-height:27px; padding:3px 6px; font-size:9px; white-space:nowrap; }
.mob-spawn-panel .placed-list { max-height:94px; font-size:9px; }
.map-visibility { display:flex; flex-wrap:wrap; gap:5px 10px; margin:4px 0 0; padding:6px 8px; border:1px solid #2d3a4a; border-radius:7px; color:#bbc8d7; font-size:9px; }
.map-visibility legend { padding:0 4px; color:#fff1bb; font-size:10px; font-weight:750; }
.map-visibility label { display:inline-flex; align-items:center; gap:3px; white-space:nowrap; }
.map-visibility input { margin:0; accent-color:#dca91f; }
@media (max-width:760px) { .mob-spawn-panel input,.mob-spawn-panel select,.mob-spawn-panel button { min-height:34px; font-size:11px; } }

/* Module Thông báo: ưu tiên hiển thị nhiều nội dung, không dùng chữ và ô quá lớn. */
.announcement-manager { padding:14px; font-size:12px; }
.announcement-manager > header { margin-bottom:10px; }
.announcement-manager > header p { font-size:10px; }
.announcement-manager h1 { margin-top:3px; font-size:22px; }
.announcement-workbench { gap:10px; grid-template-columns:210px minmax(360px,1fr) minmax(360px,1fr); }
.announcement-library { min-height:420px; padding:9px; }
.announcement-library h2 { font-size:14px; }
.announcement-library header button { min-height:28px; padding:4px 7px; font-size:10px; }
.announcement-library #announcement-list { gap:4px; margin-top:7px; }
.announcement-list-row { grid-template-columns:minmax(0,1fr) 27px; border-radius:6px; }
.announcement-list-item { padding:6px 7px; font-size:10px; line-height:1.25; }
.announcement-list-item small { margin-top:2px; font-size:8px; }
.announcement-delete { font-size:16px; }
.announcement-editor { gap:8px; padding:10px; }
.announcement-title-label,.announcement-banner-label,.announcement-content-label { gap:4px; font-size:10px; }
.announcement-title-label input,.announcement-banner-label select { height:29px; padding:0 7px; border-radius:6px; font-size:10px; }
.announcement-toolbar { gap:4px; }
.announcement-toolbar label { gap:3px; font-size:9px; }
.announcement-toolbar select { height:28px; padding:0 5px; border-radius:6px; font-size:9px; }
.announcement-toolbar input[type=number] { width:54px; padding:4px; font-size:9px; }
.announcement-toolbar input[type=color] { width:30px; height:28px; padding:2px; }
.announcement-toolbar > button { min-width:28px; height:28px; padding:2px 5px; border-radius:6px; font-size:12px; }
.align-buttons { gap:2px; }
.align-buttons button,.announcement-editor footer button { min-height:28px; padding:4px 7px; border-radius:6px; font-size:10px; }
.announcement-rich-editor { min-height:150px; padding:8px; border-radius:6px; font-size:11px; line-height:1.4; }
.sticker-picker { border-radius:6px; }
.sticker-picker summary { padding:6px; font-size:10px; }
.sticker-picker > div { gap:3px; padding:0 6px 6px; }
.sticker-picker button { width:26px; height:26px; border-radius:5px; font-size:14px; }
.announcement-editor footer { gap:4px; }
.announcement-editor footer .announcement-active { min-height:28px; padding:4px 7px; font-size:10px; }
.announcement-help { font-size:10px; line-height:1.4; }
.announcement-card { min-height:230px; border-radius:12px; }
.announcement-copy { padding:30px 12px; font-size:clamp(12px,1.2vw,16px); line-height:1.35; }

@media (max-width:760px) {
  .announcement-manager { padding:10px 7px 18px 58px; font-size:12px; }
  .announcement-manager h1 { font-size:19px; }
  .announcement-workbench { gap:8px; grid-template-columns:1fr; }
  .announcement-library,.announcement-editor { padding:8px; }
  .announcement-toolbar > button,.align-buttons button,.announcement-editor footer button { min-height:32px; }
  .announcement-rich-editor { min-height:170px; font-size:12px; }
}

.map-tile-info-entry{margin-top:7px;padding:6px;border:1px solid rgba(255,255,255,.1);border-radius:7px;background:rgba(13,25,38,.72)}
.map-tile-info-entry>button{margin:0}
.map-tile-info-entry select{width:100%;height:30px;margin-top:5px;padding:0 6px;color:#eef4fb;border:1px solid rgba(255,224,130,.25);border-radius:6px;background:#101b29}
.map-tile-info-entry>small{display:block;margin-top:4px;color:#8fa0b4;font-size:8px}
.map-canvas-scroll canvas.is-placing-decoration{cursor:copy}
#map-decoration-cancel{border-color:rgba(255,125,125,.5);color:#ffd4d4}
.map-layer-row{display:grid;grid-template-columns:minmax(0,1fr) 30px;gap:4px;border:1px solid transparent;border-radius:7px}
.map-layer-row.is-active{border-color:#e7b93f;background:rgba(128,83,8,.28)}
.map-layer-row>[data-layer-index]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;min-height:34px;padding:6px 8px;border:0;color:#dce7f3;background:transparent;text-align:left}
.map-layer-row>[data-layer-index] small{color:#8fa0b4;font-size:9px}
.map-layer-row .map-layer-delete{min-width:30px;padding:0;color:#ffb3b3;border-color:rgba(255,105,105,.35);background:rgba(91,18,18,.55)}
.map-layer-row .map-layer-delete:hover{color:#fff;background:#a92d2d}
.map-erase-layer-options{display:grid;gap:7px;max-height:55vh;overflow:auto}.map-erase-layer-options>button{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border:1px solid rgba(255,255,255,.17);border-radius:8px;color:#eaf2fb;background:#101b29;text-align:left}.map-erase-layer-options>button:hover{border-color:#efc65c;background:#172639}.map-erase-layer-options canvas{flex:0 0 40px;border:1px solid rgba(255,255,255,.28);border-radius:4px;background:repeating-conic-gradient(#34404c 0 25%,#25313d 0 50%) 50%/10px 10px;image-rendering:pixelated}.map-erase-layer-options span{display:grid;gap:2px}.map-erase-layer-options small{color:#9fb0c1}
.map-bulk-property{border-color:rgba(102,229,255,.42);box-shadow:0 0 12px rgba(51,194,230,.1)}
.map-bulk-property>b{display:block;color:#bff7ff;font-size:10px}
.map-preview-help{display:block;color:#9fb0c3;font-size:10px;line-height:1.45}
#map-preview-toggle{width:100%;border-color:rgba(95,210,255,.42);color:#dff7ff}
#map-preview-toggle.is-active{border-color:#65dcff;background:rgba(14,102,137,.75);box-shadow:0 0 15px rgba(73,205,255,.22)}
.map-canvas-scroll canvas.is-inspecting{cursor:help}
.map-library{display:grid!important;grid-template-rows:minmax(285px,46%) minmax(260px,54%);gap:8px;overflow:hidden}.map-library h2,.map-library h3{margin:0;color:#fff3bd}.map-library h2{font-size:15px}.map-library h3{font-size:13px}.map-library-top{display:grid;grid-template-rows:auto auto auto minmax(145px,1fr);gap:6px;min-height:0}.map-library-top>input,.map-select{width:100%;height:35px;padding:0 7px}.map-select{color:#eef4fb;background:#101b29}.map-cell-info{min-height:0;padding:8px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(7,15,24,.72);overflow:auto}.map-cell-info h3{margin-bottom:6px}.map-cell-info p,.map-used-tiles p{margin:5px 0;color:#8fa0b4;font-size:10px;line-height:1.4}.map-cell-info dl{display:grid;grid-template-columns:auto 1fr;gap:3px 7px;margin:0 0 7px;font-size:10px}.map-cell-info dt{color:#8fa0b4}.map-cell-info dd{margin:0;color:#e5edf7;text-align:right}.map-cell-info button{display:grid;width:100%;min-height:40px;margin-top:4px;padding:5px 7px;text-align:left}.map-cell-info button span,.map-cell-info button small{font-size:9px}.map-cell-info button small{color:#e7c766}.map-library-bottom{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;padding-top:8px;border-top:1px solid rgba(255,255,255,.14)}.map-library-bottom>header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px}.map-library-bottom>header span{color:#90a2b6;font-size:9px}.map-used-tiles{display:grid;grid-template-columns:1fr 1fr;align-content:start;gap:4px;overflow:auto}.map-used-tiles button{display:flex;align-items:center;gap:5px;min-width:0;min-height:39px;padding:4px}.map-used-tiles canvas{flex:0 0 28px;width:28px;height:28px;border-radius:4px;image-rendering:pixelated;background:#07101a}.map-used-tiles button span{display:grid;min-width:0;text-align:left}.map-used-tiles button small{color:#91a3b7;font-size:8px}

.map-crop-dialog{width:min(980px,calc(100vw - 28px))}.map-crop-dialog header>div p{margin:4px 0 0;color:#aeb9c8;font-size:12px}.map-crop-dialog form>p{color:#d6deea}.map-crop-stage{display:grid;place-items:center;max-height:62vh;overflow:auto;margin:12px 0;padding:10px;border:1px solid rgba(255,224,130,.3);border-radius:11px;background:repeating-conic-gradient(#111a24 0 25%,#172331 0 50%) 50%/20px 20px}.map-crop-stage canvas{display:block;max-width:100%;height:auto;cursor:move;touch-action:none;box-shadow:0 8px 35px #000;user-select:none}.map-crop-dialog .primary{border-color:#e8bd45;color:#fff8d8;background:#8c5d06}
.map-tile-cutter-launch{border-color:rgba(232,189,69,.65)!important;color:#fff3bd!important;background:rgba(140,93,6,.28)!important;font-weight:800}.map-tile-cutter-dialog{width:min(980px,calc(100vw - 28px))}.map-tile-cutter-dialog header>div p{margin:4px 0 0;color:#aeb9c8;font-size:12px}.map-tile-cutter-controls{display:grid;grid-template-columns:minmax(190px,260px) minmax(0,1fr);align-items:end;gap:12px}.map-tile-cutter-controls>label{display:grid!important;gap:5px;color:#d6deea}.map-tile-cutter-controls select{width:100%;height:38px;padding:0 10px}.map-tile-cutter-summary{min-width:0;min-height:38px;padding:9px 11px;box-sizing:border-box;overflow-wrap:anywhere;border:1px solid rgba(90,220,156,.32);border-radius:8px;color:#c9f5dc;background:rgba(20,100,66,.18);font-size:12px;line-height:1.45}.map-tile-cutter-summary.is-warning{border-color:rgba(255,157,59,.48);color:#ffd6a7;background:rgba(134,70,15,.2)}.map-tile-cutter-stage{display:grid;place-items:center;max-height:56vh;overflow:auto;margin:12px 0;padding:10px;border:1px solid rgba(255,224,130,.3);border-radius:11px;background:repeating-conic-gradient(#111a24 0 25%,#172331 0 50%) 50%/20px 20px}.map-tile-cutter-stage canvas{display:block;max-width:100%;height:auto;image-rendering:pixelated;box-shadow:0 8px 35px #000}.map-tile-cutter-help{margin:8px 0;color:#9eacbd;font-size:11px;line-height:1.5}.map-tile-cutter-dialog .primary{border-color:#e8bd45;color:#fff8d8;background:#8c5d06}@media(max-width:700px){.map-tile-cutter-controls{grid-template-columns:1fr}.map-tile-cutter-stage{max-height:48vh}}
.map-canvas-scroll canvas{touch-action:none;user-select:none}.map-canvas-scroll canvas.is-panning{cursor:grabbing}.map-canvas-scroll canvas.is-quick-erasing{cursor:not-allowed}.map-canvas-input-locked{user-select:none}.map-toolbar label:has(select){gap:6px}.map-toolbar label select{height:30px;padding:0 6px}.background-layer-list{max-height:260px}.placed-list>.background-layer-row{display:grid;grid-template-columns:1fr 58px 58px 66px 66px 30px;align-items:end}.background-layer-row>b{align-self:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.background-layer-row label{gap:2px;font-size:9px}.background-layer-row input{width:100%;height:28px!important;padding:2px 4px!important}.background-layer-row button{min-height:28px;padding:2px}
.map-edit-modes{display:flex;gap:6px;padding:5px;border:1px solid rgba(244,207,101,.24);border-radius:10px;background:rgba(5,12,20,.7)}.map-edit-modes button{flex:1;min-height:32px}.map-layer-panel header{display:flex;align-items:center;justify-content:space-between}.map-layer-panel header h2{margin:0}.map-layer-panel header button{min-height:30px;padding:3px 8px}.map-layer-list{display:grid;gap:4px;max-height:190px;overflow:auto}.map-layer-list>button,.map-layer-list>.is-background{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:34px;padding:6px 8px;border:1px solid rgba(255,255,255,.14);border-radius:7px;color:#dce7f3;background:#0d1723;text-align:left}.map-layer-list>button small,.map-layer-list>.is-background small{color:#8fa0b4;font-size:9px}.map-layer-list>.is-background{border-color:rgba(103,169,222,.35);background:linear-gradient(90deg,rgba(26,75,110,.35),rgba(13,23,35,.8))}.map-layer-order{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:7px}.map-layer-order button,#map-layer-remove{min-height:30px;padding:4px 5px;font-size:10px}#map-layer-remove{width:100%;margin-top:5px;color:#ffb0aa}
.map-toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:start!important}.map-toolbar-primary{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.map-toolbar-primary label{display:flex!important}.map-toolbar-folders{display:flex;gap:6px}.map-toolbar-folders details{position:relative}.map-toolbar-folders summary,.map-property-group>summary{list-style:none;cursor:pointer;user-select:none}.map-toolbar-folders summary::-webkit-details-marker,.map-property-group>summary::-webkit-details-marker{display:none}.map-toolbar-folders summary{min-height:38px;padding:9px 11px;border:1px solid rgba(255,255,255,.22);border-radius:8px;color:#e8eef7;background:#101b29;font-size:12px;font-weight:750}.map-toolbar-folders details[open] summary{border-color:#e8bd45;color:#fff3bd}.map-toolbar-folders details>div{position:absolute;z-index:30;top:44px;right:0;display:grid;width:245px;gap:6px;padding:9px;border:1px solid rgba(244,207,101,.4);border-radius:9px;background:#09131f;box-shadow:0 14px 35px rgba(0,0,0,.55)}.map-toolbar-folders details>div label{display:flex;justify-content:space-between}.map-toolbar-folders input[type=range]{display:block;width:120px}.map-property-group{border:1px solid rgba(255,255,255,.13);border-radius:9px;background:rgba(8,16,25,.72)}.map-property-group>summary{padding:10px 11px;color:#fff3bd;font-size:14px;font-weight:800}.map-property-group>summary::after{content:'▾';float:right;color:#91a2b7}.map-property-group:not([open])>summary::after{content:'▸'}.map-property-content{padding:0 9px 10px;border-top:1px solid rgba(255,255,255,.09)}.map-property-content>p{margin:8px 0}.map-layer-panel header{padding:8px 0;font-size:10px;color:#93a4b7}
.map-toolbar .map-brush-type{border-color:rgba(232,189,69,.6);background:rgba(104,69,7,.28)}.map-toolbar .map-brush-type select{min-width:142px}.map-toolbar-primary label:has(#map-brush-size),.map-toolbar-primary label:has(#map-brush-shape){border-style:solid;border-color:rgba(97,181,255,.3)}
.map-pixel-summary{margin:12px 0;padding:11px;border:1px solid rgba(244,207,101,.34);border-radius:9px;color:#fff3bd;background:rgba(140,93,6,.18);font-weight:750;text-align:center}.map-info-bar input[readonly]{color:#f5d77c;background:#0a121c;cursor:not-allowed}
.map-editor button.danger,.map-delete-dialog button.danger{border-color:rgba(255,91,103,.65);color:#ffd7da;background:rgba(145,25,38,.72)}.map-delete-warning{padding:10px;border:1px solid rgba(255,91,103,.4);border-radius:8px;color:#ffc4c8;background:rgba(115,18,29,.24);line-height:1.45}.map-delete-dialog label{display:grid;gap:5px;color:#cbd5e1}.map-delete-dialog input{width:100%;box-sizing:border-box}
.map-picker{position:relative;width:100%;min-width:0;container-type:inline-size}.map-picker summary{display:flex;align-items:center;min-width:0;height:30px;padding:0 25px 0 7px;overflow:hidden;border:1px solid rgba(255,255,255,.2);border-radius:7px;color:#dfe7f1;background:#101b29;cursor:pointer;font-size:clamp(8px,4cqi,10px);line-height:1.2;text-overflow:ellipsis;white-space:nowrap;list-style:none}.map-picker summary::-webkit-details-marker{display:none}.map-picker summary::after{content:"⌄";position:absolute;right:8px;color:#dce7f3;font-size:14px}.map-picker[open] summary{border-color:#e8bd45;border-radius:7px 7px 0 0}.map-picker-list{position:absolute;z-index:60;top:100%;left:0;box-sizing:border-box;width:100%;max-height:min(340px,42dvh);overflow:auto;border:1px solid rgba(255,255,255,.22);border-top:0;border-radius:0 0 7px 7px;background:#101b29;box-shadow:0 15px 34px rgba(0,0,0,.55)}.map-picker-list button{display:block;width:100%;min-height:24px;margin:0!important;padding:4px 7px!important;overflow:hidden;border:0!important;border-radius:0!important;color:#e6eef8!important;background:transparent!important;font-size:clamp(7px,3cqi,10px)!important;font-weight:600!important;line-height:1.25;text-align:left;text-overflow:ellipsis;white-space:nowrap}.map-picker-list button:hover,.map-picker-list button[aria-selected="true"]{color:#fff4bd!important;background:rgba(151,105,10,.56)!important}.map-picker-list p{margin:0;padding:8px;font-size:10px}

/* Cột công cụ tự co theo chiều rộng bảng, tránh chữ và ô điều khiển quá lớn. */
.map-library,.map-properties{container-type:inline-size}.map-library h2{font-size:clamp(11px,5cqi,14px)}.map-library h3{font-size:clamp(10px,4.6cqi,12px)}.map-library-top{gap:4px}.map-library-top>input{height:28px;padding:0 7px;font-size:clamp(9px,4cqi,12px)}.map-library-top>input::placeholder{font-size:inherit}.map-library-bottom{padding-top:6px}.map-library-bottom>header{padding-bottom:4px}.map-library-bottom>header span{font-size:clamp(8px,3.5cqi,10px)}
.map-properties{padding:5px}.map-properties>.map-property-group{margin-bottom:4px;border-radius:8px}.map-property-group>summary{padding:7px 8px;font-size:clamp(10px,5cqi,13px);line-height:1.2}.map-property-content{padding:0 7px 7px}.map-properties p{margin:6px 0;font-size:clamp(8px,3.7cqi,10px);line-height:1.35}.map-layer-panel header{padding:6px 0;font-size:clamp(8px,3.6cqi,10px)}.map-layer-panel header button{min-height:28px;padding:3px 7px;font-size:clamp(9px,3.8cqi,11px)}.map-layer-list{gap:3px;max-height:150px}.map-layer-list>button,.map-layer-list>.is-background{min-height:28px;padding:4px 6px;border-radius:6px;font-size:clamp(8px,3.6cqi,10px)}.map-layer-list>button small,.map-layer-list>.is-background small{font-size:clamp(7px,3cqi,9px)}.map-layer-order{gap:3px;margin-top:5px}.map-layer-order button,#map-layer-remove{min-height:29px;padding:3px 5px;font-size:clamp(8px,3.6cqi,10px)}#map-layer-remove{margin-top:4px}.map-properties input,.map-properties select{height:28px;padding:0 6px;font-size:clamp(8px,3.6cqi,10px)}
.map-properties #npc-select{height:104px!important;min-height:104px;padding:3px 5px;font-size:clamp(8px,3.6cqi,10px)}.map-properties #npc-select option{min-height:18px;padding:1px 2px;line-height:1.2}
.map-library{grid-template-rows:auto minmax(0,1fr)}.map-library-top{grid-template-rows:auto auto auto;align-content:start}.map-library-tile-panel{min-height:0;overflow:auto}.map-library-tile-panel .map-property-content{min-height:0}.map-library-tile-panel .tile-palette{max-height:none;height:100%}.map-properties summary #map-used-tile-count,.map-library summary #map-used-tile-count{float:right;margin-right:16px;color:#90a2b6;font-size:9px;font-weight:600}
.map-library{display:block!important;padding:5px;overflow:auto}.map-library>.map-property-group{margin-bottom:4px;border-radius:8px}.map-library .map-property-group>summary{padding:7px 8px;font-size:clamp(10px,5cqi,13px);line-height:1.2}.map-library .map-property-content{padding:0 7px 7px}.map-library .map-property-content>p{margin:6px 0;font-size:clamp(8px,3.7cqi,10px);line-height:1.35}.map-library .map-layer-panel header{padding:6px 0;font-size:clamp(8px,3.6cqi,10px)}.map-library .map-layer-panel header button{min-height:28px;padding:3px 7px;font-size:clamp(9px,3.8cqi,11px)}.map-library .map-layer-list>button,.map-library .map-layer-list>.is-background{font-size:clamp(8px,3.6cqi,10px)}.map-library .map-layer-order button,.map-library #map-layer-remove{min-height:29px;padding:3px 5px;font-size:clamp(8px,3.6cqi,10px)}.map-library #npc-select{height:104px!important;min-height:104px;padding:3px 5px;font-size:clamp(8px,3.6cqi,10px)}.map-library .map-property-content input,.map-library .map-property-content select{height:28px;padding:0 6px;font-size:clamp(8px,3.6cqi,10px)}.map-properties>.map-library-top{display:grid;grid-template-rows:auto auto auto;gap:4px;align-content:start;margin-bottom:5px}.map-properties>.map-library-top h2{margin:0;color:#fff3bd;font-size:clamp(11px,5cqi,14px)}.map-properties>.map-library-top>input{height:28px;padding:0 7px;font-size:clamp(9px,4cqi,12px)}
.map-properties .map-layer-list{gap:2px;max-height:112px}.map-properties .map-layer-row{grid-template-columns:minmax(0,1fr) 24px;gap:2px;border-radius:5px}.map-properties .map-layer-row>[data-layer-index]{min-height:24px;padding:3px 5px;gap:4px;font-size:clamp(7px,3.2cqi,9px);line-height:1.15}.map-properties .map-layer-row>[data-layer-index] span{min-width:0;font-size:inherit;overflow-wrap:anywhere}.map-properties .map-layer-row>[data-layer-index] small{font-size:clamp(7px,2.8cqi,8px);line-height:1.15}.map-properties .map-layer-row .map-layer-delete{min-width:24px;min-height:24px;padding:0;font-size:15px}.map-properties .map-layer-list>.is-background{min-height:23px;padding:3px 5px;font-size:clamp(7px,3cqi,9px)}.map-properties .map-layer-order{gap:2px;margin-top:4px}.map-properties .map-layer-order button,.map-properties #map-layer-remove{min-height:26px;padding:3px 4px;font-size:clamp(7px,3cqi,9px);line-height:1.1}.map-properties #map-layer-remove{margin-top:3px}
* { box-sizing: border-box; }
[hidden] { display:none !important; }
html, body { min-height: 100%; }
body { margin: 0; color: var(--ink); }
button, input { font: inherit; }
button { cursor: pointer; }
body[data-element="moc"] { --accent:#1f9a61; --accent-bright:#9cffc9; --accent-soft:rgba(31,154,97,.23); }
body[data-element="hoa"] { --accent:#e53826; --accent-bright:#ffbb45; --accent-soft:rgba(229,56,38,.26); }
body[data-element="tho"] { --accent:#ae7128; --accent-bright:#f0ca72; --accent-soft:rgba(174,113,40,.25); }
body[data-element="kim"] { --accent:#b48a18; --accent-bright:#fff3a8; --accent-soft:rgba(180,138,24,.25); }
body[data-element="thuy"] { --accent:#087fc6; --accent-bright:#8deaff; --accent-soft:rgba(8,127,198,.25); }
body[data-element="amhu"] { --accent:#7225bd; --accent-bright:#e6a5ff; --accent-soft:rgba(114,37,189,.25); }
body[data-element="duongthuc"] { --accent:#e5931a; --accent-bright:#fff1a3; --accent-soft:rgba(229,147,26,.25); }
.login-page { display:grid; place-items:center; min-height:100vh; overflow-x:hidden; overflow-y:auto; padding:32px 20px; background:#111722; transition:color 1.2s ease; }
.background-rotator, .background-slide { position:fixed; inset:0; }
.background-rotator { z-index:0; background:#101620; }
.background-slide { opacity:0; background-position:center; background-size:cover; transform:scale(1.025); transition:opacity 2.2s ease, transform 30s linear; }
.background-slide.is-visible { opacity:1; transform:scale(1); }
.background-rotator::after { content:""; position:absolute; inset:0; background:linear-gradient(110deg,rgba(5,9,16,.38),rgba(5,9,16,.06) 48%,rgba(5,9,16,.34)); }
.login-card { position:relative; z-index:3; width:min(100%,450px); padding:34px 42px 30px; border:2px solid var(--accent); border-radius:22px; color:#f8fbff; background:var(--surface); box-shadow:0 28px 90px rgba(0,0,0,.38),0 0 18px var(--accent-bright),inset 0 0 32px var(--accent-soft); backdrop-filter:blur(20px) saturate(1.15); transition:border-color 1.4s,box-shadow 1.4s,color 1.4s,background 1.4s; }
.login-logo-wrap { width:82px; height:82px; margin:0 auto 2px; }
.login-logo { width:100%; height:100%; object-fit:contain; border-radius:50%; opacity:1; filter:drop-shadow(0 0 14px var(--accent-bright)); transition:opacity 1.5s,filter 1.5s,transform 1.5s; }
.login-logo.is-changing, .app-logo.is-changing { opacity:0; transform:scale(.88); }
.login-wordmark { display:block; width:min(100%,360px); height:96px; margin:0 auto 12px; object-fit:contain; filter:drop-shadow(0 5px 7px rgba(0,0,0,.25)); }
.login-flow-label { margin:0 0 13px; color:var(--accent-bright); font-size:12px; font-weight:900; letter-spacing:.16em; text-align:center; text-shadow:0 2px 7px #000; }
.eyebrow { margin:0 0 5px; color:var(--accent); font-size:12px; font-weight:800; letter-spacing:.2em; text-shadow:0 0 15px var(--accent-soft); transition:color 1.4s; }
h1 { margin:0 0 26px; color:var(--ink); font-family:Georgia,"Times New Roman",serif; font-size:clamp(29px,4vw,36px); letter-spacing:-.025em; text-shadow:0 1px 0 rgba(255,255,255,.7),0 0 18px var(--accent-soft); }
label:not(.remember-row) { display:block; margin:15px 0 7px; font-size:14px; font-weight:700; }
.login-card label { text-shadow:0 2px 5px rgba(0,0,0,.85); }
input:not([type="checkbox"]) { width:100%; height:47px; padding:0 13px; border:1px solid rgba(79,92,110,.3); border-radius:10px; outline:none; background:var(--field); color:var(--ink); transition:border-color .2s,box-shadow .2s; }
input:not([type="checkbox"]):focus { border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }
.remember-row { display:flex; align-items:center; gap:9px; margin:13px 0 0; font-size:13px; font-weight:600; }
.remember-row input { width:17px; height:17px; accent-color:var(--accent); }
.primary-button { width:100%; height:47px; margin-top:5px; border:1px solid rgba(255,255,255,.35); border-radius:10px; background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 70%,#111)); color:white; font-weight:750; box-shadow:0 8px 22px var(--accent-soft); transition:filter .2s,transform .2s; }
.primary-button:hover { filter:brightness(1.12); transform:translateY(-1px); }
.primary-button:disabled { cursor:wait; opacity:.65; }
.error { min-height:20px; margin:8px 0 0; color:#b71919; font-size:13px; }
.account-links { display:flex; justify-content:space-between; gap:18px; margin-top:17px; }
.text-button { padding:0; border:0; background:none; color:var(--accent); font-size:12px; font-weight:700; }
.text-button:hover { text-decoration:underline; }
.petals { position:fixed; inset:0; z-index:2; overflow:hidden; pointer-events:none; }
.petal { position:absolute; top:-40px; width:14px; height:9px; border-radius:75% 15% 75% 15%; background:linear-gradient(135deg,#fff2f6,#f5a6bc 70%); box-shadow:0 0 5px rgba(255,180,205,.8); animation:petal-fall linear infinite; }
@keyframes petal-fall { to { transform:translate3d(var(--drift),110vh,0) rotate(720deg); } }
.placeholder-modal { width:min(94vw,980px); max-height:92vh; padding:0; overflow:auto; border:1px solid rgba(255,214,116,.6); border-radius:18px; color:#fff; background:#111821; box-shadow:0 30px 100px rgba(0,0,0,.55); }
.placeholder-modal::backdrop { background:rgba(5,10,18,.55); backdrop-filter:blur(4px); }
.modal-close { position:absolute; z-index:3; top:12px; right:14px; width:36px; height:36px; border:1px solid rgba(255,255,255,.5); border-radius:50%; color:#fff; background:rgba(8,12,18,.72); font-size:24px; }
.register-panel { position:relative; padding:44px 54px 46px; background:linear-gradient(rgba(5,9,16,.7),rgba(5,9,16,.82)),url('/img/banner/header/banner.png') center/cover no-repeat; }
.register-panel::before { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 50% 35%,rgba(255,207,91,.13),transparent 55%); }
.register-panel > * { position:relative; z-index:1; }
.register-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding-right:44px; margin-bottom:18px; }
.register-heading h2 { margin:0; color:#fff3bd; font-family:Georgia,"Times New Roman",serif; font-size:34px; text-shadow:0 2px 8px #000,0 0 18px rgba(255,193,54,.65); }
.register-panel label { display:block; margin:13px 0 6px; color:#fff5cf; font-size:14px; font-weight:800; text-shadow:0 2px 5px #000; }
.register-panel label span { color:#d92d20; }
.register-panel input { height:45px; color:#111827; background:rgba(255,255,255,.94); }
.field-message,.field-hint { min-height:17px; margin:5px 0 0; color:#f2e4b3; font-size:12px; text-shadow:0 1px 4px #000; }
.field-message.is-valid { color:#7dffb5; }
.field-message.is-invalid { color:#ff9b92; }
.register-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.email-send-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.secondary-button { min-height:45px; padding:0 16px; border:1px solid #f5cb65; border-radius:10px; color:#fff7d6; background:linear-gradient(#8f6726,#65420c); font-weight:800; cursor:pointer; }
.verification-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:10px; max-width:560px; }
.verification-row .secondary-button { margin-bottom:0; }
.register-status { min-height:20px; margin:14px 0 0; font-size:13px; font-weight:650; }
.register-status.is-error { color:#ff9b92; text-shadow:0 1px 4px #000; }
.register-status.is-success { color:#7dffb5; text-shadow:0 1px 4px #000; }
.register-submit:disabled,.secondary-button:disabled { opacity:.48; cursor:not-allowed; filter:grayscale(.5); }
.register-submit { margin-top:7px; }
.recover-panel { min-height:380px; }
.recovered-account { margin:4px 0 18px; padding:12px 15px; border:1px solid rgba(125,255,181,.42); border-radius:10px; color:#dffff0; background:rgba(20,120,72,.22); font-size:16px; }
.workspace-page { --page:#f7f8fa; --panel:#fff; min-height:100vh; overflow-x:hidden; overflow-y:auto; background:var(--page); transition:background .3s,color .3s; }
.workspace-page.is-dark { color-scheme:dark; --page:#101318; --panel:#171b22; --ink:#eef2f7; --muted:#a7b0be; }
.app-header { position:relative; z-index:10; height:clamp(120px,14vw,190px); overflow:hidden; border-bottom:1px solid rgba(100,82,52,.25); background:radial-gradient(circle at 50% 45%,#bda77f 0,#5a4a36 45%,#16191d 100%); box-shadow:0 5px 22px rgba(0,0,0,.18); }
.header-banner { position:absolute; inset:0; opacity:0; background-position:center; background-size:100% 100%; background-repeat:no-repeat; transition:opacity 2s ease; }
.header-banner.is-visible { opacity:1; }
.app-header::before { content:""; position:absolute; z-index:11; inset:0; background:radial-gradient(ellipse at center,transparent 44%,rgba(15,13,16,.23) 78%,rgba(5,7,10,.58) 100%),linear-gradient(90deg,rgba(235,222,193,.12),transparent 22%,transparent 78%,rgba(235,222,193,.12)); mix-blend-mode:multiply; pointer-events:none; }
.app-header::after { content:""; position:absolute; z-index:12; inset:0; background:linear-gradient(90deg,rgba(5,8,13,.32),rgba(5,8,13,.04) 43%,rgba(5,8,13,.28)); pointer-events:none; }
.app-logo { position:absolute; z-index:13; left:clamp(20px,5vw,76px); top:50%; width:clamp(70px,8vw,120px); height:clamp(70px,8vw,120px); object-fit:contain; border-radius:50%; transform:translateY(-50%); filter:drop-shadow(0 0 16px var(--accent-bright)); transition:opacity 1.5s,filter 1.5s,transform 1.5s; }
.app-logo.is-changing { transform:translateY(-50%) scale(.88); }
.wordmark { position:absolute; z-index:20; left:50%; top:50%; width:min(42vw,540px); max-height:155px; object-fit:contain; transform:translate(-50%,-48%); filter:drop-shadow(0 10px 13px rgba(0,0,0,.45)); }
.header-actions { position:absolute; z-index:22; top:8px; right:10px; display:flex; align-items:center; gap:5px; }
.header-greeting { position:absolute; top:34px; right:2px; width:max-content; margin:7px 0 0; color:#fff7d6; font-size:12px; font-weight:750; text-shadow:0 2px 6px #000; }
.icon-button,.language-button,.logout-button { width:auto; margin:0; border:1px solid rgba(255,255,255,.45); color:white; background:rgba(10,15,24,.44); backdrop-filter:blur(8px); }
.icon-button { width:34px; height:32px; border-radius:8px; font-size:17px; }
.language-menu { position:relative; color:white; }
.language-menu summary { list-style:none; }
.language-menu summary::-webkit-details-marker { display:none; }
.language-summary { display:flex; align-items:center; gap:5px; height:32px; padding:0 7px; border:1px solid rgba(255,255,255,.45); border-radius:8px; background:rgba(10,15,24,.55); backdrop-filter:blur(8px); font-size:11px; font-weight:700; cursor:pointer; }
.language-summary img { width:22px; height:15px; border-radius:3px; object-fit:cover; }
.language-summary b { margin-left:1px; font-size:10px; transition:transform .2s; }
.language-menu[open] .language-summary b { transform:rotate(180deg); }
.language-switcher { position:absolute; top:38px; right:0; display:grid; min-width:132px; gap:3px; padding:5px; border:1px solid rgba(255,255,255,.32); border-radius:10px; background:rgba(10,15,24,.9); box-shadow:0 12px 34px rgba(0,0,0,.35); backdrop-filter:blur(10px); }
.language-button { display:flex; align-items:center; gap:7px; width:100%; height:34px; padding:0 7px; border:0; border-radius:7px; color:white; background:transparent; font-size:11px; text-align:left; }
.language-button:hover { background:rgba(255,255,255,.13); }
.language-button img { width:24px; height:16px; border-radius:3px; object-fit:cover; box-shadow:0 0 0 1px rgba(255,255,255,.42); }
.language-button.is-active { outline:2px solid var(--accent-bright); background:rgba(10,15,24,.72); }
.logout-button { height:32px; padding:0 10px; border-radius:8px; font-size:12px; font-weight:700; }
.blank-workspace { position:relative; min-height:max(calc(100vh - clamp(120px,14vw,190px)),calc(100vw * var(--workspace-height-ratio))); overflow:hidden; background:#101318; }
.workspace-background { position:absolute; inset:0; opacity:0; background-position:center top; background-size:contain; background-repeat:no-repeat; transform:scale(1.012); transform-origin:center top; transition:opacity 2.2s ease,transform 30s linear; }
.workspace-background.is-visible { opacity:1; transform:scale(1); }
.workspace-shade { position:absolute; z-index:1; inset:0; background:linear-gradient(180deg,rgba(8,11,16,.25),rgba(8,11,16,.08) 45%,rgba(8,11,16,.34)); transition:background .3s; }
.workspace-page:not(.is-dark) .workspace-shade { background:linear-gradient(180deg,rgba(248,250,252,.16),rgba(255,255,255,.05) 45%,rgba(14,20,29,.18)); }
.app-petals { position:fixed; inset:0; z-index:21; }
.admin-dashboard { position:relative; z-index:5; width:min(1180px,calc(100% - 360px)); margin:28px 28px 28px 330px; padding:26px; border:1px solid rgba(255,255,255,.28); border-radius:20px; color:#f7fbff; background:rgba(8,14,24,.78); box-shadow:0 24px 70px rgba(0,0,0,.38); backdrop-filter:blur(15px) saturate(1.15); transition:width .25s ease,margin-left .25s ease; }
.admin-sidebar { position:absolute; z-index:40; inset:0 auto 0 0; width:390px; overflow-x:hidden; overflow-y:auto; border-right:1px solid rgba(255,255,255,.28); color:#f7fbff; background:rgba(8,14,24,.96); box-shadow:12px 20px 55px rgba(0,0,0,.5); backdrop-filter:blur(16px) saturate(1.15); transition:width .25s ease; }
.auth-pending .admin-sidebar,.auth-pending .status-rail,.is-player .admin-sidebar,.is-player .status-rail { display:none; }
.sidebar-heading { display:flex; align-items:center; justify-content:space-between; min-height:58px; padding:10px 12px 10px 18px; border-bottom:1px solid rgba(255,255,255,.13); }
.sidebar-title { color:var(--accent-bright); font-size:11px; font-weight:900; letter-spacing:.16em; white-space:nowrap; }
.sidebar-toggle { flex:0 0 auto; width:38px; height:38px; border:1px solid rgba(255,255,255,.3); border-radius:10px; color:#fff; background:rgba(255,255,255,.08); font-size:20px; line-height:1; }
.sidebar-details { padding:16px 14px 8px; border-bottom:1px solid rgba(255,255,255,.13); }
.character-card { text-align:center; }
.character-card h2 { margin:0 0 5px; color:#fff4bd; font-family:Georgia,"Times New Roman",serif; font-size:25px; text-shadow:0 2px 8px #000; }
.character-card p { margin:4px 0; color:#d9e1ec; font-size:12px; }
.character-preview { position:relative; width:180px; height:184px; margin:0 auto 5px; overflow:hidden; border-radius:15px; background:radial-gradient(circle at 50% 68%,rgba(75,199,255,.2),transparent 56%); }
.character-part { position:absolute; width:auto; height:auto; image-rendering:pixelated; pointer-events:none; }
.status-rail { position:absolute; z-index:9; top:0; right:0; display:grid; width:62px; gap:7px; padding:8px 7px; border:1px solid rgba(255,255,255,.25); border-right:0; border-radius:14px 0 0 14px; color:#fff; background:rgba(8,14,24,.9); box-shadow:-8px 12px 35px rgba(0,0,0,.35); backdrop-filter:blur(14px); }
.rail-refresh { width:46px; height:34px; border:1px solid rgba(255,255,255,.25); border-radius:9px; color:#fff; background:rgba(255,255,255,.08); font-size:18px; }
.rail-status { display:grid; place-items:center; min-height:58px; padding:7px 2px; border:1px solid rgba(255,255,255,.14); border-radius:10px; background:rgba(0,0,0,.2); }
.rail-status .status-dot { width:9px; height:9px; margin-bottom:5px; }
.rail-status b { font-size:10px; letter-spacing:.04em; }
.rail-status small,.rail-updated { display:none; }
.player-manager { position:absolute; z-index:7; inset:0 70px 0 68px; display:grid; grid-template-columns:270px minmax(620px,1fr) 230px; gap:10px; padding:10px; overflow:auto; color:#eef4fb; background:rgba(5,10,18,.82); backdrop-filter:blur(8px); }
.player-manager[hidden] { display:none !important; }
.player-directory,.panel-box,.character-tabs-header { border:1px solid rgba(255,255,255,.18); border-radius:13px; background:rgba(8,15,25,.9); box-shadow:0 12px 35px rgba(0,0,0,.22); }
.player-directory { min-height:0; overflow:hidden; }
.player-directory > header { display:flex; align-items:center; justify-content:space-between; padding:12px; border-bottom:1px solid rgba(255,255,255,.14); }
.directory-tools{display:flex;gap:5px}.player-filters-hidden .player-filters{display:none}.player-filters-hidden .player-list{height:calc(100vh - 165px)}
.player-directory h2,.character-tabs-header h2,.panel-box h3 { margin:0; color:#fff3bd; }
.player-directory header button { width:38px; height:34px; border:1px solid rgba(255,255,255,.25); border-radius:8px; color:#fff; background:rgba(255,255,255,.08); font-size:19px; }
.player-filters { display:grid; gap:7px; padding:10px; border-bottom:1px solid rgba(255,255,255,.12); }
.player-filters input,.player-filters select { width:100%; height:36px; padding:0 9px; border:1px solid rgba(255,255,255,.18); border-radius:8px; color:#eef4fb; background:#101a28; }
.player-filters button { height:36px; border:1px solid var(--accent-bright); border-radius:8px; color:#fff; background:var(--accent); font-weight:750; }
.player-list { height:calc(100vh - 355px); overflow:auto; padding:8px; }
.player-row { width:100%; margin-bottom:6px; padding:9px; border:1px solid rgba(255,255,255,.12); border-radius:9px; color:#eef4fb; background:rgba(255,255,255,.04); text-align:left; }
.player-row:hover,.player-row.is-active { border-color:var(--accent-bright); background:var(--accent-soft); }
.player-row b,.player-row small { display:block; }.player-row small{margin-top:3px;color:#aeb9c8;white-space:normal}
.player-detail { min-width:0; overflow:auto; }
.character-tabs-header { display:flex; align-items:center; justify-content:space-between; min-height:66px; padding:10px 14px; }
.character-tabs-header p { margin:4px 0 0; color:#aeb9c8; font-size:12px; }
.character-tabs { display:flex; gap:6px; }.character-tabs button{padding:8px 11px;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;background:rgba(255,255,255,.06)}.character-tabs button.is-active{border-color:var(--accent-bright);background:var(--accent-soft)}
.player-top-grid { display:grid; grid-template-columns:1.2fr .9fr .9fr; gap:10px; margin-top:10px; }
.panel-box { padding:12px; }
.equipment-stage { position:relative; min-height:300px; overflow:hidden; }
.panel-select{height:36px;max-width:100%;padding:0 9px;border:1px solid rgba(255,223,133,.35);border-radius:8px;color:#fff3bd;background:#101a28;font-weight:750}
.detail-character-preview { position:absolute; left:50%; top:50%; width:180px; height:210px; transform:translate(-50%,-48%); background:radial-gradient(circle,rgba(63,190,255,.16),transparent 62%); }
.equipment-u { position:absolute; inset:54px 16px 65px; display:grid; grid-template-columns:repeat(2,46px); align-content:space-between; justify-content:space-between; pointer-events:none; }
.equipment-slot,.item-slot { display:grid; place-items:center; width:44px; height:44px; border:1px solid rgba(255,223,133,.32); border-radius:8px; color:#7f8a98; background:rgba(0,0,0,.28); font-size:11px; }
.equipment-switch { position:absolute; right:12px; top:12px; display:flex; gap:5px; }.equipment-switch button{padding:6px 9px;border:1px solid rgba(255,255,255,.2);border-radius:7px;color:#fff;background:rgba(255,255,255,.06)}.equipment-switch .is-active{border-color:var(--accent-bright)}
.equipment-extra{position:absolute;left:64px;right:64px;bottom:8px;display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.equipment-extra span{display:grid;place-items:center;min-height:42px;padding:3px;border:1px solid rgba(255,223,133,.28);border-radius:6px;color:#9ba7b5;font-size:9px;text-align:center}
.equipment-extra[hidden],.equipment-switch button[hidden]{display:none}.equipment-u[data-view="mount"],.equipment-u[data-view="beast"]{grid-template-columns:repeat(2,72px)}.equipment-u[data-view="mount"] .equipment-slot,.equipment-u[data-view="beast"] .equipment-slot{width:70px;padding:3px;text-align:center}
.stat-panel dl,.account-panel dl { display:grid; grid-template-columns:1fr auto; gap:7px 10px; margin:12px 0 0; font-size:12px; }.stat-panel dt,.account-panel dt{color:#aeb9c8}.stat-panel dd,.account-panel dd{margin:0;color:#fff;font-weight:700}
.task-edit-button{width:100%;margin-top:12px;min-height:34px;border:1px solid rgba(255,215,107,.45);border-radius:8px;color:#fff1ae;background:rgba(181,128,15,.18);font-weight:750}.task-template-detail{max-height:100px;overflow:auto;padding:9px;border-radius:8px;color:#b8c3d1;background:rgba(255,255,255,.04);line-height:1.45}
.storage-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px; }
.storage-panel { min-height:300px; }.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:5px;margin-top:10px}.storage-panel footer{margin-top:10px;padding-top:8px;border-top:1px solid rgba(255,255,255,.12);color:#ffd976;font-size:12px}
.cell-editor{display:flex;justify-content:flex-end;gap:5px;margin-top:8px}.cell-editor button,.cell-editor input{width:38px;height:30px;border:1px solid rgba(255,223,133,.35);border-radius:6px;color:#fff;background:#101a28;text-align:center}.cell-editor input{width:58px}
.cell-editor-label{align-self:center;margin-right:5px;color:#9eabba;font-size:10px}.capacity-note{display:block;margin-top:7px;color:#e7c969;font-size:10px;line-height:1.4}
.player-actions { overflow:auto; }.player-actions h3{margin-bottom:10px}.player-actions button{width:100%;min-height:38px;margin-bottom:7px;border:1px solid rgba(255,255,255,.18);border-radius:8px;color:#eef4fb;background:rgba(255,255,255,.06);text-align:left}.player-actions button.warning{border-color:rgba(255,100,100,.45);color:#ffb0b0}.player-actions button:disabled{opacity:.45;cursor:not-allowed}.player-actions p{color:#f0c86c;font-size:11px;line-height:1.45}
.directory-collapsed .player-manager { grid-template-columns:58px minmax(620px,1fr) 230px; }.directory-collapsed .player-filters,.directory-collapsed .player-list,.directory-collapsed .player-directory h2{display:none}.directory-collapsed .player-directory>header{justify-content:center;padding:10px}
.player-module-open .status-rail{display:none}.player-module-open .player-manager{right:0}
@media(max-width:1250px){.player-manager{grid-template-columns:230px minmax(600px,1fr)}.player-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.player-actions h3,.player-actions p{grid-column:1/-1}.player-actions button{margin:0}.player-top-grid{grid-template-columns:1fr 1fr}.equipment-stage{grid-row:span 2}}
.admin-dialog{width:min(920px,calc(100vw - 40px));max-height:88vh;padding:0;border:1px solid rgba(255,223,133,.45);border-radius:15px;color:#eef4fb;background:#08111d;box-shadow:0 25px 80px #000}.admin-dialog::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(4px)}.admin-dialog form{padding:16px}.admin-dialog header,.admin-dialog footer,.catalog-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px}.admin-dialog header{border-bottom:1px solid rgba(255,255,255,.13);padding-bottom:10px}.admin-dialog header h2{margin:0;color:#fff3bd}.admin-dialog button,.admin-dialog input,.admin-dialog select,.admin-dialog textarea{border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#eef4fb;background:#101b29}.admin-dialog button{min-height:36px;padding:7px 12px}.admin-dialog input,.admin-dialog select,.admin-dialog textarea{padding:8px}.stats-editor-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:60vh;overflow:auto;margin:12px 0}.stats-editor-fields label,.item-editor label{display:grid;gap:4px;color:#aeb9c8;font-size:12px}.stats-editor-fields .wide,.item-editor .wide{grid-column:1/-1}.catalog-toolbar{margin:12px 0}.catalog-toolbar input{flex:1}.item-catalog-dialog form{display:grid;grid-template-columns:1fr 300px;gap:10px}.item-catalog-dialog header,.item-catalog-dialog .catalog-toolbar{grid-column:1/-1}.item-catalog-list{display:grid;gap:5px;max-height:60vh;overflow:auto}.item-catalog-list button{text-align:left}.item-catalog-list button.is-active{border-color:#ffd76b;background:rgba(187,137,15,.24)}.item-editor{display:grid;align-content:start;gap:8px;padding:10px;border:1px solid rgba(255,255,255,.14);border-radius:10px}.item-editor h3{margin:0;color:#fff3bd}
.sidebar-list { display:grid; gap:5px; padding:9px; }
.sidebar-item { display:flex; align-items:center; gap:12px; width:100%; min-height:62px; padding:9px 12px; overflow:hidden; border:1px solid transparent; border-radius:11px; color:#dfe7f1; background:transparent; text-align:left; white-space:nowrap; }
.sidebar-item:hover { border-color:rgba(255,255,255,.2); background:rgba(255,255,255,.08); }
.sidebar-item.is-active { border-color:color-mix(in srgb,var(--accent-bright) 52%,transparent); background:var(--accent-soft); }
.sidebar-icon { display:grid; flex:0 0 auto; place-items:center; width:34px; height:34px; border-radius:9px; color:#fff; background:rgba(255,255,255,.1); font-size:19px; }
.sidebar-copy { min-width:0; }
.sidebar-copy b,.sidebar-copy small { display:block; }
.sidebar-copy small { margin-top:4px; color:#aeb8c7; font-size:11px; }
.sidebar-collapsed .admin-sidebar { width:68px; }
.sidebar-collapsed .sidebar-title,.sidebar-collapsed .sidebar-copy,.sidebar-collapsed .sidebar-details,.sidebar-collapsed .module-notice { display:none; }
.sidebar-collapsed .sidebar-heading { justify-content:center; padding:10px; }
.sidebar-collapsed .sidebar-item { justify-content:center; padding:9px 7px; }
.sidebar-collapsed .admin-dashboard { width:min(1180px,calc(100% - 142px)); margin-left:96px; }
.sidebar-hover-label { position:fixed; z-index:80; max-width:260px; padding:8px 12px; opacity:0; transform:translateY(-50%) translateX(-5px); pointer-events:none; border:1px solid color-mix(in srgb,var(--accent-bright) 48%,rgba(255,255,255,.3)); border-radius:9px; color:#fff; background:rgba(7,13,22,.96); box-shadow:0 9px 28px rgba(0,0,0,.42); font-size:13px; font-weight:800; line-height:1.2; white-space:nowrap; transition:opacity .14s ease,transform .14s ease; }
.sidebar-hover-label.is-visible { opacity:1; transform:translateY(-50%) translateX(0); }
.module-notice { min-height:20px; margin:2px 12px 12px; color:var(--accent-bright); font-size:12px; font-weight:700; }
.dashboard-heading { display:flex; align-items:center; justify-content:space-between; gap:22px; }
.dashboard-kicker { margin:0 0 5px; color:var(--accent-bright); font-size:11px; font-weight:850; letter-spacing:.18em; }
.dashboard-heading h1 { margin:0 0 5px; color:#fff; text-shadow:0 2px 10px #000; }
.dashboard-subtitle,.status-updated { margin:0; color:#cbd5e1; font-size:13px; }
.dashboard-refresh { min-height:40px; padding:0 15px; border:1px solid rgba(255,255,255,.36); border-radius:10px; color:#fff; background:rgba(255,255,255,.1); font-weight:700; }
.dashboard-refresh:disabled { opacity:.55; cursor:wait; }
.status-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:24px 0; }
.status-card { display:flex; align-items:center; gap:12px; min-height:78px; padding:15px; border:1px solid rgba(255,255,255,.16); border-radius:14px; background:rgba(4,10,18,.64); }
.status-card b,.status-card small { display:block; }
.status-card small { margin-top:4px; color:#aeb8c7; font-size:11px; overflow-wrap:anywhere; }
.status-dot { flex:0 0 auto; width:12px; height:12px; border-radius:50%; background:#7e8794; box-shadow:0 0 0 5px rgba(126,135,148,.16); }
.status-card.is-online .status-dot { background:#39d98a; box-shadow:0 0 0 5px rgba(57,217,138,.16),0 0 14px #39d98a; }
.status-card.is-offline .status-dot { background:#ff5964; box-shadow:0 0 0 5px rgba(255,89,100,.15); }
.status-updated { margin-top:15px; text-align:right; }
.sound-control { display:flex; align-items:center; gap:4px; height:32px; padding:0 5px; border:1px solid rgba(255,255,255,.45); border-radius:8px; color:white; background:rgba(10,15,24,.48); backdrop-filter:blur(8px); }
.sound-toggle { width:25px; height:28px; padding:0; border:0; background:transparent; font-size:15px; }
.sound-control .volume-slider { flex:0 0 auto; width:0; height:4px; min-width:0; padding:0; border:0; opacity:0; background:transparent; accent-color:var(--accent-bright); transition:width .2s,opacity .2s; }
.sound-control:hover .volume-slider,.sound-control:focus-within .volume-slider { width:72px; opacity:1; }
.login-sound-control { position:fixed; z-index:8; top:14px; right:14px; }
.header-sound-control { flex:none; }

/* Chuyển cảnh: nứt màn hình, mảnh vỡ bị hút vào xoáy khói âm dương */
.transition-video-layer { position:fixed; z-index:100; inset:0; display:grid; place-items:center; visibility:hidden; opacity:0; background:#000; pointer-events:none; transition:opacity .45s ease; }
.transition-video-layer.is-active { visibility:visible; opacity:1; }
.transition-video-layer video { width:100%; height:100%; object-fit:cover; }
/* Sai thông tin: chỉ rung giao diện, không sét và không xoáy. */
.login-page.is-login-error { animation:login-error-shake .065s linear 9; }
.login-page.is-login-error .login-card { border-color:#ff394f; box-shadow:0 0 22px rgba(255,35,67,.9),inset 0 0 28px rgba(120,0,18,.35); }
@keyframes login-error-shake {
  0%,100%{transform:translate3d(0,0,0)}
  20%{transform:translate3d(-10px,2px,0)}
  40%{transform:translate3d(9px,-3px,0)}
  60%{transform:translate3d(-7px,-2px,0)}
  80%{transform:translate3d(6px,3px,0)}
}

@media (max-width:720px) { .login-card{padding:28px 24px 24px}.account-links{flex-direction:column;gap:10px;align-items:flex-start}.wordmark{width:52vw}.language-button span{display:none}.logout-button{font-size:0;width:38px;padding:0}.logout-button::before{content:"↪";font-size:19px} }
@media (max-width:650px) { .admin-sidebar{width:min(390px,calc(100% - 14px))}.sidebar-collapsed .admin-sidebar{width:68px}.dashboard-heading{align-items:flex-start;flex-direction:column} }
@media (max-width:620px) { .register-panel{padding:32px 20px}.register-heading{display:block;padding-right:38px}.register-grid{grid-template-columns:1fr}.verification-row{grid-template-columns:1fr}.verification-row .secondary-button{width:100%} }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important} }

/* Trình sửa chỉ số thân thiện và thông báo riêng của ứng dụng */
.stats-editor-fields{grid-template-columns:repeat(3,1fr);gap:9px;padding-right:5px}.stats-editor-fields label{gap:5px;color:#d6deea}.stats-editor-fields label>span{font-weight:750}.stats-editor-fields label>small{color:#8995a5;line-height:1.35}.stats-group{grid-column:1/-1;margin-top:7px;padding:10px 12px 8px;border-left:3px solid #e4b846;border-radius:0 8px 8px 0;background:linear-gradient(90deg,rgba(228,184,70,.12),transparent)}.stats-group:first-child{margin-top:0}.stats-group h3{margin:0;color:#fff0ae;font-size:15px}.stats-group p{margin:4px 0 0;color:#9eabba;font-size:11px}.calculated-stat{color:#9eabba!important;background:#0b1420!important;cursor:not-allowed}.skill-stat-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:8px;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:rgba(255,255,255,.025)}.compact-dialog{width:min(460px,calc(100vw - 30px))}.compact-dialog form>label{display:grid;gap:5px;margin:10px 0;color:#d6deea}.compact-dialog footer{margin-top:16px}
.toast-stack{position:fixed;z-index:10000;top:18px;right:18px;display:grid;gap:10px;width:min(390px,calc(100vw - 36px));pointer-events:none}.app-toast{display:grid;grid-template-columns:36px 1fr 28px;align-items:center;gap:10px;min-height:64px;padding:10px 11px;border:1px solid rgba(255,224,139,.4);border-radius:13px;color:#f5f7fb;background:linear-gradient(135deg,rgba(10,20,33,.98),rgba(21,28,39,.97));box-shadow:0 18px 50px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.06);backdrop-filter:blur(14px);pointer-events:auto;animation:toast-in .24s ease-out}.app-toast.is-leaving{opacity:0;transform:translateX(24px);transition:.18s ease}.app-toast p{margin:0;font-size:13px;line-height:1.45}.app-toast button{width:28px;height:28px;padding:0;border:0;border-radius:7px;color:#b9c3d0;background:transparent;font-size:20px}.toast-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#07121c;background:#70bfff;font-weight:900;box-shadow:0 0 16px rgba(112,191,255,.38)}.app-toast.is-success{border-color:rgba(67,220,143,.46)}.app-toast.is-success .toast-icon{background:#43dc8f}.app-toast.is-warning{border-color:rgba(255,195,75,.5)}.app-toast.is-warning .toast-icon{background:#ffc34b}.app-toast.is-error{border-color:rgba(255,91,103,.52)}.app-toast.is-error .toast-icon{background:#ff5b67;color:white}@keyframes toast-in{from{opacity:0;transform:translateX(34px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:760px){.stats-editor-fields{grid-template-columns:1fr 1fr}.toast-stack{top:10px;right:10px;width:calc(100vw - 20px)}}
.item-slot{position:relative;overflow:hidden;padding:2px}.item-slot .item-icon{display:block;max-width:100%;max-height:100%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 2px 2px rgba(0,0,0,.75))}.item-slot .item-quantity{position:absolute;right:2px;bottom:1px;padding:0 3px;border-radius:4px;color:#fff7ca;background:rgba(0,0,0,.78);font-size:9px;font-weight:850;line-height:15px;text-shadow:0 1px 2px #000}.item-slot.missing-icon::after{content:"?";color:#778394;font-weight:800}
.item-catalog-list .catalog-item{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:45px;padding:4px 10px;text-align:left}.catalog-item img{width:34px;height:34px;object-fit:contain;image-rendering:pixelated}.catalog-item img.is-missing{visibility:hidden}.catalog-item span{overflow:hidden;color:#f4f7fb;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.catalog-item small{color:#9da8b6;white-space:nowrap}.item-option-editor{display:grid;gap:8px;padding:10px;border:1px solid rgba(255,218,116,.24);border-radius:9px;background:rgba(255,255,255,.025)}.item-option-editor>b{color:#fff0ae}.item-option-picker{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:6px}.item-option-picker select{min-width:0}.item-option-picker button{padding:0;font-size:22px}.item-option-rows{display:grid;gap:6px;max-height:180px;overflow:auto}.item-option-row{display:grid;grid-template-columns:minmax(0,1fr) 92px 34px;align-items:center;gap:6px;padding:6px;border:1px solid rgba(255,255,255,.12);border-radius:7px;background:#0c1623}.item-option-row span{overflow:hidden;color:#dce4ef;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.item-option-row input{width:100%;min-width:0}.item-option-row button{min-height:34px;padding:0;color:#ff9c9c;font-size:19px}
.equipment-slot{position:relative;overflow:hidden;padding:2px}.equipment-slot .equipment-icon{display:block;max-width:100%;max-height:100%;margin:auto;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 2px 2px rgba(0,0,0,.78))}.equipment-slot .equipment-upgrade{position:absolute;right:2px;bottom:1px;padding:0 3px;border-radius:4px;color:#ffef8b;background:rgba(0,0,0,.8);font-size:9px;font-weight:900;line-height:14px}
.item-catalog-dialog form{grid-template-columns:minmax(0,1.35fr) minmax(360px,.9fr)}.item-editor{gap:10px}.item-lock-row{display:flex!important;align-items:center;gap:8px!important;min-height:34px}.item-lock-row input{width:17px;height:17px;margin:0}.equipment-only[hidden]{display:none!important}.item-option-editor>p{margin:0;padding:7px;border-radius:6px;color:#9ca8b7;background:rgba(255,255,255,.035);font-size:11px;line-height:1.4}.item-option-picker{margin-top:2px}.item-option-row{grid-template-columns:minmax(0,1fr) 90px 38px 32px}.item-option-row em{color:#f3cf69;font-size:10px;font-style:normal;text-align:center}.item-option-row input{text-align:right}
.toast-stack{z-index:2147483647!important;inset:auto auto clamp(18px,4vh,42px) 50%!important;width:min(430px,calc(100vw - 36px))!important;margin:0!important;padding:0!important;overflow:visible!important;border:0!important;background:transparent!important;transform:translateX(-50%)}.app-toast{grid-template-columns:34px minmax(0,1fr);min-height:54px;padding:9px 13px}.app-toast p{font-size:13px;line-height:1.4}.app-toast.is-leaving{transform:translateY(18px) scale(.97)!important}
.announcement-manager{position:absolute;z-index:8;inset:0 0 0 68px;overflow:auto;padding:24px;color:#eef4fb;background:rgba(4,9,16,.9);backdrop-filter:blur(10px)}.announcement-manager[hidden]{display:none!important}.announcement-manager>header{display:flex;align-items:center;justify-content:space-between;margin:0 auto 18px;max-width:1200px}.announcement-manager header p{margin:0;color:#f4cf65;font-weight:850;letter-spacing:.15em}.announcement-manager h1{margin:5px 0 0;color:#fff3bd}.announcement-active{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid rgba(255,215,107,.45);border-radius:10px;background:#101b29}.announcement-workbench{display:grid;grid-template-columns:minmax(480px,1fr) minmax(420px,1fr);gap:18px;max-width:1200px;margin:auto}.announcement-editor{display:grid;gap:14px;padding:16px}.announcement-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.announcement-toolbar select,.announcement-toolbar input,.announcement-banner-label select,.announcement-content-label textarea{border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#eef4fb;background:#101b29}.announcement-toolbar select{height:40px;padding:0 9px}.announcement-toolbar label{display:flex;align-items:center;gap:6px}.announcement-toolbar input[type=number]{width:72px;padding:8px}.announcement-toolbar input[type=color]{width:44px;height:38px;padding:3px}.align-buttons{display:flex;gap:3px}.align-buttons button,.announcement-editor footer button{min-height:38px;padding:7px 12px;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;background:#152131}.align-buttons button.is-active,.announcement-editor footer .primary{border-color:#e7b735;background:#8b6308}.announcement-banner-label,.announcement-content-label{display:grid;gap:7px;color:#cbd5e1}.announcement-banner-label select{height:42px;padding:0 10px}.announcement-content-label textarea{min-height:220px;padding:14px;resize:vertical;font:inherit}.announcement-editor footer{display:flex;justify-content:flex-end;gap:8px}.announcement-display{width:min(900px,calc(100vw - 30px));padding:0;border:0;outline:0;background:transparent}.announcement-display:focus,.announcement-display:focus-visible{outline:0}.announcement-display::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(6px)}.announcement-card{position:relative;display:grid;place-items:center;min-height:300px;overflow:hidden;border:1px solid rgba(255,215,107,.55);border-radius:20px;background:linear-gradient(135deg,#111b28,#050a11);background-position:center;background-size:cover;box-shadow:0 28px 90px #000}.announcement-card:before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.46)}.announcement-card>button{position:absolute;z-index:2;top:12px;right:12px;width:40px;height:40px;border:1px solid rgba(255,255,255,.45);border-radius:50%;color:#fff;background:rgba(3,8,14,.7);font-size:24px}.announcement-copy{position:relative;z-index:1;width:min(82%,760px);padding:55px 20px;white-space:pre-wrap;overflow-wrap:anywhere;text-shadow:0 2px 8px #000}.announcement-help{color:#adb9c8;line-height:1.6}@media(max-width:950px){.announcement-workbench{grid-template-columns:1fr}.announcement-manager{padding:14px}}
.announcement-toolbar>button{min-width:38px;height:38px;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;background:#152131;font-size:16px}.announcement-rich-editor{min-height:220px;padding:14px;overflow:auto;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#eef4fb;background:#101b29;outline:none;white-space:pre-wrap}.announcement-rich-editor:empty:before{content:attr(data-placeholder);color:#788493;pointer-events:none}.announcement-card.has-banner{aspect-ratio:16/9;min-height:0;border:0;border-radius:0;background-color:transparent;background-size:100% 100%;box-shadow:none}.announcement-card.has-banner:before{display:none}.announcement-copy{position:absolute;left:50%;top:50%;width:min(72%,700px);padding:12px;transform:translate(-50%,-50%);cursor:grab;user-select:none}.announcement-copy.is-dragging{cursor:grabbing}.announcement-display .announcement-copy{box-sizing:border-box;max-height:min(68dvh,72%);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;cursor:default;scrollbar-color:rgba(236,197,93,.8) rgba(0,0,0,.22);scrollbar-width:thin;touch-action:pan-y;user-select:text}.announcement-display .announcement-copy::-webkit-scrollbar{width:8px}.announcement-display .announcement-copy::-webkit-scrollbar-track{border-radius:8px;background:rgba(0,0,0,.22)}.announcement-display .announcement-copy::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:8px;background:rgba(236,197,93,.8);background-clip:padding-box}.announcement-display .announcement-card{width:100%}
.announcement-workbench{grid-template-columns:220px minmax(430px,1fr) minmax(430px,1fr);max-width:1500px}.announcement-library{min-height:520px;padding:12px}.announcement-library>header{display:flex;align-items:center;justify-content:space-between;gap:6px}.announcement-library h2{margin:0;color:#fff3bd}.announcement-library header button,.announcement-list-item{border:1px solid rgba(255,255,255,.18);border-radius:8px;color:#eef4fb;background:#101b29}.announcement-library header button{padding:7px}.announcement-library #announcement-list{display:grid;gap:7px;margin-top:12px}.announcement-list-item{padding:10px;text-align:left}.announcement-list-item b,.announcement-list-item small{display:block}.announcement-list-item small{margin-top:4px;color:#99a6b7}.announcement-list-item.is-active{border-color:#e7b735;background:rgba(139,99,8,.3)}.announcement-title-label{display:grid;gap:6px;color:#cbd5e1}.announcement-title-label input{height:40px;padding:0 10px;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#eef4fb;background:#101b29}.sticker-picker{border:1px solid rgba(255,255,255,.14);border-radius:9px;background:rgba(255,255,255,.025)}.sticker-picker summary{padding:9px;color:#fff3bd;cursor:pointer}.sticker-picker>div{display:flex;flex-wrap:wrap;gap:5px;padding:0 9px 9px}.sticker-picker button{width:36px;height:36px;border:1px solid rgba(255,255,255,.16);border-radius:7px;background:#142130;font-size:20px}[data-effect="rainbow"]{color:transparent!important;background:linear-gradient(90deg,#ff3b3b,#ffdf3b,#42ff79,#38cfff,#8758ff,#ff4fd8,#ff3b3b);background-size:300% 100%;background-clip:text;-webkit-background-clip:text;animation:announcement-rainbow 1.8s linear infinite}@keyframes announcement-rainbow{to{background-position:300% 0}}@media(max-width:1250px){.announcement-workbench{grid-template-columns:200px 1fr}.announcement-workbench>section:last-child{grid-column:1/-1}}@media(max-width:760px){.announcement-workbench{grid-template-columns:1fr}.announcement-workbench>section:last-child{grid-column:auto}}
.announcement-manager{padding-left:8px}.announcement-workbench{grid-template-columns:280px minmax(430px,1fr) minmax(430px,1fr);width:calc(100% - 8px);max-width:none;margin-left:0;margin-right:0}.announcement-library{position:sticky;left:0;top:0}.announcement-toolbar>button.is-active,.announcement-toolbar select.is-active,.announcement-toolbar input.is-active{border-color:#ffd43b!important;background-color:rgba(173,122,0,.65)!important;box-shadow:0 0 0 2px rgba(255,212,59,.16),0 0 14px rgba(255,190,40,.2)}[data-effect="normal"]{background:none!important;animation:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important}@media(max-width:1250px){.announcement-workbench{grid-template-columns:250px 1fr}}
.announcement-list-row{display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:stretch;border:1px solid rgba(255,255,255,.18);border-radius:9px;overflow:hidden;background:#101b29}.announcement-list-row.is-active{border-color:#e7b735;background:rgba(139,99,8,.3)}.announcement-list-row .announcement-list-item{border:0;border-radius:0;background:transparent}.announcement-delete{border:0;border-left:1px solid rgba(255,255,255,.12);color:#ff9b9b;background:rgba(120,20,28,.18);font-size:22px}.announcement-delete:hover{color:#fff;background:#9d2832}.announcement-editor footer{align-items:center;flex-wrap:wrap}.announcement-editor footer .announcement-active{margin-right:auto;min-height:38px;padding:7px 11px}.announcement-editor footer .announcement-active:has(input:checked){border-color:#63e6a5;color:#baffda;background:rgba(24,128,80,.28)}

/* Trình dựng bố cục web và trang chủ người chơi */
.player-home-layout{position:absolute;z-index:6;inset:0;display:none;overflow:hidden;pointer-events:none}.is-player .player-home-layout{display:block}.player-home-layout .web-layout-component{pointer-events:auto}
.web-layout-component{position:absolute;box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;transform:translate(-50%,-50%);overflow:hidden;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere;text-decoration:none;text-shadow:0 2px 8px rgba(0,0,0,.72)}
.web-layout-panel{box-shadow:0 24px 70px rgba(0,0,0,.42);backdrop-filter:blur(12px)}
.web-layout-image{border:1px dashed rgba(255,255,255,.3);color:#b9c5d4;background:rgba(5,10,18,.36);font-size:12px;text-shadow:none}.web-layout-image img{width:100%;height:100%;pointer-events:none}.web-layout-image span{position:absolute;padding:5px 8px;border-radius:7px;background:rgba(0,0,0,.68)}
.web-layout-button{cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.35);transition:filter .15s ease,transform .15s ease}.player-home-layout .web-layout-button:hover{filter:brightness(1.14);transform:translate(-50%,-50%) translateY(-2px)}
.web-layout-editor{position:absolute;z-index:45;inset:0 0 0 68px;overflow:auto;padding:18px;color:#eef4fb;background:rgba(3,8,15,.95);backdrop-filter:blur(12px)}.web-layout-editor[hidden]{display:none!important}
.web-builder-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 auto 14px;max-width:1580px;padding:15px 18px}.web-builder-header h2{margin:3px 0 4px;color:#fff2bd}.web-builder-header p{margin:0;color:#acb9c9}.web-builder-header .eyebrow{color:#e8bd52;font-size:11px;font-weight:900;letter-spacing:.15em}
.web-builder-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.web-builder-actions button,.web-builder-add button,.web-builder-library>button{min-height:38px;padding:7px 11px;border:1px solid rgba(255,255,255,.2);border-radius:9px;color:#eef4fb;background:#142131;font-weight:750}.web-builder-actions button.is-active{border-color:#f2ca63;color:#fff4c8;background:#795313}.web-builder-actions .primary{border-color:#f0cf72;background:#8a5b10}.web-builder-actions button:disabled,.web-builder-library>button:disabled{opacity:.45;cursor:not-allowed}
.web-builder-workspace{display:grid;grid-template-columns:230px minmax(620px,1fr) 280px;gap:12px;max-width:1580px;margin:auto}.web-builder-library,.web-builder-inspector,.web-builder-stage{padding:13px}.web-builder-library h3,.web-builder-inspector h3{margin:3px 0 10px;color:#ffe8a0}.web-builder-add{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:18px}.web-builder-library>button{width:100%;margin-top:10px}.web-builder-library>button.danger{border-color:#b74c55;color:#ffcbcf;background:rgba(123,27,39,.34)}
.web-layout-catalog{display:grid;gap:5px;max-height:470px;overflow:auto}.web-layout-catalog button{display:flex;align-items:center;gap:9px;width:100%;min-height:45px;padding:6px 8px;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#e8eef6;background:rgba(14,27,42,.9);text-align:left}.web-layout-catalog button>span:first-child,.web-layout-badge{display:grid;flex:0 0 auto;place-items:center;width:30px;height:30px;border-radius:7px;color:#ffe49a;background:#2b3c51;font-weight:900}.web-layout-catalog button>span:last-child{min-width:0}.web-layout-catalog b,.web-layout-catalog small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.web-layout-catalog small{margin-top:2px;color:#92a1b2;font-size:10px}.web-layout-catalog button.is-active{border-color:#e6b847;background:rgba(126,87,17,.42)}
.web-builder-stagebar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;color:#c7d2df;font-size:12px}.web-builder-stagebar b{color:#ffe49a}.web-builder-viewport{display:grid;place-items:center;min-height:590px;padding:18px;overflow:auto;border-radius:12px;background:#050a11;box-shadow:inset 0 0 40px rgba(0,0,0,.55)}
.web-layout-preview{position:relative;width:min(100%,960px);aspect-ratio:16/9;overflow:hidden;border:2px solid rgba(239,200,96,.55);border-radius:10px;outline:none;background:linear-gradient(rgba(5,10,17,.32),rgba(5,10,17,.56)),var(--workspace-current-background,linear-gradient(135deg,#15243a,#080d15));background-position:center;background-size:cover;box-shadow:0 18px 60px #000;touch-action:none}.web-layout-preview.is-mobile{width:390px;max-width:100%;aspect-ratio:1/2}.web-layout-preview.has-grid{background-image:linear-gradient(rgba(5,10,17,.3),rgba(5,10,17,.5)),linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px),var(--workspace-current-background,linear-gradient(135deg,#15243a,#080d15));background-size:auto,5% 5%,5% 5%,cover;background-position:center}
.web-layout-preview .web-layout-component{cursor:grab;user-select:none}.web-layout-preview .web-layout-component:active{cursor:grabbing}.web-layout-preview .web-layout-component.is-selected{outline:2px solid #5ee7ff;outline-offset:2px;box-shadow:0 0 0 1px rgba(0,0,0,.8),0 0 18px rgba(94,231,255,.55)}
.web-layout-resize{position:absolute;z-index:4;right:0;bottom:0;width:15px;height:15px;border:2px solid #07121d;border-radius:3px 0 0;background:#5ee7ff;cursor:nwse-resize}.web-builder-help{margin:9px 2px 0;color:#8fa0b2;font-size:11px;line-height:1.5}
.web-layout-selection{display:flex;align-items:center;gap:9px;min-height:45px;margin-bottom:12px;padding:8px;border:1px solid rgba(255,255,255,.13);border-radius:9px;background:#101b29}.web-layout-selection p{margin:0;color:#98a7b8}.web-layout-selection b,.web-layout-selection small{display:block}.web-layout-selection small{color:#96a5b5}.web-layout-fields{display:grid;gap:9px}.web-layout-fields label{display:grid;gap:4px;color:#b8c4d1;font-size:11px}.web-layout-fields label:has(input[type=checkbox]){grid-template-columns:1fr auto;align-items:center}.web-layout-fields input,.web-layout-fields select{box-sizing:border-box;width:100%;height:36px;padding:0 8px;border:1px solid rgba(255,255,255,.2);border-radius:7px;color:#eef4fb;background:#101b29}.web-layout-fields input[type=color]{padding:3px}.web-layout-fields input[type=checkbox]{width:20px;height:20px}.web-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
@media(max-width:1250px){.web-builder-workspace{grid-template-columns:200px minmax(520px,1fr)}.web-builder-inspector{grid-column:1/-1}.web-layout-fields{grid-template-columns:repeat(3,minmax(150px,1fr))}.web-layout-selection{grid-column:1/-1}.web-builder-viewport{min-height:480px}}
@media(max-width:820px){.web-layout-editor{position:relative;inset:auto;min-height:calc(100dvh - 92px);padding:10px 7px 24px 64px}.web-builder-header{align-items:flex-start;flex-direction:column}.web-builder-actions{justify-content:flex-start}.web-builder-workspace{grid-template-columns:1fr}.web-builder-library,.web-builder-inspector{grid-column:auto}.web-builder-viewport{min-height:430px;padding:8px}.web-layout-fields{grid-template-columns:1fr}.web-layout-preview:not(.is-mobile){min-width:620px}.web-builder-stage{overflow:hidden}}
@media(max-width:700px){.player-home-layout{position:relative;min-height:calc(100dvh - 92px)}}

/* Map Editor */
.map-editor{position:absolute;z-index:9;inset:0 0 0 68px;overflow:auto;padding:12px;color:#eef4fb;background:rgba(3,8,14,.94);backdrop-filter:blur(10px)}.map-editor[hidden]{display:none!important}.map-editor-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:9px}.map-editor-header p{margin:0;color:#f4cf65;font-size:11px;font-weight:850;letter-spacing:.16em}.map-editor-header h1{margin:2px 0 0;color:#fff3bd}.map-main-actions{display:flex;flex-wrap:wrap;gap:7px}.map-editor button,.map-editor input,.map-editor select{border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#eef4fb;background:#101b29}.map-editor button{min-height:38px;padding:7px 12px;font-weight:750}.map-editor button.primary,.map-editor button.is-active{border-color:#e8bd45;background:rgba(140,93,6,.82);box-shadow:0 0 12px rgba(238,187,54,.16)}.map-editor button:disabled{opacity:.42;cursor:not-allowed}.map-editor-layout{display:grid;grid-template-columns:190px minmax(760px,1fr) 250px;gap:8px;min-width:1220px}.map-library,.map-workbench,.map-properties{height:calc(100vh - 118px);min-height:690px}.map-library{padding:8px}.map-library>input{width:100%;height:38px;padding:0 9px}.map-list{display:grid;gap:5px;max-height:calc(100% - 48px);margin-top:8px;overflow:auto}.map-list button{display:grid;gap:3px;text-align:left}.map-list button small{color:#94a3b8}.map-list button.is-active{border-color:#f4cf65;background:rgba(130,89,11,.4)}.map-workbench{display:grid;grid-template-rows:auto auto auto minmax(520px,1fr) auto;gap:7px;padding:8px;min-width:0}.map-info-bar{display:grid;grid-template-columns:58px minmax(160px,1fr) repeat(5,minmax(68px,82px));gap:5px}.map-info-bar label,.map-properties label{display:grid;gap:3px;color:#b8c4d3;font-size:10px}.map-info-bar input,.map-info-bar select,.map-properties input,.map-properties select{min-width:0;height:33px;padding:0 7px}.map-toolbar label{display:inline-flex;align-items:center;min-height:38px;padding:0 8px;border:1px dashed rgba(255,255,255,.25);border-radius:8px;color:#d8e2ee;background:#0e1926;font-size:11px}.map-toolbar input[type=file]{display:none}.map-canvas-scroll{min-height:520px;overflow:auto;border:1px solid rgba(244,207,101,.42);border-radius:9px;background:#05080c;box-shadow:inset 0 0 30px #000}.map-canvas-scroll canvas{display:block;min-width:100%;min-height:100%;image-rendering:pixelated;cursor:crosshair}.map-status-bar{display:flex;justify-content:space-between;gap:12px;color:#aeb9c8;font-size:11px}.map-status-bar .is-error{color:#ff9088}.map-properties{display:block;padding:7px;overflow:auto}.map-properties>.map-property-group{margin-bottom:6px}.map-properties p{color:#9daabc;font-size:10px;line-height:1.4}.map-properties select{width:100%}.tile-palette{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;max-height:285px;overflow:auto}.tile-palette button{min-height:42px;padding:2px}.tile-palette canvas{width:100%;aspect-ratio:1;image-rendering:pixelated}.placed-list{display:grid;gap:5px;max-height:180px;margin-top:8px;overflow:auto}.placed-list>div{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:6px;border:1px solid rgba(255,255,255,.12);border-radius:7px;background:#0d1723;font-size:11px}.placed-list button{min-height:28px;padding:2px 8px;color:#ff9d9d}.waypoint-row label{width:62px}.waypoint-row input{width:100%;height:28px}.map-editor+.admin-dialog label,#map-create-dialog label{display:grid;gap:4px;margin:8px 0;color:#cbd5e1}@media(max-width:1400px){.map-editor-layout{grid-template-columns:170px minmax(700px,1fr) 225px}.map-editor{padding:8px}.map-toolbar{grid-template-columns:1fr}.map-toolbar-folders details>div{right:auto;left:0}}

/* Responsive mobile layout */
@media (max-width:820px) {
  html { overflow-x:hidden; }
  body { width:100%; max-width:100vw; }
  button,input,select,textarea { min-width:0; }
  input:not([type="checkbox"]),select,textarea { font-size:16px; }

  .login-page { display:flex; align-items:center; justify-content:center; min-height:100dvh; padding:max(62px,env(safe-area-inset-top)) 14px max(18px,env(safe-area-inset-bottom)); }
  .login-card { width:100%; max-width:430px; padding:22px 18px 20px; border-radius:17px; }
  .login-logo-wrap { width:62px; height:62px; }
  .login-wordmark { height:68px; margin-bottom:7px; }
  .login-flow-label { font-size:10px; }
  .login-card h1 { margin-bottom:18px; font-size:28px; }
  .login-sound-control { top:max(8px,env(safe-area-inset-top)); right:8px; }
  .account-links { align-items:stretch; gap:12px; }
  .account-links .text-button { min-height:34px; text-align:left; }

  .app-header { height:92px; }
  .app-logo { left:8px; width:52px; height:52px; }
  .wordmark { left:47%; width:min(47vw,260px); max-height:72px; }
  .header-actions { top:5px; right:5px; gap:3px; }
  .header-greeting { top:32px; right:0; max-width:175px; overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
  .header-sound-control .volume-slider { display:none; }
  .icon-button,.language-summary,.logout-button { height:30px; }
  .logout-button { width:32px; padding:0; }
  .language-summary { padding:0 5px; }
  .language-summary span { display:none; }

  .blank-workspace { min-height:calc(100dvh - 92px); overflow:visible; }
  .workspace-background { position:fixed; top:92px; background-size:cover; }
  .admin-sidebar { position:fixed; top:92px; bottom:0; width:min(88vw,340px); max-width:340px; box-shadow:15px 0 50px rgba(0,0,0,.62); }
  .sidebar-collapsed .admin-sidebar { width:58px; }
  .sidebar-heading { min-height:54px; padding:8px 10px; }
  .sidebar-collapsed .sidebar-heading { padding:8px; }
  .sidebar-toggle { width:40px; height:38px; }
  .sidebar-list { padding:7px; }
  .sidebar-item { min-height:54px; padding:7px 9px; }
  .sidebar-icon { width:36px; height:36px; }
  .sidebar-details { max-height:240px; overflow:auto; }
  .character-preview { width:140px; height:138px; }

  .admin-dashboard,.sidebar-collapsed .admin-dashboard { width:calc(100% - 72px); margin:10px 8px 16px 64px; padding:14px; border-radius:14px; }
  .dashboard-heading { align-items:stretch; }
  .dashboard-refresh { width:100%; }

  .player-manager { position:relative; inset:auto; display:grid; grid-template-columns:1fr; gap:8px; min-height:calc(100dvh - 92px); padding:8px 8px 20px 64px; overflow:visible; }
  .player-directory { min-height:auto; }
  .player-directory > header { padding:10px; }
  .player-list,.player-filters-hidden .player-list { height:auto; max-height:42dvh; }
  .player-detail { overflow:visible; }
  .character-tabs-header { align-items:flex-start; flex-direction:column; gap:9px; }
  .character-tabs { width:100%; overflow-x:auto; padding-bottom:3px; }
  .character-tabs button { flex:0 0 auto; }
  .player-top-grid { grid-template-columns:1fr; }
  .equipment-stage { grid-row:auto; min-height:320px; }
  .storage-grid { grid-template-columns:1fr; }
  .storage-panel { overflow:hidden; }
  .item-grid { grid-template-columns:repeat(6,minmax(36px,1fr)); overflow-x:auto; }
  .item-slot { width:100%; min-width:36px; height:auto; aspect-ratio:1; }
  .player-actions { display:grid; grid-template-columns:1fr 1fr; gap:7px; overflow:visible; }
  .player-actions h3,.player-actions p { grid-column:1/-1; }
  .player-actions button { min-height:44px; margin:0; padding:8px; }

  .announcement-manager { position:relative; inset:auto; min-height:calc(100dvh - 92px); padding:12px 8px 24px 64px; overflow:visible; }
  .announcement-manager > header { align-items:flex-start; margin-bottom:12px; }
  .announcement-manager h1 { font-size:27px; }
  .announcement-workbench { display:grid; grid-template-columns:1fr; width:100%; margin:0; }
  .announcement-workbench > section:last-child { grid-column:auto; min-width:0; }
  .announcement-library { position:static; min-height:auto; }
  .announcement-library #announcement-list { max-height:240px; overflow:auto; }
  .announcement-editor { min-width:0; padding:11px; }
  .announcement-toolbar { flex-wrap:nowrap; overflow-x:auto; padding-bottom:7px; }
  .announcement-toolbar > * { flex:0 0 auto; }
  .announcement-rich-editor { min-height:210px; }
  .announcement-editor footer { align-items:stretch; flex-direction:column; }
  .announcement-active { justify-content:center; }
  .announcement-card { min-height:210px; border-radius:13px; }
  .announcement-copy { width:90%; padding:42px 12px; }
  .announcement-display .announcement-card.has-banner { min-height:min(72dvh,520px); aspect-ratio:auto; }
  .announcement-display .announcement-copy { width:76%; max-height:68%; padding:10px 8px; font-size:clamp(14px,4vw,22px)!important; }

  .admin-dialog,.placeholder-modal,.announcement-display { width:calc(100vw - 16px); max-height:94dvh; margin:auto; }
  .admin-dialog form { padding:12px; }
  .admin-dialog footer { align-items:stretch; flex-direction:column-reverse; }
  .admin-dialog footer button { width:100%; }
  .stats-editor-fields { grid-template-columns:1fr; max-height:55dvh; }
  .item-catalog-dialog form { grid-template-columns:1fr; }
  .item-catalog-dialog header,.item-catalog-dialog .catalog-toolbar { grid-column:auto; }
  .catalog-toolbar { align-items:stretch; flex-direction:column; }
  .register-panel { padding:30px 16px 24px; }
  .register-heading h2 { font-size:27px; }
  .email-send-row,.verification-row { grid-template-columns:1fr; }
  .secondary-button { width:100%; }
  .toast-stack { bottom:max(14px,env(safe-area-inset-bottom))!important; width:calc(100vw - 20px)!important; }
}

@media (max-width:430px) {
  .app-logo { display:none; }
  .wordmark { left:27%; width:43vw; }
  .header-greeting { max-width:150px; }
  .player-actions { grid-template-columns:1fr; }
  .player-actions h3,.player-actions p { grid-column:auto; }
  .item-grid { grid-template-columns:repeat(5,minmax(36px,1fr)); }
  .register-grid { grid-template-columns:1fr; }
}

/* Cụm điều khiển Map Editor gọn hơn nhưng vẫn đủ lớn để thao tác cảm ứng. */
@media (min-width:821px) {
  .map-editor-layout { grid-template-columns:auto minmax(420px,1fr) auto; }
  .map-library { width:190px; min-width:140px; max-width:min(42vw,440px); resize:horizontal; }
  .map-workbench { min-width:420px; }
  .map-canvas-scroll { width:100%; min-width:360px; min-height:360px; max-width:100%; max-height:calc(100vh - 150px); resize:both; justify-self:start; align-self:start; }
  .map-properties { width:250px; min-width:180px; max-width:min(42vw,520px); resize:horizontal; }
  .map-workbench { gap:4px; padding:5px; }
  .map-info-bar { grid-template-columns:52px minmax(145px,1fr) repeat(5,minmax(64px,78px)); align-items:end; gap:3px; }
  .map-info-bar label { align-content:end; gap:1px; min-width:0; font-size:8px; line-height:1.15; }
  .map-info-bar input,.map-info-bar select { width:100%; height:24px; padding:0 5px; border-radius:6px; font-size:10px; }
  .map-edit-modes { flex-wrap:wrap; align-items:stretch; gap:3px; padding:3px; overflow:visible; }
  .map-edit-modes button { flex:1 1 105px; min-width:82px; min-height:25px; height:auto; padding:3px 5px; overflow:visible; border-radius:6px; font-size:9px; line-height:1.15; white-space:normal; }
  .map-toolbar { display:flex!important; flex-wrap:wrap; align-items:center!important; gap:3px; }
  .map-toolbar-primary,.map-toolbar-folders { align-items:center; gap:3px; }
  .map-toolbar-primary button,.map-toolbar-folders summary { display:inline-flex; flex:1 1 auto; align-items:center; justify-content:center; min-height:27px; height:auto; padding:4px 7px; border-radius:6px; font-size:10px; line-height:1.15; white-space:normal; }
  .map-toolbar label { flex:1 1 150px; align-items:center; min-height:27px; height:auto; padding:2px 5px; border-radius:6px; font-size:9px; white-space:normal; }
  .map-toolbar label select { width:auto; min-width:116px; height:23px; padding:0 20px 0 5px; border-radius:5px; font-size:10px; }
  .map-toolbar-folders { margin-left:auto; }
  .map-toolbar-folders details>div { top:31px; }
  .map-cell-info { padding:6px; }
  .map-cell-info h3 { margin-bottom:4px; font-size:11px; line-height:1.2; }
  .map-cell-info dl { grid-template-columns:minmax(0,1fr) auto; gap:2px 6px; margin-bottom:5px; font-size:9px; line-height:1.25; }
  .map-cell-info dt { min-width:0; overflow-wrap:anywhere; }
  .map-cell-info dd { max-width:92px; overflow-wrap:anywhere; }
  .map-tile-info-entry { display:grid; gap:3px; margin-top:4px; }
  .map-cell-info .map-tile-info-entry button { min-height:29px; margin:0; padding:4px 6px; border-radius:6px; }
  .map-cell-info .map-tile-info-entry button b { font-size:10px; line-height:1.2; overflow-wrap:anywhere; white-space:normal; }
  .map-cell-info .map-tile-info-entry button span { font-size:8px; line-height:1.15; }
  .map-cell-info .map-tile-info-entry select { width:100%; min-width:0; height:27px; padding:2px 22px 2px 6px; border-radius:6px; font-size:9px; }
  .map-cell-info .map-tile-info-entry>small { display:block; color:#8293a8; font-size:8px; line-height:1.3; overflow-wrap:anywhere; }
}

@media (max-width:820px) {
  .map-library,.map-workbench,.map-properties { width:auto; min-width:0; max-width:none; resize:none; }
  .map-canvas-scroll { width:100%; min-width:0; resize:none; }
  .map-info-bar { gap:5px; }
  .map-info-bar input,.map-info-bar select { height:36px; font-size:12px; }
  .map-edit-modes { flex-wrap:nowrap; gap:4px; padding:4px; overflow-x:auto; }
  .map-edit-modes button { flex:0 0 auto; min-width:118px; min-height:40px; height:auto; padding:6px 10px; font-size:12px; white-space:normal; }
  .map-toolbar-primary { gap:5px; }
  .map-toolbar-primary button,.map-toolbar label,.map-toolbar-folders summary { min-height:40px; font-size:12px; }
  .map-cell-info h3 { font-size:12px; }
  .map-cell-info dl { grid-template-columns:minmax(0,1fr) auto; font-size:11px; }
  .map-cell-info .map-tile-info-entry button { min-height:38px; padding:6px 8px; }
  .map-cell-info .map-tile-info-entry button b { font-size:12px; line-height:1.2; }
  .map-cell-info .map-tile-info-entry select { width:100%; min-height:38px; font-size:11px; }
  .map-cell-info .map-tile-info-entry>small { display:block; font-size:10px; line-height:1.35; overflow-wrap:anywhere; }
}

/* Background map được vẽ theo tọa độ canvas; khung cuộn không tự cover ảnh. */
.map-library,.map-workbench,.map-properties { height:calc(100vh - 68px); }
.map-canvas-scroll {
  background-color:#05080c;
}
