:root{
  --bg:#f4ecd9;
  --panel:#fff9eb;
  --panel2:#f8efd9;
  --ink:#2d251d;
  --muted:#766a5c;
  --line:#b99f76;
  --line2:#d7c29a;
  --accent:#7a5432;
  --accent2:#b98245;
  --danger:#b53b32;
  --ok:#4e872f;
  --shadow:0 3px 12px rgba(66,46,20,.16);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{touch-action:manipulation}
.app{height:100dvh;display:grid;grid-template-rows:54px minmax(0,1.06fr) minmax(0,.94fr) 72px;background:linear-gradient(#f8f1df,#efe2c6)}
.topbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);background:#fff4d9;box-shadow:var(--shadow);z-index:3}
.title{font-weight:800;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.pill{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:36px;border:1px solid var(--line);background:#fffdf5;border-radius:0;box-shadow:0 2px 0 rgba(0,0,0,.08);font-weight:800}.pill.primary{background:#5c3f24;color:#fff}.pill.warn{background:#fff1e7;color:#8f2f22}.hambox{position:fixed;right:8px;top:55px;width:min(330px,calc(100vw - 16px));background:#fffaf0;border:1px solid var(--line);box-shadow:var(--shadow);z-index:20;padding:10px;display:none}.hambox.open{display:block}.hambox button{width:100%;margin:4px 0;text-align:left;padding:10px;border:1px solid var(--line2);background:#fff}.block{min-height:0;margin:8px 10px 0;border:1px solid var(--line);background:rgba(255,250,239,.94);box-shadow:var(--shadow);display:flex;flex-direction:column}.blockHeader{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:#ead8b8;border-bottom:1px solid var(--line);font-weight:800}.blockBody{padding:10px;overflow:auto;min-height:0;-webkit-overflow-scrolling:touch}.listBody{padding:8px;overflow:auto;min-height:0;-webkit-overflow-scrolling:touch}.listRow{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center;padding:8px;margin-bottom:6px;background:#fffdf5;border:1px solid var(--line2)}.listRow.active{outline:2px solid var(--accent2);background:#fff7df}.listMain{min-width:0}.listTitle{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listSub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.smallBtn{padding:7px 8px;border:1px solid var(--line);background:#fff;border-radius:0}.smallBtn.danger{color:var(--danger);border-color:#d59a92}.tabs{display:flex;gap:4px;padding:7px 8px;border-top:1px solid var(--line);background:#fff4d9;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;min-height:72px}.tab{min-width:58px;height:56px;border:1px solid var(--line2);background:#fffdf5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;font-weight:700}.tab span:first-child{font-size:20px}.tab.active{background:#5c3f24;color:#fff;border-color:#5c3f24}.formGrid{display:grid;grid-template-columns:1fr;gap:10px}.section{border:1px solid var(--line2);background:#fffdf7;margin:0 0 10px 0}.sectionTitle{padding:7px 8px;border-bottom:1px solid var(--line2);background:#f0dfbf;font-weight:800}.sectionBody{padding:8px}.field{display:grid;gap:4px;margin-bottom:9px}.labelLine{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:#4e3e2c}.helpBtn{width:20px;height:20px;border:1px solid var(--line);background:#fff;border-radius:50%;font-size:12px;font-weight:900;color:#684826;display:inline-flex;align-items:center;justify-content:center}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line2);background:#fff;padding:9px;border-radius:0}.field textarea{min-height:72px;resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);background:#fff;padding:7px 9px;font-size:12px}.chip input{width:auto}.assetRow{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:end}.preview{width:54px;height:54px;border:1px solid var(--line2);background:#eee center/cover no-repeat}.scenePreview{position:relative;aspect-ratio:1/1;width:100%;max-height:52vh;border:1px solid var(--line);background:#cbbf9d center/cover no-repeat;margin-bottom:10px;overflow:hidden}.objectCard{position:absolute;border:2px solid #49351d;background:rgba(255,250,232,.84);box-shadow:0 4px 14px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none}.objectCard.active{outline:3px solid #e0a343}.objectCard img{max-width:100%;max-height:100%;pointer-events:none}.objectCard .name{position:absolute;left:0;right:0;bottom:0;font-size:10px;background:rgba(255,250,232,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.hitBox{position:absolute;border:1px dashed rgba(185,49,49,.8);pointer-events:none}.inlineList{border:1px solid var(--line2);background:#fffef9;margin-bottom:8px}.inlineItem{border-bottom:1px solid var(--line2);padding:8px}.inlineItem:last-child{border-bottom:0}.inlineHead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.note{font-size:12px;color:var(--muted);line-height:1.5}.warning{padding:8px;border:1px solid #d79a6b;background:#fff2e0;color:#6d3b1b;margin-bottom:8px}.jsonBox{font-family:ui-monospace, SFMono-Regular, Consolas, monospace;font-size:12px;white-space:pre;overflow:auto;background:#1f1c17;color:#f6e8c9;padding:10px;border:1px solid #4b3b26;max-height:55vh}.modal{position:fixed;inset:0;background:rgba(38,29,20,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal[hidden]{display:none!important}.modalCard{max-width:420px;width:100%;background:#fffaf0;border:1px solid var(--line);box-shadow:var(--shadow)}.modalHead{padding:10px;border-bottom:1px solid var(--line);background:#ead8b8;font-weight:800}.modalBody{padding:12px;max-height:55vh;overflow:auto;white-space:pre-wrap;line-height:1.65;font-size:14px}.modalFoot{padding:10px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.playFrame{width:100%;height:70vh;border:1px solid var(--line);background:#111}.checkList{font-size:13px;line-height:1.55}.okText{color:var(--ok)}.badText{color:var(--danger)}
@media (min-width:760px){.app{width:420px;margin:0 auto;border-left:1px solid var(--line);border-right:1px solid var(--line)}.scenePreview{max-height:380px}}

.listTools{display:flex;align-items:center;gap:6px;max-width:100%}.miniSelect{min-width:0;max-width:190px;border:1px solid var(--line);background:#fffdf5;padding:7px;border-radius:0}

.warnText{color:#d8b45f;background:rgba(216,180,95,.08);border-left:3px solid rgba(216,180,95,.75);padding:.35rem .5rem;margin:.2rem 0;}


/* R41 validation audit */
.validationSummary{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}.validationSummary>div{padding:8px 4px;text-align:center;border:1px solid var(--line2);background:#fff;font-size:11px}.summaryError{color:var(--danger)}.summaryWarn{color:#8c611a}.summaryInfo{color:#355d8c}.summaryPass{color:var(--ok)}
.checkIssue{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin:.35rem 0;padding:.55rem .6rem;border:1px solid currentColor;background:#fff}.checkIssue.badText{background:#fff3f1}.checkIssue.warnText{background:#fff8e8}.checkIssue.infoText{background:#eef6ff}.checkJump{white-space:nowrap}.infoText{color:#355d8c}.validationClean{padding:12px;border:1px solid #94bf78;background:#f3faee;color:var(--ok);font-weight:800}.checkPasses{margin-top:12px;border:1px solid var(--line2);background:#fff;padding:8px}.checkPasses summary{cursor:pointer;font-weight:800}.checkPasses .okText{padding:.15rem 0;font-size:12px}


/* R42 validation help modal */
.checkIssueMain{min-width:0}.checkIssueHead{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:2px}.checkIssueActions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.validationHelpBtn{width:34px;height:34px;flex:0 0 34px;border:1px solid currentColor;background:#fff;border-radius:50%;font-weight:900;font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 1px 0 rgba(0,0,0,.08)}.validationHelpBtn:active{transform:translateY(1px)}.validationCodeMini{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px;padding:2px 4px;border:1px solid currentColor;opacity:.75;background:rgba(255,255,255,.7)}
.validationHelpCard{max-width:480px;max-height:calc(100dvh - 24px);display:flex;flex-direction:column}.validationHelpHead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;font-size:16px}.validationCode{display:inline-block;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;padding:2px 5px;margin-bottom:4px;border:1px solid rgba(0,0,0,.25);background:#fff8e8}.modalCloseX{width:34px;height:34px;border:1px solid var(--line);background:#fff;font-weight:900;font-size:20px;line-height:1}.validationHelpBody{max-height:none;overflow:auto}.validationHelpBody section{margin:0 0 14px}.validationHelpBody h3{font-size:13px;margin:0 0 5px;padding-bottom:3px;border-bottom:1px solid var(--line2)}.validationHelpBody p{margin:0;white-space:pre-wrap}.validationHelpBody ol{margin:0;padding-left:1.45rem}.validationHelpBody li{margin:.25rem 0}.validationSeverityLine{font-weight:800;padding:7px 8px;margin-bottom:12px;border-left:4px solid currentColor;background:#fff}.validationSeverityLine.error{color:var(--danger);background:#fff3f1}.validationSeverityLine.warning{color:#8c611a;background:#fff8e8}.validationSeverityLine.info{color:#355d8c;background:#eef6ff}.validationExample{margin:10px 0;padding:8px;border:1px solid var(--line2)}.validationExample pre{margin:6px 0 0;padding:8px;overflow:auto;background:#1f1c17;color:#f6e8c9;font-size:11px;white-space:pre-wrap}.validationExample.badExample{border-left:4px solid var(--danger)}.validationExample.goodExample{border-left:4px solid var(--ok)}
@media (max-width:420px){.checkIssue{grid-template-columns:minmax(0,1fr)}.checkIssueActions{justify-content:flex-start}.checkJump{flex:1}.validationHelpBtn{width:38px;height:38px;flex-basis:38px}.validationHelpModal{padding:8px}.validationHelpCard{max-height:calc(100dvh - 16px)}}

/* R50.3 editor IndexedDB autosave */
.title{display:flex;flex-direction:column;gap:1px;min-width:0}
.autosaveStatus{font-size:10px;line-height:1.2;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.autosaveStatus.saving{color:#6f5528}.autosaveStatus.error{color:var(--danger)}
.hamboxNote{margin-top:6px;padding:7px 8px;border:1px solid var(--line2);background:#fff8e8;color:var(--muted);font-size:12px;line-height:1.45}
.draftModal{max-width:520px}.draftRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid var(--line2);background:#fffdf7;padding:8px;margin-bottom:8px}.draftActions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:420px){.draftRow{grid-template-columns:1fr}.draftActions{justify-content:flex-start}.autosaveStatus{font-size:9px}}

/* v14.17: list operations and visual placement editing */
.listRow{grid-template-columns:minmax(0,1fr) auto;}
.listActions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;align-items:center;}
.battlePreview{position:relative;aspect-ratio:1/1;width:100%;max-height:52vh;border:1px solid var(--line);background:#cbbf9d center/cover no-repeat;margin-bottom:8px;overflow:hidden;}
.battleEnemyCard{position:absolute;border:2px solid #49351d;background:rgba(255,250,232,.84);box-shadow:0 4px 14px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none;}
.battleEnemyCard.active{outline:3px solid #e0a343;}
.battleEnemyCard img{max-width:100%;max-height:100%;pointer-events:none;}
.battleEnemyCard .name{position:absolute;left:0;right:0;bottom:0;font-size:10px;background:rgba(255,250,232,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;}
.resizeHandle{position:absolute;right:-8px;bottom:-8px;width:18px;height:18px;border:2px solid #49351d;background:#fff7df;box-shadow:0 2px 6px rgba(0,0,0,.28);cursor:nwse-resize;touch-action:none;z-index:5;}
.resizeHandle::after{content:"";position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid #8a6133;border-bottom:2px solid #8a6133;}
.battleHitBox{border-color:rgba(80,80,210,.85);}
@media (min-width:760px){.battlePreview{max-height:380px}}


/* v14.19.1: compact list layout fix for variable/internal-key rows */
.listRow > .two,.listRow > .three{min-width:0;}
.listRow input,.listRow select{min-width:0;}
@media (max-width:520px){
  .listRow{grid-template-columns:1fr;}
  .listActions{justify-content:flex-start;}
  .listRow .smallBtn{padding:7px 9px;}
}


/* v14.19.6: image thumbnails, material links, legal modal */
.assetThumbPanel{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center;margin:6px 0;padding:6px;border:1px solid var(--line2);background:#fffdf7}
.assetThumbPanel.missing{background:#fff4f1;color:var(--danger)}.assetThumbPanel.empty{color:var(--muted)}
.assetThumb{width:64px;height:64px;border:1px solid var(--line2);background:#ece5d2 center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--muted);flex:0 0 auto;image-rendering:auto}
.assetThumb.background{width:96px;height:54px}.assetThumb.missing{border-color:var(--danger);background:#fff}.assetThumb.empty{background:#f6f0df}
.assetThumbText{min-width:0;display:grid;gap:2px;font-size:12px}.assetThumbText span{word-break:break-all;color:var(--muted)}
.miniThumb{width:42px;height:42px;border:1px solid var(--line2);background:#ece5d2 center/cover no-repeat;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:var(--muted);flex:0 0 42px;vertical-align:middle;image-rendering:auto}
.miniThumb.background{width:56px;height:36px}.miniThumb.missing{border-color:var(--danger);background:#fff4f1;color:var(--danger)}.miniThumb.empty{background:#f6f0df}
.listMainWithThumb{display:flex;align-items:center;gap:8px;min-width:0}.listText{min-width:0}.inlineCardTitle{display:flex;align-items:center;gap:8px;min-width:0}.inlineCardTitle b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cardInlineItem .inlineHead{align-items:center}.hamboxDivider{border-top:1px solid var(--line2);margin:8px 0}.hamboxSection{font-size:12px;font-weight:800;color:var(--muted);padding:2px 4px}.hamboxLink{display:block;border:1px solid var(--line2);background:#fffdf7;color:var(--ink);text-decoration:none;padding:8px 10px;margin:4px 0;font-size:13px}.hamboxLink:active{transform:translateY(1px)}.legalPanel{max-width:520px}.legalBody{white-space:normal}.legalBody p{margin:.45rem 0}.copyrightMark{font-weight:900;font-size:18px;margin-bottom:8px}
@media (max-width:420px){.assetThumb{width:56px;height:56px}.assetThumb.background{width:84px;height:48px}.miniThumb{width:36px;height:36px;flex-basis:36px}.miniThumb.background{width:48px;height:32px}.inlineCardTitle{gap:6px}}

.battleOnionControls{display:grid;grid-template-columns:1fr;gap:6px;margin-bottom:8px;padding:7px;border:1px solid var(--line2);background:#fffaf0;}
.battleOnionControls select{width:100%;border:1px solid var(--line2);background:#fff;padding:8px;border-radius:0;}
.battleOnionLayer{position:absolute;inset:0;background:center/cover no-repeat;opacity:.42;pointer-events:none;z-index:1;mix-blend-mode:normal;}
.onionObjectCard{position:absolute;border:2px dashed rgba(60,80,150,.9);background:rgba(180,205,255,.38);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px rgba(255,255,255,.45) inset;}
.onionObjectCard img{max-width:100%;max-height:100%;filter:saturate(.7) contrast(.9);opacity:.72;}
.onionObjectCard .name{position:absolute;left:0;right:0;bottom:0;font-size:10px;background:rgba(30,45,90,.72);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;}
.onionHitBox{position:absolute;border:1px dashed rgba(40,70,180,.7);background:rgba(60,100,220,.06);}
.battleHitBox{z-index:3;}
.battleEnemyCard{z-index:4;}


.assetPreviewLarge{
  border:1px solid var(--line);
  background:rgba(255,255,255,.35);
  padding:10px;
  margin:10px 0;
}
.assetPreviewLargeImage{
  width:100%;
  min-height:220px;
  max-height:360px;
  background-repeat:no-repeat;
  background-position:center;
  background-color:rgba(0,0,0,.08);
  border:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:28px;
}
.assetPreviewLargeImage.empty,
.assetPreviewLargeImage.missing{
  min-height:140px;
}

.listTools .helpBtn{flex:0 0 auto}


.undoToast{position:fixed;left:50%;bottom:82px;transform:translateX(-50%);z-index:90;display:flex;align-items:center;gap:14px;width:min(520px,calc(100vw - 24px));padding:11px 12px;background:#2d271f;color:#fff8e8;border:1px solid #7a684f;box-shadow:0 6px 24px rgba(0,0,0,.34);font-size:13px}
.undoToastText{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.undoToastButton{flex:none;padding:7px 10px;border:1px solid #dfc08a;background:#fff4d9;color:#4d341d;font-weight:800}
