/* Consolidated editor stylesheet */

/* --- editor-base.css --- */

:root{
  --ui-gap:16px;
  --ui-gap-sm:14px;
  --ui-gap-xs:12px;
  --ui-pad:12px;
  --ui-pad-lg:16px;
  --ui-radius:8px;
  --ui-btn-h:38px;
  --ui-control-h:38px;
  --ui-input-h:38px;
  --ui-sec-gap:20px;
  --c-bg:#111722;
  --c-panel:#1a2335;
  --c-panel-soft:#111b2f;
  --c-border:#2f4366;
  --c-border-soft:#2c3d5c;
  --c-field:#0f1b31;
  --c-accent:#9fc3ff;
  --c-accent-strong:#dce9ff;
  --c-panel-deep:#0e1627;
  --c-panel-deeper:#0b1020;
  --c-card:#14223d;
  --c-card-border:#304a76;
  --c-shadow-strong:rgba(0,0,0,.55);
}
body{margin:0;background:var(--c-bg);color:#e8efff;font:13px/1.45 monospace;overflow-y:auto;overflow-x:hidden}
a{color:#b9d6ff}
a:visited{color:#d5c4ff}
a:hover,a:focus{color:#eef6ff}
.wrap{max-width:none;width:calc(100vw - 20px);height:calc(100vh - 20px);min-height:calc(100vh - 20px);margin:0 auto;padding:12px;display:grid;grid-template-columns:minmax(0,65%) minmax(360px,35%);gap:var(--ui-gap);box-sizing:border-box}
.panel{min-width:0;max-height:calc(100vh - 44px);background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--ui-radius);padding:20px;display:grid;gap:20px;align-content:stretch;overflow:hidden;min-height:0}
.wrap > .panel:first-of-type{grid-template-rows:auto auto minmax(0,1fr)}
.wrap > .panel:last-of-type{grid-template-rows:auto minmax(0,1fr)}
.rightScroll{min-height:0;height:100%;overflow-y:auto;overflow-x:hidden;display:grid;gap:20px;align-content:start;grid-auto-rows:max-content;padding-right:6px}
.playtestDock{display:grid;gap:12px;border:1px solid var(--c-border-soft);border-radius:8px;padding:16px;background:var(--c-panel-soft)}
.playtestDock h2{margin:0}
.playtestDockHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}
.playtestDockActions{display:flex;align-items:center;gap:8px}
.playtestDockActions .iconBtn{font-size:13px;line-height:1.1;padding:0 10px;min-width:60px;height:var(--ui-btn-h)}
.playtestDockActions .iconBtn.on{border-color:var(--c-accent);background:#1a3158;color:#eef6ff}
.playtestCmdRow{align-items:stretch}
.playLangRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}
.playtestCmdRow > .row2{grid-template-columns:1fr 1fr;gap:12px}
.playLanguageSelect{
  min-width:82px;
  justify-self:end;
  padding-right:24px;
  background-color:var(--c-field);
  background-image:
    linear-gradient(45deg, transparent 50%, var(--c-accent) 50%),
    linear-gradient(135deg, var(--c-accent) 50%, transparent 50%);
  background-position:
    calc(100% - 14px) calc(50% - 2px),
    calc(100% - 9px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
}
#playRuntimeInfo{min-width:0}
.playtestHidden .playtestDock{display:none}
.playtestHidden .playtestAux{display:none}
.card{display:grid;gap:var(--ui-gap-sm);background:var(--c-panel-soft);border:1px solid var(--c-border-soft);border-radius:var(--ui-radius);padding:16px}
.card h2{display:flex;align-items:center;justify-content:space-between;gap:8px}
.card.collapsed > *:not(h2){display:none}
.cardToggle{font:11px monospace;padding:2px 6px;line-height:1}
.playLine{display:block}
.playTerm{font-weight:800;color:#ffffff}
.playNpcTerm{font-weight:800;color:#ffd77a}
h1,h2{margin:0} h1{font-size:18px} h2{font-size:13px;color:var(--c-accent)}
.appTitleRow{display:flex;align-items:center;justify-content:space-between;gap:12px}
.appTitleLink{font-size:12px;color:var(--c-accent);text-decoration:none;white-space:nowrap}
.appTitleLink:hover{text-decoration:underline}
.row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ui-gap-sm)}
.row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gap-sm)}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ui-gap-sm)}
.row5{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gap-sm)}
.row6{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gap-sm)}
.rowTools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--ui-gap-sm);align-items:center}
.numField{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:center;background:var(--c-field);border:1px solid var(--c-border);border-radius:6px;padding:10px 12px}
.numField span{font-size:11px;color:var(--c-accent);white-space:nowrap}
.numField input{text-align:right;min-width:64px}
input,select,textarea,button{min-width:0;box-sizing:border-box;font:12px monospace;border-radius:6px}
input,select,textarea{width:100%}
.imprintFieldWrap{position:relative;width:100%}
.sec[data-sec="meta"] .row > .imprintFieldWrap{grid-column:1 / -1}
.imprintHint{position:absolute;right:8px;top:8px;z-index:2}
.imprintHintBtn{
  list-style:none;
  display:grid;
  place-items:center;
  width:26px;
  height:26px;
  border:1px solid rgba(184,74,84,.78);
  border-radius:999px;
  background:#7c1f2a;
  color:#fff1f3;
  font:700 18px/1 monospace;
  cursor:pointer;
  user-select:none;
}
.imprintHintBtn::-webkit-details-marker{display:none}
.imprintHintNote{
  position:absolute;
  right:0;
  top:34px;
  width:min(320px,calc(100vw - 80px));
  padding:8px 10px;
  border:1px solid rgba(184,74,84,.55);
  border-radius:6px;
  background:rgba(120,24,34,.96);
  color:#ffd7db;
  font-size:11px;
  line-height:1.4;
  box-shadow:0 10px 24px rgba(0,0,0,.28);
}
select{
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  padding-right:24px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--c-accent) 50%),
    linear-gradient(135deg, var(--c-accent) 50%, transparent 50%);
  background-position:
    calc(100% - 14px) calc(50% - 2px),
    calc(100% - 9px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
}
input[list]{
  padding-right:24px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--c-accent) 50%),
    linear-gradient(135deg, var(--c-accent) 50%, transparent 50%);
  background-position:
    calc(100% - 14px) calc(50% - 2px),
    calc(100% - 9px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
}
textarea{width:100%;min-height:84px;resize:vertical}
.tallField{min-height:112px}
#json{min-height:180px}
.parserJson{min-height:112px}
.parserTools{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.parserCard{display:grid;gap:8px;background:#0f1a2e;border:1px solid #28456f;border-radius:10px;padding:10px}
.parserCard h3{margin:0;font-size:13px;color:var(--c-accent-strong)}
.sectionGapTop{margin-top:16px}
.parserMiniList{max-height:180px;overflow:auto}
.parserMiniList > .item,
.parserMiniList > button.item{
  width:fit-content !important;
  max-width:none !important;
  min-width:0 !important;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.parserMiniList .parserListBtn{
  width:auto !important;
  max-width:100% !important;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  justify-content:normal;
}
.parserMiniList .parserListBtn.isCountable{
  grid-template-columns:minmax(0,1fr) 64px auto;
}
.parserMiniList .parserListBtn > span{
  min-width:0;
  overflow:visible;
  white-space:normal;
}
.parserMiniList .parserListBtn > input[type="number"]{
  width:64px;
  min-width:64px;
  padding:4px 6px;
}
.parserTopicTop{grid-template-columns:minmax(180px,220px) 1fr;gap:10px;align-items:start}
.parserEditGrid{display:grid;gap:8px}
.parserConversationCard{gap:10px}
.parserToolsWide{grid-template-columns:repeat(3,minmax(0,1fr))}
.parserNote{font-size:12px;line-height:1.35;color:#b8c8e6;background:color-mix(in srgb, var(--c-card) 70%, #1a2a46 30%)}
.parserTopicCard{gap:12px}
.parserSubhead{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--c-accent);opacity:.92}
.parserTopicRow{align-items:start}
.parserTopicActions{margin-top:4px}
.parserTopicTopFull{grid-template-columns:1fr;gap:12px}
.parserTopicTopFull .parserMiniList{width:100%;min-height:72px;max-height:140px}
.parserTopicTopFull .parserEditGrid{width:100%}
.parserTight{min-height:72px}
.parserListBtn{display:inline-flex;justify-content:space-between;align-items:center;gap:8px;width:fit-content;max-width:none}
.parserListBtn.active{outline:1px solid #8cb5ff}
.u-disabled{opacity:.55;pointer-events:none}
.char-actions-compact{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;align-items:center}
.char-actions-compact input,
.char-actions-compact button{min-height:var(--ui-control-h);height:var(--ui-control-h);box-sizing:border-box}
#btnCharDel{min-width:34px;padding:0 10px}
.quickDel{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;min-width:18px;height:18px;padding:0;line-height:1;border:1px solid var(--c-card-border);border-radius:3px;background:var(--c-card);color:#ffb3b3;cursor:pointer;font-size:11px}
.quickDel:hover{color:#fff;background:#7a2430;border-color:#a84b58}
button{cursor:pointer}
.iconBtn{min-height:var(--ui-btn-h);padding:6px 0;min-width:0;font-weight:700;line-height:1;font-size:21px}
.list{max-height:320px;overflow-y:auto;overflow-x:hidden;background:var(--c-panel-deep);border:1px solid var(--c-border-soft);border-radius:6px;padding:12px;display:grid;gap:var(--ui-gap-xs)}
.item{background:var(--c-card);border:1px solid var(--c-card-border);border-radius:6px;padding:11px}
.playtestDock select.playLanguageSelect{
  background:
    linear-gradient(45deg, transparent 50%, var(--c-accent) 50%),
    linear-gradient(135deg, var(--c-accent) 50%, transparent 50%),
    var(--c-field);
  background-position:
    calc(100% - 14px) calc(50% - 2px),
    calc(100% - 9px) calc(50% - 2px),
    0 0;
  background-size:5px 5px,5px 5px,auto;
  background-repeat:no-repeat;
}
.sec[data-sec="i18n"] #i18nTargetLang{
  background:
    linear-gradient(45deg, transparent 50%, var(--c-accent) 50%),
    linear-gradient(135deg, var(--c-accent) 50%, transparent 50%),
    var(--c-card);
  background-position:
    calc(100% - 14px) calc(50% - 2px),
    calc(100% - 9px) calc(50% - 2px),
    0 0;
  background-size:5px 5px,5px 5px,auto;
  background-repeat:no-repeat;
}
.item.active{outline:2px solid var(--c-accent)}
[hidden],
.u-hidden,
.isHidden{display:none !important}
#panelToggles .toolbtn[data-sec="rpglab"]{display:none !important}
body[data-game-type="classic-rpg"] #panelToggles .toolbtn[data-sec="rpglab"]:not([hidden]){display:inline-grid !important}
body[data-game-type="classic-rpg"] #panelToggles .toolbtn[data-sec="rooms"]{display:none !important}
.u-abs-pos{position:absolute;left:var(--x,0px);top:var(--y,0px)}
.u-size{width:var(--w,0px);height:var(--h,0px)}
.u-op{opacity:var(--op,1)}
.u-bgimg{background-image:var(--bg-img,none)}
.u-flex,
.inlineRow{display:flex;align-items:center;gap:8px}
.u-flex8,
.inlineRowWide{display:flex;align-items:center;gap:10px}
.u-grid-gap6,
.stackSm{display:grid;gap:8px}
.uiCols2{grid-template-columns:1fr 1fr}
.uiCols3{grid-template-columns:1fr 1fr 1fr}
.uiCols4{grid-template-columns:1fr 1fr 1fr 1fr}
.uiCols5{grid-template-columns:1.2fr 1fr 1fr 1fr auto}
.uiCols2Plus{grid-template-columns:1fr 1fr auto}
.uiColsTextButton{grid-template-columns:1fr 40px}
.uiCols2Action{grid-template-columns:1fr 1fr auto}
.uiCols3Action{grid-template-columns:1fr 1fr 1fr auto}
.uiColsAssetLink{grid-template-columns:3fr 1fr 3fr 1fr}
.metaAssetLite{display:grid;gap:10px}
.startscreenMetaRow{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.startscreenMetaRow > [data-level="3"]{max-width:320px}
.metaAssetLiteTitle{font-size:11px;color:var(--c-accent);letter-spacing:.02em;text-transform:uppercase}
.pageTextLayoutCard{gap:12px}
.pageTextLayoutPreview{position:relative;min-height:220px;border:1px solid var(--c-border-soft);border-radius:10px;background:#101828 center/contain no-repeat;overflow:hidden}
.pageTextLayoutPreviewText{position:absolute;left:10%;top:70%;width:80%;padding:10px 12px;border-radius:10px;background:rgba(7,10,18,.72);color:#fff7dc;line-height:1.35;white-space:pre-wrap;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--page-text-lines,4);overflow:hidden}
.pageTextLayoutPreviewText[data-role="speech"]{border-radius:18px 18px 18px 4px;background:rgba(255,255,255,.92);color:#101820}
.pageTextLayoutPreviewText[data-role="thought"]{border-radius:999px;border:1px dashed rgba(16,24,32,.45);background:rgba(255,255,255,.9);color:#101820}
.pageTextLayoutPreviewText[data-role="sfx"]{background:transparent;color:#fff3b8;font-weight:900;text-transform:uppercase;text-shadow:3px 3px 0 #101820,-2px 2px 0 #101820,2px -2px 0 #101820;transform:rotate(-6deg)}
.pageTextLayoutPreviewText[data-style="burst"]{clip-path:polygon(50% 0,58% 22%,82% 8%,76% 32%,100% 40%,78% 54%,92% 78%,64% 70%,50% 100%,38% 72%,8% 84%,22% 58%,0 44%,24% 32%,14% 8%,42% 22%);padding:18px}
.pageTextLayoutPreviewText[data-style="jagged"]{border-radius:6px;transform:rotate(-3deg)}
.pageTextLayoutPreviewText[data-style="whisper"]{opacity:.86;border-style:dotted}
.pageTextLayoutPreviewText[data-style="neon"]{color:#8dfff3;text-shadow:0 0 6px #00d4ff,0 0 18px #00d4ff,2px 2px 0 #06111f}
.pageTextLayoutPreviewText[data-style="stamp"]{color:#ff5b5b;text-shadow:none;border:4px solid currentColor;transform:rotate(-8deg);background:rgba(255,255,255,.88)}
.pageTextLayoutPreviewText[data-style="speed"]{font-style:italic;letter-spacing:0;text-shadow:4px 0 0 rgba(255,255,255,.22),8px 0 0 rgba(255,255,255,.1),2px 2px 0 #101820}
.metaAssetInfo{min-height:80px;display:flex;align-items:center}
.metaAssetCardRow{display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:20px;align-items:stretch}
.metaAssetCardRow .metaAssetInfo{min-width:0;max-width:none;display:flex;gap:18px;align-items:center;min-height:80px;padding:16px 18px;border:2px solid #34588f;border-radius:14px;background:color-mix(in srgb, var(--c-panel) 78%, #20365c 22%)}
.metaAssetCardRow #metaCoverAssetInfo{min-height:0}
.metaAssetCardRow #metaStartMusicAssetInfo{min-height:0}
.metaAssetCardRow .metaAssetActions{min-width:0}
.metaAssetActions{display:flex;gap:8px;align-items:center}
.metaAssetActions > button{min-width:92px}
.metaAssetActions > button.iconBtn{min-width:45px;width:45px;height:40px;padding:0;font-size:17px;line-height:1;border-radius:10px}
.metaAssetActions > select{min-width:0;flex:1 1 220px}
.metaAssetActionGrid{display:grid;grid-template-columns:45px 45px;gap:10px;justify-content:end;align-content:start}
#roomVoiceoverLanguage{width:auto;min-width:96px;max-width:132px;flex:0 0 auto}
.metaAssetActionGrid > button{grid-column:auto}
.metaAssetThumb{width:70px;height:70px;flex:0 0 70px;border-radius:10px;border:1px solid #4f76b2;background:var(--c-panel-deeper) center center/cover no-repeat;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.metaAssetText{min-width:0;display:grid;gap:4px}
.metaAssetTextTitle{font-size:13px;color:#c6dafb;letter-spacing:.01em}
.metaAssetLabel{min-width:0;display:block;white-space:pre-line;overflow-wrap:anywhere;font-size:12px;line-height:1.35;color:#d9e6ff}
.metaAssetInfoTextOnly{padding-left:24px}
.companionGrid{align-items:start}
.companionCodesList{max-height:320px}
.companionCodeItem{width:100%;text-align:left}
.companionPreviewCard{display:grid;gap:12px;align-content:start;min-height:220px}
.companionQrPreview{display:block;width:min(100%,240px);aspect-ratio:1/1;align-self:start;justify-self:center;background:#fff;border-radius:10px;padding:10px;border:1px solid #38547f}
.companionScanGrid{align-items:start}
.companionScanVideo{display:block;width:100%;min-height:220px;max-height:320px;background:#05080f;border:1px solid var(--c-border);border-radius:10px;object-fit:cover}
.companionScanPanel{display:grid;gap:12px;align-content:start;min-height:220px}
.uiColsMediaLink{grid-template-columns:2fr 1fr}
.uiColsMediaTransport{grid-template-columns:2fr 1fr 1fr}
.uiColsSizeActions{grid-template-columns:1fr 1fr auto auto}
.uiColsMainActions{grid-template-columns:1fr auto auto auto}
.u-span-all,
.spanAll{grid-column:1/-1}
.u-maxh220,
.maxH220{max-height:220px}
.u-maxh360,
.maxH360{max-height:360px}
.u-prewrap,
.preWrap{white-space:pre-wrap}
.u-ctx-panel,
.contextPanel{position:fixed;display:none;z-index:9999;width:320px;padding:8px}
.u-ctx-panel-mod,
.contextPanelMod{position:fixed;display:none;z-index:10000;width:280px;padding:8px}
.u-ctx-panel-delete-link,
.contextPanelDeleteLink{position:fixed;display:none;z-index:16000;width:240px;padding:8px}
.u-ctx-panel,.u-ctx-panel-mod,.u-ctx-panel-delete-link,
.contextPanel,.contextPanelMod,.contextPanelDeleteLink{left:var(--x,0px);top:var(--y,0px)}
.u-ctx-panel,
.contextPanel{visibility:var(--vis,visible)}
.u-ctx-panel.open,.u-ctx-panel-mod.open,.u-ctx-panel-delete-link.open,
.contextPanel.open,.contextPanelMod.open,.contextPanelDeleteLink.open{display:grid}
.u-preview,
.previewMedia{display:none;background:var(--c-panel-deeper);border:1px solid var(--c-border);border-radius:6px}
.u-preview-100,
.previewLg{max-height:100px}
.u-preview-90,
.previewMd{max-height:90px}
.u-preview-64,
.previewSm{max-height:64px}
.u-preview-zoom,
.isZoomable{cursor:zoom-in}
.u-wave-canvas,
.waveCanvas{width:100%;background:var(--c-panel-deeper);border:1px solid var(--c-border);border-radius:8px}
.u-wave-h96,
.waveTall{height:96px}
.u-wave-h84,
.waveShort{height:84px}
.fontPreviewCard{display:grid;gap:8px;min-height:92px;padding:12px 14px;background:linear-gradient(180deg, color-mix(in srgb, var(--c-panel-deep) 88%, #ffffff 12%), var(--c-panel-deeper));border:1px solid var(--c-border-soft);border-radius:8px}
.fontPreviewLabel{font-size:26px;line-height:1.25;color:var(--c-text);word-break:break-word}
.fontPreviewBody{font-size:17px;line-height:1.4;color:var(--c-text);opacity:.96;word-break:break-word}
.fontPreviewInput{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--c-border-soft);border-radius:8px;background:var(--c-field);color:var(--c-text);font-size:16px}
.fontPreviewMeta{font-size:12px;line-height:1.35;color:var(--c-text-dim);opacity:.92;word-break:break-word}
.u-ctx-ud,
.contextDirVertical{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:2px;min-height:44px}
.u-file-hidden,
.fileInputHidden{display:none}
#log{white-space:pre-wrap;min-height:86px;background:var(--c-panel-deep);border:1px solid var(--c-border-soft);border-radius:6px;padding:10px}
#obj,#log{width:100%;box-sizing:border-box}
#obj.roomChipList{display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}
#obj.roomChipList .roomChip{max-width:100%;display:inline-flex}
#obj.roomChipList .roomChipMain{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
#play{height:195px;background:var(--c-panel-deep);border:1px solid var(--c-border-soft);border-radius:6px;padding:10px;overflow:auto;display:grid;gap:10px;align-content:start}
.playBlock{display:grid;gap:6px}
.playIntro{margin-bottom:18px}
.playRoomLine{padding:7px 10px;border-radius:6px;border:1px solid color-mix(in srgb, var(--play-room, #355896) 75%, #ffffff 25%);background:color-mix(in srgb, var(--play-room, #355896) 24%, #0e1627 76%);color:#eef5ff;font-weight:bold}
.playText{white-space:pre-wrap;line-height:1.45}
.playModeEliza{
  border:1px solid #86b6d9;
  border-radius:10px;
  background:
    radial-gradient(circle at top right, rgba(146,201,214,.18), transparent 32%),
    linear-gradient(180deg, rgba(20,35,51,.96), rgba(12,24,38,.96));
  box-shadow:inset 0 0 0 1px rgba(215,239,244,.08), 0 10px 26px rgba(0,0,0,.18);
}
.playModeEliza .playBlock{
  padding:10px 12px;
  border-left:4px solid #9fd7e2;
  background:rgba(255,255,255,.02);
  border-radius:8px;
}
.playModeEliza .playRoomLine{
  border-color:rgba(159,215,226,.55);
  background:linear-gradient(180deg, rgba(34,71,88,.62), rgba(20,44,58,.58));
  color:#effcff;
}
.playModeEliza .playText{
  color:#eaf7fb;
}
.playModeEliza .playText::before{
  content:'Dr. Eliza Doolittle';
  display:block;
  margin:0 0 6px;
  font-size:11px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:#a9dce6;
}
.play-dnd{display:grid;gap:8px;background:var(--c-field);border:1px solid var(--c-border);border-radius:6px;padding:10px}
.play-dnd h3{margin:0;color:var(--c-accent);font-size:12px}
.play-dnd-list{display:flex;flex-wrap:wrap;gap:6px}
.play-chip{display:inline-flex;align-items:center;justify-content:center;padding:6px 8px;border-radius:6px;border:1px solid #3a5688;background:#16294a;cursor:grab;font-size:12px}
.play-chip.empty{opacity:.7;cursor:default}
.play-drop{display:inline-flex;align-items:center;justify-content:center;padding:6px 8px;border-radius:6px;border:1px dashed #5476ad;background:var(--c-card);font-size:12px;min-width:88px}
.play-drop.hover{outline:2px solid var(--c-accent)}
.csvpick-wrap{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:stretch}
.csvpick-btn{font-size:12px;line-height:1;padding:6px 7px;min-width:28px}
.csvpick-menu{position:fixed;z-index:12000;display:none;left:var(--x,0px);top:var(--y,0px);min-width:260px;max-width:360px;max-height:60vh;overflow:auto;background:#111a31;border:1px solid #3c4f80;border-radius:10px;padding:8px;box-shadow:0 10px 26px rgba(0,0,0,.45)}
.csvpick-menu.open{display:grid}
.csvpick-head{display:grid;gap:6px;position:sticky;top:0;background:#111a31;padding-bottom:6px}
.csvpick-grid{display:grid;gap:6px}
.csvpick-row{display:flex;align-items:center;gap:6px;background:var(--c-card);border:1px solid var(--c-card-border);border-radius:6px;padding:7px 9px;font-size:12px}
.csvpick-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
#graphWrap{position:relative;height:100%;min-height:560px;background:var(--c-surface-dark);border:1px solid var(--c-border);border-radius:8px;overflow:auto}
#graphCanvas{position:relative;min-width:100%;min-height:100%}
body[data-presentation="book"][data-graph-view="page"] #graphWrap{overflow:hidden}
.wideField{grid-column:1 / -1;width:100%}
.bookPageEditor{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;height:100%;min-height:0;padding:14px;background:rgba(8,14,24,.72);box-sizing:border-box}
.bookPageEditorHead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.bookPageEditorTitle{font-size:12px;font-weight:700;color:var(--c-accent)}
.bookPageEditorMeta{font-size:11px;color:var(--c-text-muted)}
.bookPageStrip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(100px,100px);gap:10px;overflow-x:auto;overflow-y:hidden;padding:0 2px 6px}
.bookPageChip{position:relative;display:grid;align-content:end;gap:6px;padding:8px;min-height:100px;border:1px solid var(--c-border-soft);border-radius:12px;background:#0d1727;color:var(--c-text);text-align:left;cursor:pointer;overflow:hidden}
.bookPageChip.is-active{border-color:#e0bb69;box-shadow:0 0 0 1px rgba(224,187,105,.3)}
.bookPageChip.is-dragging{opacity:.55}
.bookPageChip.is-drop-target,.bookPageAddBtn.is-drop-target{box-shadow:0 0 0 2px rgba(224,187,105,.5);border-color:#e0bb69}
.bookPageChipThumb{position:absolute;inset:0;border-radius:0;background:#182233 center/cover no-repeat;opacity:.9}
.bookPageChipName,.bookPageChipMeta{position:relative;z-index:2}
.bookPageChipName{font-size:12px;font-weight:700;color:#f4d184;text-shadow:0 1px 3px rgba(0,0,0,.65)}
.bookPageChipMeta{display:none}
.bookPageChipIndex{position:absolute;left:8px;top:8px;z-index:3;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:rgba(7,10,18,.82);border:1px solid rgba(255,255,255,.14);font-size:12px;font-weight:700;color:#fff7dc}
.bookPageChipState{position:absolute;right:8px;bottom:8px;z-index:3;display:grid;place-items:center;width:26px;height:26px;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:rgba(7,10,18,.82);font-size:13px;font-weight:700}
.bookPageChipState.is-none{color:#ff6f6f}
.bookPageChipState.is-warn{color:var(--c-warn)}
.bookPageChipState.is-ok{color:var(--c-success)}
.bookPageAddBtn{display:grid;place-items:center;width:48px;min-width:48px;height:48px;align-self:center;border-radius:999px;border:1px solid var(--c-border-soft);background:#162338;color:#f4d184;font-size:28px;font-weight:700;cursor:pointer}
.contextPanelDeleteLink button{width:100%;text-align:left}
.contextPanelMiniHead{display:flex;justify-content:flex-end;margin:-2px 0 4px}
.contextPanelMiniHead button{width:26px!important;min-width:26px;height:26px;padding:0;text-align:center;border-radius:6px}
.bookPageStage{height:100%;min-height:360px;border:1px solid var(--c-border-soft);border-radius:10px;background:#101828;overflow:hidden;padding:12px;display:grid;box-sizing:border-box}
.bookPageStageGrid{display:grid;gap:12px;align-items:start;align-content:center;justify-items:center;width:100%;height:100%;padding:8px 0;align-self:stretch;overflow:auto;box-sizing:border-box}
.bookPageStageGrid.is-spread{grid-template-columns:repeat(2,minmax(0,1fr))}
.bookPagePane{display:grid;gap:10px;align-content:start;justify-items:center}
.bookPagePaneMedia{position:relative;border:1px solid var(--c-border-soft);border-radius:12px;background:#101828 center/contain no-repeat;overflow:hidden;min-height:280px}
.bookPagePane.is-active .bookPagePaneMedia{border-color:#e0bb69;box-shadow:0 0 0 1px rgba(224,187,105,.32)}
.bookPageText{position:absolute;left:10%;top:70%;width:80%;padding:10px 12px;border-radius:10px;background:rgba(7,10,18,.72);color:#fff7dc;font-size:100%;line-height:1.35;white-space:pre-wrap;cursor:grab;user-select:none;box-shadow:0 10px 24px rgba(0,0,0,.28);box-sizing:border-box}
.bookPageText[data-role="speech"]{border-radius:18px 18px 18px 4px}
.bookPageText[data-role="thought"]{border-radius:999px;border:1px dashed rgba(0,0,0,.35)}
.bookPageText[data-role="sfx"]{border:0;background:transparent!important;font-weight:900;text-transform:uppercase;text-shadow:3px 3px 0 #101820,-2px 2px 0 #101820,2px -2px 0 #101820;box-shadow:none;transform:rotate(-6deg)}
.bookPageText[data-style="burst"]{clip-path:polygon(50% 0,58% 22%,82% 8%,76% 32%,100% 40%,78% 54%,92% 78%,64% 70%,50% 100%,38% 72%,8% 84%,22% 58%,0 44%,24% 32%,14% 8%,42% 22%);padding:18px}
.bookPageText[data-style="whisper"]{opacity:.86;border-style:dotted}
.bookPageText[data-style="jagged"]{border-radius:6px;transform:rotate(-3deg)}
.bookPageText[data-style="neon"]{color:#8dfff3;text-shadow:0 0 6px #00d4ff,0 0 18px #00d4ff,2px 2px 0 #06111f}
.bookPageText[data-style="stamp"]{color:#ff5b5b;text-shadow:none;border:4px solid currentColor;transform:rotate(-8deg);background:rgba(255,255,255,.88)}
.bookPageText[data-style="speed"]{font-style:italic;letter-spacing:0;text-shadow:4px 0 0 rgba(255,255,255,.22),8px 0 0 rgba(255,255,255,.1),2px 2px 0 #101820}
.bookPageHotspot{position:absolute;border:2px dashed rgba(244,185,66,.92);border-radius:12px;background:rgba(244,185,66,.08);box-shadow:0 0 0 1px rgba(7,10,18,.35) inset;cursor:grab;overflow:hidden}
.bookPageHotspot.is-active{border-style:solid;background:rgba(244,185,66,.26);box-shadow:0 0 0 2px rgba(255,238,185,.24),0 0 0 1px rgba(7,10,18,.42) inset}
.bookPageHotspot.is-outline:hover{box-shadow:0 0 0 2px rgba(255,244,196,.72),0 0 0 1px rgba(7,10,18,.35) inset}
.bookPageHotspotLabel{position:absolute;left:6px;top:6px;padding:2px 6px;border-radius:999px;background:rgba(7,10,18,.82);color:#fff4ca;font-size:10px;font-weight:700;line-height:1}
.bookPageHotspotImage{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.bookPageHotspotHandle{position:absolute;right:6px;bottom:6px;width:14px;height:14px;border-radius:4px;background:rgba(244,185,66,.9);border:1px solid rgba(7,10,18,.85);cursor:nwse-resize}
.bookPageHotspot.is-dragging{cursor:grabbing}
.bookTitlePageText{display:flex;flex-direction:column;justify-content:space-between;min-height:100%}
.bookTitlePageHead{display:grid;gap:.28em;text-align:center;padding-top:10%}
.bookTitlePageTitle{font-size:1.18em;font-weight:700;line-height:1.15}
.bookTitlePageSubtitle{font-size:.72em;line-height:1.25;color:var(--book-subtitle-color, inherit)}
.bookTitlePageAuthor{margin-top:auto;padding-bottom:10%;font-size:.46em;line-height:1.2;text-align:center;color:var(--book-author-color, inherit);opacity:.92}
.bookPageTextHandle{position:absolute;right:6px;bottom:6px;width:14px;height:14px;border-radius:4px;background:rgba(244,185,66,.9);border:1px solid rgba(7,10,18,.85);cursor:ew-resize}
.bookPageText.is-dragging{cursor:grabbing}
#graphLines{position:absolute;left:0;top:0;pointer-events:none;z-index:1}
#graphLayer{position:absolute;left:0;top:0;z-index:2}
#graphCanvas,#graphLayer{width:var(--w,100%);height:var(--h,100%)}
#graphWelcome{display:none;padding-top:100px;text-align:center;box-sizing:border-box;min-height:100%}
#graphWelcome .welcomeLead{margin:0 0 12px;color:var(--c-accent);font-size:15px;line-height:1.5}
#graphWelcome h1{margin:0 0 18px;font-size:32px;line-height:1.15;color:var(--c-accent-strong)}
#graphWelcome .welcomeMeta{margin:0;color:var(--c-accent);font-size:15px;line-height:1.7}
body[data-project-ready="false"] #graphWelcome{display:block}
body[data-project-ready="false"] #graphCanvas{display:none}
.dialogueGraphHost{position:absolute;inset:0;z-index:40;display:none;grid-template-columns:minmax(0,1fr);padding:10px;box-sizing:border-box;background:transparent}
.dialogueGraphHost.open{display:grid}
.dialogueGraphHost.story-mode{grid-template-columns:minmax(220px,20%) minmax(0,80%);gap:10px}
.storyGraphSidebar{display:none;min-width:0;border:1px solid var(--c-border);border-radius:10px;background:var(--c-surface-panel);padding:10px;overflow:auto}
.dialogueGraphHost.story-mode .storyGraphSidebar{display:grid;align-content:start;gap:10px}
.storyGraphSidebarHead{font-size:12px;font-weight:700;color:#cfe3ff;letter-spacing:.2px}
.storyGraphScenesList{display:grid;gap:8px;align-content:start}
.storySceneChipNarration .roomChipMain,
.storySceneChipNarrationMain{color:#dce9ff}
.storySceneChipDialogue{background:#241a33;border-color:#6a4a86}
.storySceneChipDialogue .roomChipMain,
.storySceneChipDialogueMain{color:#f1e7ff}
.dlgWorkspaceWrap{min-width:0;display:grid}
body[data-graph-view="story"] #storySectionsList{display:none}


/* --- editor-workspaces.css --- */

.startscreenGraphHost{position:absolute;inset:0;z-index:4;display:none;padding:10px;box-sizing:border-box;overflow:hidden;background:transparent}
.startscreenGraphHost.open{display:grid}
.runtimeDesignGraphHost{position:absolute;inset:0;z-index:4;display:none;padding:10px;box-sizing:border-box;overflow:auto;background:var(--c-panel-soft)}
.runtimeDesignGraphHost.open{display:grid;place-items:center}
.runtimeDesignGraphShell{display:grid;grid-template-columns:minmax(240px,320px) minmax(360px,1fr);gap:12px;width:min(1180px,100%);align-content:center}
.runtimeDesignGraphControls{display:grid;gap:10px;align-content:start;max-height:calc(100vh - 160px);overflow:auto}
.runtimeDesignSettingsBlock{display:grid;gap:10px}
.runtimeDesignGraphPreview{min-height:360px;align-content:stretch}
.runtimeDesignGraphPreview .runtimeDesignPreviewPanel{min-height:220px;align-content:center}
.runtimeDesignGraphActions{display:flex;justify-content:flex-end;gap:8px}
.vectorGraphHost{position:absolute;inset:0;z-index:4;display:none;grid-template-rows:auto auto auto auto auto auto auto auto 1fr;gap:8px;padding:10px;box-sizing:border-box;background:transparent}
.vectorGraphHost.open{display:grid}
.vectorGraphHost.workspaceOnly{grid-template-rows:1fr}
.uiBar{align-items:center}
.uiBarLabel{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--c-accent-strong)}
.uiFormRow{align-items:start}
.uiPickRow{grid-template-columns:minmax(0,1fr) auto;align-items:center}
.uiActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.uiStatusStack{display:grid;gap:8px}
.uiChipList{max-height:220px}
.sec[data-sec="logic"] #btnFlagAdd,
.sec[data-sec="logic"] #btnVarAdd,
.sec[data-sec="logic"] #btnObjAdd{
  width:112px;
  min-width:112px;
  padding:0 10px;
  justify-self:end;
}
.sec[data-sec="logic"] #flagKey,
.sec[data-sec="logic"] #varKey{
  min-width:0;
}
.justifyEnd{justify-content:flex-end}
.editorToolsDock{display:grid;gap:8px}
.editorToolsDock > *{margin:0}
.sceneEditorDockPanel{position:relative;z-index:80;display:grid;gap:6px;margin:0 0 8px;border:1px solid var(--c-border-soft);border-radius:10px;padding:8px;background:var(--c-panel-soft);overflow:visible}
.sceneEditorDockPanel > h3{display:none}
body:not([data-graph-view="scene"]) .sceneEditorDockPanel{display:none}
.sceneEditorDockPanel .editorToolsDock{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0;overflow:visible;padding:0}
.sceneEditorDockPanel .editorToolSection{position:relative;display:block;padding:0;border:0;background:transparent}
.sceneEditorDockPanel .editorToolSection > h4{display:none}
.sceneMenuButton{height:30px;min-width:86px;padding:0 12px;border-radius:999px;font-size:12px}
.sceneMenuPanel{position:absolute;left:0;top:36px;z-index:30;display:none;gap:6px;min-width:260px;max-width:min(520px,70vw);max-height:min(360px,55vh);overflow:auto;padding:10px;border:1px solid var(--c-border);border-radius:10px;background:var(--c-surface-panel);box-shadow:0 18px 42px rgba(0,0,0,.38)}
.sceneMenuSection.open .sceneMenuPanel{display:grid}
.sceneMenuPanel .uiBar,.sceneMenuPanel.row2{grid-template-columns:1fr}
.editorToolSection{display:grid;gap:8px;border:1px solid var(--c-border);border-radius:10px;padding:10px;background:var(--c-surface-panel)}
.editorToolSection > h4{margin:0;font-size:12px;letter-spacing:.2px;color:#c9deff}
.editorToolSectionBody{display:grid;gap:8px}
.vectorWorkspaceBar{grid-template-columns:1.2fr repeat(11,minmax(0,1fr))}
.vectorSceneModeBar{grid-template-columns:repeat(6,minmax(0,1fr)) 2.2fr}
.vectorStyleBar{grid-template-columns:repeat(4,minmax(0,1fr))}
.vectorShapeBar{grid-template-columns:.8fr 1fr 1fr 1fr .8fr 1fr}
.vectorSceneBar{grid-template-columns:1.4fr .6fr .8fr .8fr .8fr}
.vectorSceneRoomBar{grid-template-columns:1fr .9fr .8fr .8fr 1.2fr 1fr 1fr}
#bookTextColor,
#bookPillColor{
  padding:0;
}
.vectorAssetBar{grid-template-columns:1.3fr repeat(3,minmax(0,1fr))}
.vectorInstanceBar{grid-template-columns:1.2fr repeat(3,minmax(0,1fr)) repeat(7,minmax(78px,.7fr)) 1fr}
.vectorAnimationBar{grid-template-columns:1.1fr repeat(4,minmax(72px,.7fr)) repeat(2,minmax(74px,.7fr)) 96px}
.vectorAnimPreview{width:92px;height:48px;border:1px solid var(--c-border);border-radius:6px;background-color:#081120;background-repeat:no-repeat;background-position:0 0;background-size:contain;overflow:hidden}
.vectorSpriteFo{width:100%;height:100%;background-repeat:no-repeat;background-position:0 0;animation-name:vectorSpriteSheetPreview;animation-timing-function:steps(var(--sprite-frames,1));animation-iteration-count:infinite}
@keyframes vectorSpriteSheetPreview{from{background-position-x:0}to{background-position-x:var(--sprite-end,-64px)}}
.vectorCutsceneBar{grid-template-columns:repeat(3,minmax(92px,.75fr)) repeat(2,minmax(0,1fr)) 1.2fr 1fr repeat(2,minmax(0,1fr))}
.vectorTimelineBar{grid-template-columns:.9fr 1.5fr .8fr repeat(6,minmax(0,1fr))}
.vectorTimelineList{max-height:140px;overflow:auto}
.vectorStyleBar input[type="number"]{min-width:72px}
.vectorTrackRow{display:grid;gap:6px;padding:8px 10px;border:1px solid var(--c-border);border-radius:8px;background:#0f1a30}
.vectorTrackKeys{display:flex;flex-wrap:wrap;gap:6px}
.vectorKeyChip{padding:3px 8px;border:1px solid var(--c-stroke-mid);border-radius:999px;background:#13213c;font-size:11px;cursor:pointer}
.vectorKeyChip.sel{border-color:var(--c-gold);background:#3a3011}
.vectorWorkspace{position:relative;min-height:320px;height:100%;background:var(--c-panel-deeper);border:1px solid var(--c-border);border-radius:10px;overflow:hidden}
.vectorWorkspaceSurface{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.vectorBgPreview{position:absolute;left:0;top:0;max-width:none;pointer-events:none;opacity:.45;filter:saturate(.9)}
.vectorOverlayPreview{position:absolute;left:0;top:0;max-width:none;pointer-events:none;opacity:.35;mix-blend-mode:screen;filter:saturate(.8)}
.vectorWorkspaceSvg{width:1400px;height:900px;overflow:visible}
.vectorPaper{fill:#0e1628;stroke:#31466f;stroke-width:1}
.vectorShape .vectorPath{cursor:pointer}
.vectorShape.sel .vectorPath{filter:drop-shadow(0 0 8px rgba(122,167,255,.35))}
.vectorShape.role-walkable .vectorPath{stroke:#7cd992}
.vectorShape.role-collision .vectorPath{stroke:#ff7d7d}
.vectorShape.role-trigger .vectorPath{stroke:#ffd071}
.vectorShape.role-foreground .vectorPath{stroke:#8fc3ff}
.vectorShape.role-mask .vectorPath{stroke:#d88fff}
.vectorShape.is-hidden{opacity:.28}
.vectorShapeLabel{fill:var(--c-accent-strong);font-size:12px;font-weight:700;paint-order:stroke;stroke:#081120;stroke-width:3px;pointer-events:none}
.vectorInstanceGroup{cursor:move}
.vectorInstanceGroup.sel .vectorInstanceFrame{stroke:var(--c-gold);stroke-width:2}
.vectorInstanceFrame{fill:rgba(122,167,255,.05);stroke:rgba(122,167,255,.35);stroke-dasharray:8 6}
.vectorInstanceImage{pointer-events:none}
.vectorInstanceMissing{fill:rgba(255,112,112,.14);stroke:rgba(255,112,112,.75);stroke-dasharray:6 6}
.vectorInstanceLabel{fill:var(--c-accent);font-size:12px;font-weight:700;paint-order:stroke;stroke:#081120;stroke-width:3px;pointer-events:none}
.vectorCameraFrame{fill:none;stroke:var(--c-gold);stroke-width:2;stroke-dasharray:12 8;pointer-events:none}
.vectorPoint{fill:var(--c-accent-strong);stroke:#173257;stroke-width:2;cursor:pointer}
.vectorPoint.hover{fill:#ffd071}
.vectorPoint.sel{fill:#7cd992}
.vectorCtxMenu{position:fixed;display:none;z-index:100010;gap:6px;padding:10px;background:var(--c-surface-input);border:1px solid var(--c-stroke-mid);border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.35)}
#rpgMapCanvas{position:absolute;left:0;top:0;z-index:2;display:none;image-rendering:pixelated;cursor:crosshair}
#rpgMapCanvas{left:var(--x,0px);top:var(--y,0px);width:var(--w,0px);height:var(--h,0px)}
#rpgMapCanvas.active{display:block}
#rpgLegend{position:absolute;right:8px;top:8px;z-index:3;min-width:170px;max-width:200px;background:var(--c-field);border:1px solid var(--c-border);border-radius:8px;padding:8px;display:none;gap:6px}
#rpgLegend.u-abs-pos{right:auto}
#rpgLegend.open{display:grid}
.rpgLegendTitle{font-size:12px;color:var(--c-accent)}
.rpgLegendItem{display:grid;grid-template-columns:14px 1fr;gap:6px;align-items:center;border:1px solid var(--c-border);border-radius:6px;padding:4px 6px;background:var(--c-surface-input);cursor:pointer}
.rpgLegendItem.on{outline:2px solid #8fc3ff}
.rpgTileCtx{position:fixed;left:var(--x,0px);top:var(--y,0px);z-index:14000;min-width:210px;background:var(--c-field);border:1px solid var(--c-border);border-radius:8px;padding:6px;display:grid;gap:4px;box-shadow:0 12px 30px var(--c-shadow-strong)}
.rpgTileCtx button{height:30px;text-align:left}
.pcaLabBar{display:grid;grid-template-columns:1fr 1fr 1fr auto auto auto auto;gap:6px;margin-bottom:8px}
.pcaStage{position:relative;width:960px;height:540px;border:1px solid var(--c-border);border-radius:8px;overflow:hidden;background:var(--c-field);background-size:cover;background-position:center}
.pcaStage.u-bgimg{background-image:var(--bg-img,none)}
.pcaEnt{position:absolute;left:var(--x,0px);top:var(--y,0px);transform:scale(var(--sc,1));min-width:30px;min-height:30px;border:1px solid #7aa6ff;background:rgba(26,47,102,.55);color:#e6f1ff;border-radius:6px;padding:4px 6px;cursor:move;font-size:11px;user-select:none}
.pcaEnt.pcaAssetInst{width:var(--w,160px);height:var(--h,100px);padding:0;overflow:hidden;background:rgba(10,18,35,.48)}
.pcaEnt.pcaAssetInst img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.pcaEnt.pcaAssetInst span{position:absolute;left:4px;bottom:3px;padding:1px 4px;border-radius:4px;background:rgba(5,10,22,.72);pointer-events:none}
.pcaEnt.sel{outline:2px solid var(--c-accent)}
.pcaSpot{position:absolute;left:var(--x,0px);top:var(--y,0px);width:var(--w,32px);height:var(--h,24px);border:1px dashed #ffd166;background:rgba(255,209,102,.18);color:#ffe8b0;padding:2px 4px;font-size:10px;cursor:move}
.pcaOverlay{position:absolute;inset:0;pointer-events:none}
.eobWrap{display:grid;gap:10px;border:1px solid var(--c-border);border-radius:10px;padding:10px;background:#0b1225}
.eobTop{display:grid;grid-template-columns:3fr 1fr;gap:8px}
.eobView{min-height:190px;aspect-ratio:4/3;border:2px solid #4a67a1;border-radius:6px;background:linear-gradient(180deg,#5b2028 0%,#2b1430 52%,#4a3a1f 100%);position:relative;overflow:hidden}
.eobBg{position:absolute;left:0;right:0;background:var(--bg,#000)}
.eobBgTop{top:0;height:50%}
.eobBgBottom{bottom:0;height:50%}
.eobPoly{position:absolute;left:0;top:0;width:100%;height:100%;clip-path:polygon(var(--poly,0 0,100% 0,100% 100%,0 100%));background:var(--bg,transparent)}
.eobWallL,.eobWallR{border:1px solid #2b3b24;box-sizing:border-box}
.eobEdgeL{border-left:1px solid #385032}
.eobEdgeR{border-right:1px solid #385032}
.eobEdgeT{border-top:1px solid #31482b}
.eobEdgeB{border-bottom:1px solid #31482b}
.eobFront{position:absolute;left:var(--l,0);top:var(--t,0);width:var(--w,100%);height:var(--h,100%);background:var(--bg,#23331d);border:1px solid #23331d;box-sizing:border-box}
.eobLamp{position:absolute;width:14px;height:22px;border-radius:7px;background:#2f1f10;border:1px solid rgba(12,8,4,.8)}
.eobLampGlow{position:absolute;width:12px;height:12px;border-radius:50%}
.eobLampL{left:19%;top:46%}
.eobLampR{right:19%;top:46%}
.eobLampF{left:48%;top:44%;transform:translateX(-50%)}
.eobLampGlowL{left:20%;top:42%;background:radial-gradient(circle,#ffeaa4 0%,#ffc766 60%,rgba(255,199,102,.15) 100%);box-shadow:0 0 16px rgba(255,212,122,.45)}
.eobLampGlowR{right:20%;top:42%;background:radial-gradient(circle,#ffeaa4 0%,#ffc766 60%,rgba(255,199,102,.15) 100%);box-shadow:0 0 16px rgba(255,212,122,.45)}
.eobLampGlowF{left:50%;top:40%;transform:translateX(-50%);background:radial-gradient(circle,#fff0b8 0%,#ffd37a 60%,rgba(255,211,122,.2) 100%);box-shadow:0 0 18px rgba(255,222,140,.5)}
.eobHudText{position:absolute;left:8px;right:8px;bottom:8px;background:var(--c-shadow-strong);border:1px solid #4b68a2;border-radius:4px;padding:4px 6px;font-size:11px}
.eobParty{display:grid;grid-template-columns:1fr;gap:6px}
.eobCard{border:1px solid #4b68a2;border-radius:6px;background:#1a2f66;padding:6px;display:grid;gap:4px}
.eobCard .name{font-size:11px;font-weight:bold}
.eobCard .hp{font-size:11px;opacity:.9}
.eobOpts{display:flex;gap:6px;flex-wrap:wrap}
.eobOptBtn{font-size:11px;padding:6px 8px;border:1px solid #3e5486;border-radius:6px;background:#13274d;color:var(--c-accent-strong);cursor:pointer}
.eobOptBtn.on{outline:2px solid #8fc3ff}
.eobBody{border:1px solid var(--c-border);border-radius:8px;background:var(--c-field);padding:8px;min-height:120px;max-height:210px;overflow:auto;display:grid;gap:6px}
.eobItem{font-size:11px;border:1px solid var(--c-border);border-radius:6px;padding:4px 6px;background:var(--c-surface-input)}
.rpgNavGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.rpgFacesCols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rpgFaceCell{display:grid;gap:4px;border:1px solid var(--c-border);border-radius:6px;background:var(--c-field);padding:6px}
.rpgFaceHdr{font-size:11px;color:var(--c-accent)}
.rpgFaceMatrix{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rpgFaceMatrix select{font-size:12px}
.rpgLegendNav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:4px}
.rpgSw{width:14px;height:14px;border:1px solid #1a1a1a}
.rpgSwDyn{background:var(--sw)}
.dlgWorkspaceBar{grid-template-columns:1.2fr repeat(7,minmax(0,1fr))}
.dlgWorkspace{position:relative;min-height:320px;height:100%;background:var(--c-panel-deeper);border:1px solid var(--c-border);border-radius:10px;overflow:hidden}
.dlgWorkspaceSurface{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;background:
linear-gradient(rgba(120,155,214,.08) 1px, transparent 1px),
linear-gradient(90deg, rgba(120,155,214,.08) 1px, transparent 1px);
background-size:280px 280px,280px 280px;background-position:48px 48px,48px 48px}
.dlgWorkspaceLinks{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:3}
.dlgWorkspaceNodes{position:absolute;left:0;top:0;user-select:none;-webkit-user-select:none;z-index:2}
.dlgWorkspaceEmpty{position:absolute;inset:0;display:grid;place-items:center;color:#8ca4cf;font-size:12px;pointer-events:none}
.dlgNodeCard{position:absolute;left:var(--x,0px);top:var(--y,0px);width:240px;min-height:82px;box-sizing:border-box;background:var(--c-card);border:1px solid var(--c-stroke-mid);border-radius:10px;padding:16px 10px;display:grid;gap:6px;cursor:grab;box-shadow:0 8px 24px rgba(0,0,0,.28);user-select:none;-webkit-user-select:none;-webkit-user-drag:none;touch-action:none;overflow:visible}
.dlgNodeCard.sel{outline:2px solid var(--c-accent);box-shadow:0 10px 28px rgba(82,133,224,.22)}
.dlgNodeCard.multi{outline:2px solid rgba(124,217,146,.85);outline-offset:1px}
.dlgNodeCard.start{border-color:#7cd992}
.dlgNodeCard.dragging,.dlgNodeHead:active{cursor:grabbing}
.dlgSelectionRect{position:absolute;left:var(--x,0px);top:var(--y,0px);width:var(--w,0px);height:var(--h,0px);border:1px dashed var(--c-accent);background:rgba(121,167,255,.12);pointer-events:none}
.dlgNodeHead{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;color:var(--c-accent-strong);font-size:12px;cursor:grab;user-select:none;-webkit-user-select:none;min-width:0}
.dlgNodeId{font-weight:bold;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.dlgNodeSpeaker{font-size:11px;color:var(--c-accent)}
.dlgNodeText{font-size:12px;line-height:1.4;color:#d9e6ff;white-space:pre-wrap}
.dlgNodeAnchor{position:absolute;left:50%;transform:translateX(-50%);width:36px;height:36px;border-radius:999px;background:transparent;box-shadow:none;z-index:5}
.dlgNodeAnchor::before{content:"";position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);border-radius:999px;border:2px solid #7fa9e7;background:#10203a;box-shadow:0 0 0 2px rgba(8,14,28,.9)}
.dlgNodeAnchor.in{top:-18px}
.dlgNodeAnchor.out{left:var(--anchor-x,50%);bottom:-18px;cursor:crosshair}
.dlgNodeAnchor.in{cursor:copy}
.dlgNodeAnchorsOut{position:absolute;left:0;right:0;bottom:-18px;height:48px;pointer-events:none}
.dlgNodeAnchorsOut .dlgNodeAnchor{pointer-events:auto}
.dlgNodePorts{display:grid;gap:4px}
.dlgNodePort{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:#c3d5f5;background:#10203a;border:1px solid #2d4770;border-radius:6px;padding:4px 6px;text-align:left;cursor:default}
.dlgNodeCard.linktarget{box-shadow:0 0 0 2px rgba(88,176,255,.55);background:linear-gradient(180deg,rgba(22,43,78,.98),rgba(15,31,56,.98))}
.dlgNodeCard.linksource{box-shadow:0 0 0 2px rgba(142,220,168,.5)}
.dlgNodeAnchor.in.linktarget{background:#58b0ff;border-color:#a7dbff;box-shadow:0 0 0 6px rgba(88,176,255,.18)}
.dlgNodeMenu{position:fixed;left:var(--x,0px);top:var(--y,0px);z-index:200100;min-width:220px;max-width:280px;padding:10px;display:grid;gap:8px}
.dlgNodeMenuHead{display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:8px;align-items:center}
.dlgNodeMenuHead button{width:34px;min-width:34px;height:34px;padding:0}
.dlgNodeMenuTitle{font-weight:700;color:#eaf2ff}
.dlgNodeMenuMeta{font-size:12px;color:#9fb3d6;line-height:1.35}
.dlgNodeMenuTop{display:grid;grid-template-columns:minmax(0,1fr) 34px 34px;gap:6px;align-items:center}
.dlgNodeMenuTop button{width:34px;min-width:34px;height:34px;padding:0}
.dlgNodeMenuActions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.dlgNodeMenuActions button{width:100%;min-height:30px;padding:0 8px}
#dlgNodeMenuType,#dlgNodeMenuScene{width:100%;min-height:34px}
.dlgNodePort.bad{border-color:#a86060;color:#ffd3d3}
.dlgNodePort.linkpick{border-color:#8edca8;box-shadow:0 0 0 1px rgba(142,220,168,.45);background:#143422}
.dlgNodePort.newlink{border-style:dashed}
.dlgNodePortTo{opacity:.8}
.dlgNodeCard > .dlgNodePort{margin-top:6px}
.dlgOptionMeta{opacity:.72;font-size:10px}
.dlgLinkLine{stroke:#6f93cf;stroke-width:2;fill:none;opacity:.9;pointer-events:stroke}
.dlgLinkLine.bad{stroke:#b86262;stroke-dasharray:7 5}
.dlgLinkLine.sel{stroke:var(--c-gold);stroke-width:3}
.dlgLinkArrow{fill:#6f93cf}
.playText .playTerm{font-weight:800}
.playText .playTerm.playNpcTerm{color:var(--play-term-color, inherit)}
.fliHost{position:relative;display:grid;place-items:center;background:#000;border:1px solid var(--c-stroke-mid);border-radius:8px}
.fliClose{justify-self:end}
.assetFliOverlay{position:fixed;inset:0;background:rgba(4,8,16,.92);z-index:100000;display:none;grid-template-rows:1fr auto;padding:14px;gap:10px}
.assetFliOverlay.open{display:grid}
.renderState{font-weight:bold}
.sec[data-sec="audiofx"]{gap:12px}
.sec[data-sec="audiofx"] h2{margin-top:0}
.sec[data-sec="audiofx"] h3{margin:2px 0 6px;font-size:12px;letter-spacing:.2px;color:#c9deff}
.sec[data-sec="audiofx"] .row{gap:10px}
.sec[data-sec="audiofx"] .row2{gap:12px;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.sec[data-sec="audiofx"] .row6{gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}
.sec[data-sec="audiofx"] .rowTools{gap:8px;grid-template-columns:1.05fr 1.05fr .9fr .9fr .9fr}
#sfxFxButtons{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}
.audioBlock{gap:11px}
.sec[data-sec="audiofx"] .audioSticky{position:sticky;top:8px;z-index:2;background:linear-gradient(180deg,rgba(15,26,47,.98) 0%,rgba(15,26,47,.94) 100%);box-shadow:0 8px 22px rgba(0,0,0,.22)}
.sec[data-sec="audiofx"] .audioPrimary{border-color:#4567a1}
.sec[data-sec="audiofx"] .audioInlineFx{border-style:dashed;border-color:#3a5b93}
.sfxModeHidden{display:none !important}
.sfxAdvancedHidden{display:none !important}
.sfxHidden{display:none !important}
.checkGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:120px;overflow:auto;background:var(--c-surface-dark);border:1px solid var(--c-border);border-radius:6px;padding:6px}
.modChannelsGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
.checkItem{display:flex;align-items:center;gap:6px;font-size:12px}
.audioHint{font-size:11px;color:#8fb2e8;opacity:.95;margin-top:3px}
.viewBtn{min-width:40px;padding:0 8px}
.waveTools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
#sfxPipeline,#sfxStatus{font-size:11px;padding:7px 8px}
#sfxStatus{border-color:#3d5d92;background:#12233f}
.sec[data-sec="audiofx"] .audioBlock .row2 > .row2{gap:8px}
.sec[data-sec="audiofx"] .audioBlock .item{padding:8px}
.sec[data-sec="audiofx"] #sfxRenderState{min-height:18px}
.fxChainList{min-height:104px;max-height:160px;overflow:auto;background:#0c1426;border:1px solid var(--c-border);border-radius:6px;padding:6px;display:grid;gap:6px}
.fxChainRow{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;background:#13213c;border:1px solid var(--c-card-border);border-radius:6px;padding:6px}
.fxChainRow.active{outline:2px solid var(--c-accent)}
.waveSubTools{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.audioBlock.collapsed > *:not(h3){display:none}
.audioBlock h3{display:flex;align-items:center;justify-content:space-between;gap:8px}
.audioToggle{font:11px monospace;padding:2px 6px;line-height:1}
.modQuickRow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.modQuickItem{display:grid;grid-template-columns:auto auto auto auto;gap:6px;align-items:center;background:var(--c-surface-input);border:1px solid var(--c-border);border-radius:6px;padding:6px}
.modQuickItem span{font-size:11px;color:var(--c-accent)}
.gridBG{
  background:var(--c-surface-dark);
}
.g-node{position:absolute;left:var(--x,0px);top:var(--y,0px);width:var(--w,100px);height:var(--h,100px);z-index:var(--z,auto);box-sizing:border-box;overflow:hidden;padding:6px;border-radius:8px;border:1px solid var(--bc,#567ab2);background:var(--bg,#1b2d4d);color:var(--fg,var(--c-accent-strong));box-shadow:var(--bs,none);cursor:var(--cur,grab);user-select:none;display:grid;align-content:start;gap:2px}
.g-node.ghost{opacity:.35;pointer-events:none;filter:saturate(.65)}
.g-node.iso{width:126px;height:86px;border-radius:10px;background:#1b2d4d}
.g-node.iso .nm{max-width:112px;padding-left:8px}
.g-node.iso{transform:skewX(-24deg);transform-origin:center}
.g-node.iso .isoInner{transform:skewX(24deg)}
.isoPlane{position:absolute;transform:skewX(-24deg);transform-origin:center;border:1px solid rgba(146,184,236,.45);background:rgba(80,120,180,.2);border-radius:12px;pointer-events:none}
.isoPlane.current{background:rgba(110,150,220,.5)}
.isoPlane .isoPlaneInner{transform:skewX(24deg);padding:6px 10px;color:#d8e8ff;font-size:11px}
.isoMark{position:absolute;padding:1px 4px}
.g-node.start{border-color:#ffdc00;box-shadow:0 0 0 1px rgba(255,220,0,.4)}
.g-node.play{box-shadow:0 0 0 2px rgba(83,255,140,.7)}
.g-node .id,.g-node .level{font-size:10px;opacity:.8;line-height:1.15}
.g-node .nm{font-weight:bold;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px;padding-right:16px}
.g-node.sel{outline:2px solid #96c0ff}
.g-node.bookNode{background:#152033 center/cover no-repeat;border-color:#ccb37a;align-content:end;gap:6px}
.g-node.bookNode .nm{max-width:none;padding-right:0;padding:6px 8px;border-radius:8px;background:rgba(7,10,18,.68);font-size:12px}
.g-node.bookNode .id,
.g-node.bookNode .level,
.g-node.bookNode .g-counts,
.g-node.bookNode .npc-strip,
.g-node.bookNode .mapNodeLinkBtn{display:none!important}
.mapNodeLinkBtn{position:absolute;right:6px;top:6px;width:18px;height:18px;border-radius:6px;border:1px solid #6d93c9;background:#12243f;color:#dce9ff;font-size:12px;line-height:1;padding:0;cursor:pointer}
.mapNodeLinkBtn:hover{background:#183055}
.npc-strip{margin-top:3px;display:flex;flex-wrap:wrap;gap:3px}
.npc-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#ffd166;border:1px solid #7f5b00;cursor:pointer}
.refs{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rightTop{display:grid;gap:8px;align-content:start}
.toolbar{display:flex;flex-wrap:wrap;gap:10px}
.toolbtn{padding:5px 8px;display:inline-grid;place-items:center;min-height:var(--ui-btn-h)}
body[data-editor-density="simple"] .advanced-only{display:none!important}
.panelMenuRow{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
}
#panelToggles{
  display:flex;
  flex-wrap:nowrap;
  gap:6px;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  padding:2px 0;
  scrollbar-width:thin;
}
#panelToggles .toolbtn{
  flex:0 0 auto;
  min-height:30px;
  height:30px;
  padding:0 10px;
  border-radius:999px;
  font-size:12px;
  white-space:nowrap;
}
.metaGameCheckboxGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
#metaStartRoom{width:100%;min-width:0}
.parserLangStyleRow{grid-template-columns:minmax(0,1fr) minmax(180px,1fr)}
.parserLangStylePreview{font-size:13px;min-width:0}
.miniActionBtn{font-weight:bold;min-width:26px;padding:4px 6px;align-self:start}
.metaBlock,.roomFold,.audioBlock{margin-top:2px}
.roomFold + .roomFold,.metaBlock + .metaBlock,.audioBlock + .audioBlock{margin-top:8px}
.roomFold .row,.roomFold .row2,.roomFold .row3,.roomFold .row6{gap:14px}
.roomFold .item{padding:10px}
.sec{display:grid;gap:22px;border:1px solid var(--c-border-soft);border-radius:8px;padding:20px;background:var(--c-panel-soft);overflow:visible}
.sec > *{margin-top:4px}
.sec .row,.sec .row2,.sec .row3,.sec .row5,.sec .row6,.sec .rowTools{gap:14px;align-items:start}


/* --- editor-sections.css --- */

.sec[data-sec="meta"],
.sec[data-sec="settings"]{gap:20px}
.sec[data-sec="rooms"],
.sec[data-sec="inventory"],
.sec[data-sec="npcs"],
.sec[data-sec="i18n"]{gap:26px}
.rightScroll > .sec[data-sec="settings"]{order:5}
.rightScroll > .sec[data-sec="meta"]{order:10}
.rightScroll > .sec[data-sec="rooms"]{order:20}
.rightScroll > .sec[data-sec="inventory"]{order:30}
.rightScroll > .sec[data-sec="npcs"]{order:40}
.rightScroll > .sec[data-sec="puzzles"]{order:50}
.rightScroll > .sec[data-sec="interactions"]{order:60}
.rightScroll > .sec[data-sec="events"]{order:70}
.rightScroll > .sec[data-sec="logic"]{order:80}
.rightScroll > .sec[data-sec="narration"]{order:90}
.rightScroll > .sec[data-sec="companion"]{order:100}
.rightScroll > .sec[data-sec="i18n"]{order:110}
.rightScroll > .sec[data-sec="assets"]{order:120}
.rightScroll > .sec[data-sec="export"]{order:130}
.rightScroll > .sec[data-sec="shortcuts"]{order:1000}
.sec[data-sec="rooms"] .row,.sec[data-sec="rooms"] .row2,.sec[data-sec="rooms"] .row6{gap:16px}
.sec[data-sec="meta"] .metaBlock .row,.sec[data-sec="meta"] .metaBlock .row2,
.sec[data-sec="settings"] .metaBlock .row,.sec[data-sec="settings"] .metaBlock .row2{gap:14px}
.sec[data-sec="meta"] .metaBlock textarea,
.sec[data-sec="settings"] .metaBlock textarea{margin-top:2px}
.sec[data-sec="settings"] .licenseText{
  min-height:196px;
  max-height:260px;
  overflow:auto;
  white-space:pre-wrap;
}
.sec[data-sec="meta"] .metaBlock,
.sec[data-sec="export"] .metaBlock,
.sec[data-sec="i18n"] .metaBlock{
  display:grid;
  gap:14px;
  margin-top:8px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.sec[data-sec="meta"] .metaBlock:first-of-type,
.sec[data-sec="export"] .metaBlock:first-of-type,
.sec[data-sec="i18n"] .metaBlock:first-of-type{
  margin-top:4px;
}
.sec[data-sec="meta"] .metaBlock > h3,
.sec[data-sec="export"] .metaBlock > h3,
.sec[data-sec="i18n"] .metaBlock > h3{
  margin:0;
  color:#b7d4ff;
  font-size:12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  min-height:24px;
}
.sec[data-sec="meta"] .roomBlock.metaBlock{
  padding:14px;
  max-width:820px;
  border:1px solid rgba(93,143,214,.26);
  border-radius:14px;
  background:rgba(10,22,44,.34);
  box-shadow:inset 0 1px 0 rgba(150,194,255,.05);
}
.sec[data-sec="meta"] #gameMetaBlock{
  margin-top:4px;
}
.sec > h2:not(:first-of-type),
.inventorySubsec > h2{
  margin-top:8px;
  padding-top:14px;
}
.inventorySubsec{
  display:grid;
  gap:14px;
  border:1px solid var(--c-border-soft);
  border-radius:8px;
  padding:14px;
  background:color-mix(in srgb, var(--c-panel-soft) 78%, #0a1323 22%);
}
.inventorySubsec.collapsed > :not(h2){
  display:none !important;
}
.sec[data-sec="inventory"] > .inventorySubsec:first-of-type > h2{
  margin-top:0;
  padding-top:0;
}
.sec[data-sec="rooms"] .list{max-height:280px}
#roomItemsPick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px}
#roomItemsPick .ri{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;text-align:left;padding:7px}
#roomItemsPick .ri .thumb{width:20px;height:20px;object-fit:cover;border:1px solid var(--c-border);border-radius:4px;background:var(--c-panel-deeper)}
#roomItemsPick .ri .meta{font-size:11px;color:var(--c-accent);opacity:.95}
#roomItemsPick .ri.countable{border-color:#6ca0ff}
#roomItemsPick .ri.locked{opacity:.7}
#validationReport{min-height:220px}
.isDisabled{opacity:.55}
.metaLangPills{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 0 8px}
.metaLangPill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--c-border-soft);background:var(--c-panel-soft);font-size:12px;line-height:1.2}
.metaLangPill.is-default{border-color:var(--c-accent);background:color-mix(in srgb, var(--c-accent) 16%, var(--c-panel-soft) 84%)}
.metaLangPill button{padding:0;border:0;background:none;color:inherit;font-size:11px;cursor:pointer}
.ctxModeButtons{display:flex;gap:8px}
.ctxModeBtn{flex:1 1 0;padding:8px 10px;border-radius:8px;border:1px solid var(--c-border-soft);background:var(--c-panel-soft);color:inherit}
.ctxModeBtn.on{border-color:var(--c-accent);background:color-mix(in srgb, var(--c-accent) 18%, var(--c-panel-soft) 82%)}
.topLine .zoomCtl{margin-left:auto}
body[data-graph-view="startscreen"] .layerTopCtl,
body[data-graph-view="startscreen"] #btnQuickMenu,
body[data-graph-view="startscreen"] #btnRpgBuildOverlay{display:none!important}
body[data-graph-view="startscreen"] #btnStartscreenReset{display:none!important;margin-left:auto}
body[data-graph-view="runtime-design"] .layerTopCtl,
body[data-graph-view="runtime-design"] #btnQuickMenu,
body[data-graph-view="runtime-design"] .zoomCtl,
body[data-graph-view="runtime-design"] #btnRpgBuildOverlay{display:none!important}
body[data-graph-view="runtime-design"] #graphViewSelect{margin-left:auto}
body[data-graph-view="chart"] .layerTopCtl{display:none!important}
#exDirMatrix{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
#exDirMatrix .item{display:grid;gap:5px;padding:10px}
#exDirMatrix label{font-size:11px;color:var(--c-accent)}
#exDirGrid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-areas:
    "nw n n ne"
    "w swap clear e"
    "sw s s se";
  gap:8px;
}
.exitTopRow{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 148px;
  gap:8px;
  align-items:stretch;
}
.exitTopRow button,
#exDirGrid .exDirBtn{
  min-height:32px;
  height:32px;
  padding:4px 8px;
  font-size:12px;
}
.exitTopRow select{
  width:100%;
  min-width:0;
  background-image:none;
  padding-right:12px;
}
.exDirNW{grid-area:nw}
.exDirN{grid-area:n}
.exDirNE{grid-area:ne}
.exDirW{grid-area:w}
.exDirSwap{grid-area:swap}
.exDirClear{grid-area:clear}
.exDirE{grid-area:e}
.exDirSW{grid-area:sw}
.exDirS{grid-area:s}
.exDirSE{grid-area:se}
.sec[data-sec="rooms"] h2{margin-top:8px;margin-bottom:4px}
.sec[data-sec="npcs"] .row,.sec[data-sec="npcs"] .row2,.sec[data-sec="npcs"] .row5{gap:14px}
#familyTagsList{max-height:120px;overflow:auto}
#metaDescription,#metaCredits,#metaImprint{min-height:12vh;max-height:20vh;margin-top:2px}
#metaWelcomeText{min-height:12vh;max-height:20vh;margin-top:2px}
.sec[data-sec="meta"] .row > textarea{
  grid-column:1 / -1;
  width:100%;
  box-sizing:border-box;
}
.uiBlock{display:grid;gap:14px;border:1px solid #2b3b5f;border-radius:8px;padding:16px 14px 14px;background:var(--c-surface-panel)}
.uiBlock > h3{margin:0;color:#b7d4ff;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:24px}
.uiBlock.collapsed > :not(h3){display:none}
.metaBlock{margin-top:14px}
.metaBlockCompact{gap:10px;padding:12px}
.metaBlockSplitTop{margin-top:14px}
.metaCopyrightField{font-size:12px}
.metaToggle{font:11px monospace;padding:2px 6px;line-height:1}
.uiBlock.collapsed #itemDesc,
.uiBlock.collapsed #itemRoomText,
.uiBlock.collapsed #objtDesc,
.uiBlock.collapsed #objtRoomText,
.uiBlock.collapsed #npcRoomText,
.uiBlock.collapsed #npcDialogue{display:none!important}
.sec.collapsed #npcRoomText,
.sec.collapsed #npcDialogue{display:none!important}
#itemRoom,#objtRoom,#objtKeyItem,#npcDesc,#npcDialogue,#npcRoomText{grid-column:1 / -1}
#itemId,#itemName,#objtId,#objtName,#charId,#charRoom,
.miniPair button,
.char-actions-compact button,
.char-actions-compact input{
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  box-sizing:border-box;
}
#npcColor{height:var(--ui-btn-h);min-height:var(--ui-btn-h);padding:0;border-radius:6px}
.quickPickerList{display:flex;flex-wrap:wrap;gap:10px;align-content:flex-start;align-items:flex-start;max-height:220px;padding:14px}
.quickPickerList .item{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;white-space:nowrap;width:fit-content;max-width:none;justify-self:start;flex:0 0 auto;align-self:flex-start}
.uiCtl{min-height:var(--ui-control-h);height:var(--ui-control-h);box-sizing:border-box;display:inline-flex;align-items:center;padding:0 12px;width:100%;justify-content:flex-start}
.uiCtl input{margin:0 8px 0 0}
#projectMainRow,
.quickPickerList .item.active{outline:2px solid var(--c-accent)}
.simpleOptionRow{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.simpleCountCtl{justify-content:space-between}
.simpleCountCtl span{font-size:11px;color:var(--c-accent);white-space:nowrap}
.simpleCountCtl input{width:66px;min-width:66px;height:30px;margin:0;text-align:right}
.simpleOnly{display:none}
.ta-level-basic .simpleOnly{display:block}
.ta-level-basic #storyBlockNode .uiCols3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ta-level-basic #storyBlockChoices .uiActions,
.ta-level-basic #storyBlockNodes .roomChipList,
.ta-level-basic #storyBlockSections .roomChipList{align-items:flex-start}
.tagHelp{display:none;gap:8px;background:var(--c-field);border:1px solid var(--c-border);border-radius:6px;padding:8px}
.tagHelp.on{display:grid}
.tagButtons{display:flex;flex-wrap:wrap;gap:6px}
.tagBtn{padding:5px 7px;font-size:12px}
.uiPair,.miniPair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#npcConvAddVarValueWrap{grid-template-columns:minmax(0,1fr)}
#npcConvAddVarValue{width:100%}
#npcConvAddVarBoolWrap.isHidden{display:none!important}
#npcConvAddVarBoolWrap,
#npcConvFlagToggleValueWrap{
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  box-sizing:border-box;
  padding:0 12px;
}
.uiPair button,.miniPair button{height:var(--ui-btn-h)}
.parserTools,
.waveTools,
.waveSubTools{align-items:start}
.sec[data-sec="inventory"] .row,
.sec[data-sec="inventory"] .row2,
.sec[data-sec="npcs"] .row,
.sec[data-sec="npcs"] .row2{gap:20px}
.sec[data-sec="npcs"] .parserTopicCard .row2{gap:12px}
.sec[data-sec="inventory"] .row,
.sec[data-sec="inventory"] .row2,
.sec[data-sec="inventory"] .row3,
.sec[data-sec="npcs"] .row,
.sec[data-sec="npcs"] .row2,
.sec[data-sec="npcs"] .row3{margin-bottom:6px}
.sec[data-sec="npcs"] .parserTopicCard :is(select,input,textarea){min-width:0}
.sec[data-sec="settings"] .iconBtn{font-size:14px;line-height:1}
.sec[data-sec="settings"] .uiBlock{margin-top:14px}
input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}
#hoText,#hoClue{display:block;width:100%;box-sizing:border-box;margin:0}
#hoText{min-height:84px}
#hoClue{min-height:84px}
.sec h2{margin-top:4px;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}
.sec h3{
  margin:2px 0 8px;
  min-height:24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  color:#c8ddff;
  font-size:12px;
}
.roomFold > h3,
.inventorySubsec > h2{
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.sec-ctl{display:inline-flex;gap:4px;align-items:center}
.sec.collapsed > :not(h2){display:none}
.sec.collapsed textarea,
.sec.collapsed .row,
.sec.collapsed .row2,
.sec.collapsed .row3,
.sec.collapsed .row5,
.sec.collapsed .row6,
.sec.collapsed .list,
.sec.collapsed img,
.sec.collapsed select,
.sec.collapsed input,
.sec.collapsed button:not(.sec-hide){display:none!important}
.sec.hidden{display:none}
.dropHint{outline:2px dashed var(--c-accent) !important;outline-offset:2px}
.leftStatus{display:grid;grid-template-columns:1fr;gap:8px}
.topLine{display:flex;flex-wrap:nowrap;gap:12px;align-items:center;overflow-x:auto;padding:4px 0 8px;min-height:48px}
.topLine > *{flex:0 0 auto}
.topLine button{height:42px;min-width:42px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center}
.topLine .spacer{margin-left:auto}
.sectionHeadTools{display:flex;gap:6px;align-items:center;flex-wrap:nowrap;min-width:0}
.sectionHeadTools > button,
.sectionHeadTools .menuWrap > button{
  height:30px;
  min-width:38px;
  padding:0 11px;
  display:inline-grid;
  place-items:center;
}
.sectionHeadTools > button.on,
.sectionHeadTools .menuWrap > button.on{background:#355896;border-color:#89b2ff}
.sectionHeadTools .iconBtn{min-width:38px;height:30px;padding:0 10px;display:inline-grid;place-items:center;font-size:15px;line-height:1}
.editorLocaleRow{display:flex;justify-content:flex-start}
.localeBtn{height:32px;min-width:38px;padding:0 10px;font-size:11px;font-weight:700;letter-spacing:.04em;border:1px solid transparent;border-radius:6px;background:transparent;color:#dce9ff}
.localeBtn:hover{border-color:#79a6e0;background:#1b3157}
.localeBtn.on{border-color:#89b2ff;background:#355896;color:#ffffff}
.sectionsHead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0}
.sectionsHead h2{margin:0;font-size:12px;line-height:1;color:var(--c-accent);white-space:nowrap}
.layerTopCtl{display:flex;align-items:center;gap:10px;background:transparent;border:none;border-radius:0;padding:0;min-height:42px}
.layerTopCtl select,.layerTopCtl input{height:38px;padding:6px 10px}
.layerTopCtl .lyLbl{font-size:11px;color:var(--c-accent)}
.layerTopCtl .viewBtn{height:38px;min-width:72px;padding:0 12px}
.layerTopCtl .floorBtn{height:38px;min-width:38px;padding:0 8px}
#graphLayerSelect{min-width:64px;max-width:64px}
#graphLayerName{max-width:128px}
#graphLayerName{padding:0 9px}
.topLine #graphViewSelect{height:42px;min-width:96px;padding:0 28px 0 12px;width:200px;max-width:200px;flex:0 0 200px}
.topLine #btnQuickMenu,
.topLine #btnFocusScene,
.topLine #btnRpgBuildOverlay{height:42px;min-width:42px}
#btnQuickMenu,#btnFocusScene,#btnRpgBuildOverlay,#btnUndo,#btnRedo,#btnSettings,#historyJump{
  border-color:#4a6ea8;
}
#btnQuickMenu:hover,#btnFocusScene:hover,#btnRpgBuildOverlay:hover,#btnUndo:hover,#btnRedo:hover,#btnSettings:hover,#historyJump:hover{
  border-color:#79a6e0;
  background:var(--c-hover-dark);
}
#historyJump{
  width:126px;
  min-width:126px;
  max-width:126px;
  height:30px;
  padding:0 22px 0 8px;
  font-size:12px;
}
#graphWrap{margin-top:2px}
.rpgTopCtl{display:none}
.menuWrap{position:relative}
.menuPanel{
  position:fixed;
  left:var(--x,12px);
  top:var(--y,52px);
  z-index:11000;
  display:none;
  min-width:252px;
  max-width:min(92vw,360px);
  max-height:min(78vh,640px);
  overflow:auto;
  background:#0f1b31;
  border:1px solid #3b5686;
  border-radius:10px;
  padding:10px;
  box-shadow:0 14px 34px rgba(0,0,0,.55);
  gap:8px;
}
.menuPanel.on{display:grid}
.menuPanel button{
  height:var(--ui-btn-h);
  min-height:var(--ui-btn-h);
  justify-content:flex-start;
  padding:0 12px;
}
.menuPanel button:hover{
  background:var(--c-hover-dark);
  border-color:#79a6e0;
}
.menuPanel .menuSep{height:1px;background:#35517e;margin:2px 0 4px}
#quickActionsMenu{position:fixed;left:12px;top:52px;z-index:300000;min-width:272px}
#quickActionsMenu{left:var(--x,12px);top:var(--y,52px)}
.leftNodeHost{display:grid;gap:8px}
.leftNodeHost:empty{display:none}
.graphChartView{display:grid;min-height:100%;padding:14px}
.graphChartView pre{margin:0;white-space:pre-wrap;background:var(--c-panel-deep);border:1px solid var(--c-border-soft);border-radius:8px;padding:14px;color:var(--c-accent-strong);min-height:100%}
.pdcTitle{font-size:13px;color:#cfe2ff;margin-bottom:10px}
.pdcTree{list-style:none;margin:0;padding:0 0 0 18px;display:grid;gap:8px}
.pdcTree > li{position:relative}
.pdcTree > li::before{content:'';position:absolute;left:-11px;top:0;bottom:-8px;width:1px;background:#29405f}
.pdcTree > li::after{content:'';position:absolute;left:-11px;top:16px;width:10px;height:1px;background:#29405f}
.pdcTree > li:last-child::before{bottom:16px}
.pdcNode{display:grid;gap:6px}
.link-handle{position:absolute;right:6px;top:4px;width:16px;height:16px;display:grid;place-items:center;border:1px solid #4a6798;border-radius:4px;background:#20365c;font-size:11px;cursor:grab;line-height:1}
.link-handle:active{cursor:grabbing}
.ctxDirBtn{font-weight:bold;line-height:1;height:var(--ui-btn-h);min-height:var(--ui-btn-h);display:grid;place-items:center;font-size:14px}
.ctxDirUD{display:grid;grid-template-columns:2fr 2fr;grid-template-rows:0.5fr;gap:2px;min-height:var(--ui-btn-h);height:var(--ui-btn-h)}
.ctxDirUD .ctxDirBtn{width:100%;padding:0}
.ctxHead{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;cursor:move}
.ctxHead .item{margin:0}
.ctxClose{height:36px;min-width:36px;padding:0 8px;line-height:1}
.ctxActBtn{width:36px;height:36px;min-width:36px;padding:0;display:inline-grid;place-items:center;line-height:1}
.ctxColorBtn{appearance:none;-webkit-appearance:none;border-radius:6px}
.ctxLists{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ctxLists3{grid-template-columns:1fr}
.ctxListBlock{display:grid;gap:6px}
.ctxListTitle{font-size:12px;color:var(--c-accent);padding:0 2px}
.ctxItemList,.ctxNpcList,.ctxObjList{max-height:88px;overflow:auto}
.u-ctx-panel input,.u-ctx-panel select,.u-ctx-panel button,
.contextPanel input,.contextPanel select,.contextPanel button{min-height:28px}
.u-ctx-panel #ctxRoomName,
.contextPanel #ctxRoomName{height:36px;min-height:36px}
.u-ctx-panel #ctxLayerRow input,.u-ctx-panel #ctxLayerRow select,.u-ctx-panel #ctxLayerRow .numField,
.contextPanel #ctxLayerRow input,.contextPanel #ctxLayerRow select,.contextPanel #ctxLayerRow .numField{min-height:32px}
.u-ctx-panel #ctxLayerRow .numField input,
.contextPanel #ctxLayerRow .numField input{min-height:32px}
#ctxLayerRow{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
.ctxFloorOps{display:grid;grid-template-columns:1fr 1fr;gap:2px;align-self:center}
.ctxFloorOps button{min-height:30px;height:30px;min-width:30px;padding:0;line-height:1;font-weight:bold}
#ctxLayerRow .numField{grid-template-columns:auto auto}
#ctxRoomLayer{min-width:48px;max-width:48px;justify-self:end;text-align:right;padding-left:4px;padding-right:16px}
#ctxColor{padding:0;border-radius:6px}
#ctxColor::-webkit-color-swatch-wrapper{padding:0}
#ctxColor::-webkit-color-swatch{border:none;border-radius:6px}
.draggingMap,.draggingMap *{user-select:none !important;-webkit-user-select:none !important}
.roomBlock h3{margin-bottom:2px}
.roomFold:not(.on) > *:not(h3){display:none}
.roomFold:not(.on) #exDirGrid,
.roomFold:not(.on) .exitTopRow{display:none!important}
.roomChipList{display:flex;flex-wrap:wrap;gap:8px;background:var(--c-panel-deep);border:1px solid var(--c-border-soft);border-radius:6px;padding:10px;min-height:38px;align-content:flex-start}
.roomChip{display:inline-flex;align-items:center;gap:6px;background:var(--c-card);border:1px solid var(--c-card-border);border-radius:4px;padding:3px 6px;font-size:12px}
.roomChip.disabled{opacity:.48}
.roomChip.active{outline:2px solid var(--c-accent);outline-offset:0}
#dlgOptionsList .roomChip{max-width:max-content}
.roomChip button{min-width:14px;height:14px;padding:0;line-height:1;border-radius:3px;font-size:10px}
.roomChip .roomChipMain{
  min-width:0;
  height:auto;
  padding:0;
  line-height:1.25;
  border:0;
  border-radius:0;
  background:transparent;
  color:inherit;
  font:inherit;
  text-align:left;
}
.roomChip .roomChipMain:hover,
.roomChip .roomChipMain:focus{
  outline:none;
  text-decoration:none;
}
.roomChip .roomChipJump{font-weight:700}
.roomChip > button[data-var-del],
.roomChip > button[data-use-rule-del],
.roomChip > button[data-event-quick-del],
.roomChip > button[data-objective-quick-del]{
  align-self:center;
}
.roomPickerAdd{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
.roomPickerAdd.roomPickerAuto{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.roomPickerAdd button{min-width:28px;padding:0 6px}
.metaEngineVersionHint{white-space:nowrap}
.sec[data-sec="i18n"] .roomBlock,
.sec[data-sec="i18n"] .metaBlock{gap:14px;padding:14px}
.sec[data-sec="i18n"] .refs{grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr)}
.sec[data-sec="i18n"] textarea{min-height:128px}
.sec[data-sec="i18n"] #i18nSource{min-height:110px}
.sec[data-sec="i18n"] #i18nTarget{min-height:130px}
.sec[data-sec="i18n"] #i18nExisting{min-height:88px}
.sec[data-sec="i18n"] #locList,.sec[data-sec="i18n"] #i18nKeyList{padding:10px}
.sec[data-sec="i18n"] #locList .item,.sec[data-sec="i18n"] #i18nKeyList .item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec[data-sec="i18n"] #locList.roomChipList{max-height:360px;overflow:auto}
.sec[data-sec="i18n"] #locList .roomChip{cursor:pointer;user-select:none}
.sec[data-sec="i18n"] #locList .roomChip.active{background:#203556;border-color:#e0bb69;color:#fff2c1;outline:2px solid #e0bb69}
.sec[data-sec="i18n"] #locList .roomChip .roomChipMain{cursor:pointer}
.bookPlayHost{display:grid;place-items:center;overflow:hidden;background:transparent!important;border:none!important;padding:0!important;max-height:none!important;min-height:0!important}
.bookRuntimeStage{position:relative;display:grid;place-items:center;width:100%;height:calc(100vh - 220px);min-height:320px}
.bookRuntimeFrame{position:relative;display:block;opacity:0;transform:scale(.992);transition:opacity .18s ease,transform .18s ease}
.bookRuntimeFrame.is-spread{display:flex;gap:12px;align-items:stretch}
.bookRuntimeFrame.is-visible{opacity:1;transform:scale(1)}
.bookRuntimePane{position:relative;height:100%;min-width:0}
.bookRuntimeImage{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;border-radius:12px;background:#0d1420}
.bookRuntimeText{position:absolute;z-index:3;transform:translate(0,0);padding:.45em .6em;border-radius:12px;background:rgba(10,18,28,.54);color:#fff9ea;line-height:1.35;text-shadow:0 2px 10px rgba(0,0,0,.45);box-sizing:border-box;white-space:pre-wrap;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.bookRuntimeText .bookTitlePageText{display:flex;flex-direction:column;justify-content:space-between;min-height:100%}
.bookRuntimeText .bookTitlePageHead{display:grid;gap:.28em;text-align:center;padding-top:10%}
.bookRuntimeText .bookTitlePageTitle{font-size:1.18em;font-weight:700;line-height:1.15}
.bookRuntimeText .bookTitlePageSubtitle{font-size:.72em;line-height:1.25;color:var(--book-subtitle-color, inherit)}
.bookRuntimeText .bookTitlePageAuthor{margin-top:auto;padding-bottom:10%;font-size:.46em;line-height:1.2;text-align:center;color:var(--book-author-color, inherit);opacity:.92}
.bookRuntimeHotspot{position:absolute;z-index:2;background:transparent;border:none;padding:0;margin:0;cursor:pointer}
.bookRuntimeHotspotGif{position:absolute;z-index:4;pointer-events:none;background-repeat:no-repeat;background-size:contain;background-position:center center}
.bookRuntimeHotspotImage{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.bookRuntimeHotspot.is-outline:hover{outline:3px solid rgba(255,238,185,.92);outline-offset:2px;border-radius:12px}
.bookRuntimeStoryBtn{position:absolute;right:14px;bottom:14px;z-index:8;padding:8px 12px;border-radius:999px;border:1px solid rgba(138,179,238,.48);background:rgba(18,34,58,.9);color:#fff7ea;cursor:pointer}
.bookRuntimeStoryPanel{position:absolute;right:14px;bottom:58px;z-index:18;display:none;width:min(420px,calc(100% - 28px));max-height:min(360px,70%);overflow:auto;border:1px solid rgba(138,179,238,.48);border-radius:12px;background:rgba(7,12,22,.92);color:#fff7ea;box-shadow:0 18px 38px rgba(0,0,0,.35)}
.bookRuntimeStoryPanel.open{display:block}
.bookRuntimeStoryItem{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.12)}
.bookRuntimeStoryItem:last-child{border-bottom:0}
.bookRuntimeStoryTitle{font-weight:700;color:#f4d184;margin-bottom:4px}
.bookRuntimeStoryToast{position:absolute;left:50%;bottom:64px;z-index:19;transform:translateX(-50%);width:min(460px,calc(100% - 28px));padding:14px 16px;border-radius:12px;border:1px solid rgba(138,179,238,.48);background:rgba(7,12,22,.94);color:#fff7ea;box-shadow:0 18px 38px rgba(0,0,0,.35)}
.bookPageHint{position:absolute;right:28px;bottom:22px;z-index:3;width:64px;height:64px;pointer-events:none;opacity:.92}
.bookPageHintRing,.bookPageHintRing::before,.bookPageHintRing::after{content:"";position:absolute;inset:0;border:2px solid rgba(255,244,214,.72);border-radius:999px;animation:bookHintPulse 1.8s ease-out infinite}
.bookPageHintRing::before{animation-delay:.45s}
.bookPageHintRing::after{animation-delay:.9s}
.bookPageHintHand{position:absolute;left:18px;top:16px;font-size:30px;line-height:1;filter:drop-shadow(0 3px 10px rgba(0,0,0,.45))}
@keyframes bookHintPulse{0%{transform:scale(.28);opacity:0}20%{opacity:.9}100%{transform:scale(1);opacity:0}}
.sec[data-sec="i18n"] .miniPair button{min-width:36px}
.sec[data-sec="i18n"] .i18nTopRow{grid-template-columns:minmax(0,1fr) 148px;align-items:stretch}
.sec[data-sec="i18n"] .i18nStatsStack{display:grid;grid-template-rows:1fr 1fr;gap:8px}
.sec[data-sec="i18n"] #i18nCount,.sec[data-sec="i18n"] #i18nProgress{display:flex;align-items:center;justify-content:center;text-align:center}
.g-counts{position:absolute;right:6px;bottom:6px;display:flex;gap:4px}
.g-count{font-size:10px;background:#0e1627;border:1px solid #3d5888;border-radius:4px;padding:1px 4px}
.scheme-cobalt #graphWrap,.scheme-cobalt #play{background:var(--c-surface-dark)}
.scheme-amber #graphWrap,.scheme-amber #play{background:#1f180c;border-color:#7d6330}
.scheme-green #graphWrap,.scheme-green #play{background:#0c1a10;border-color:#2f6b47}
.scheme-ocean #graphWrap,.scheme-ocean #play{background:#081a2a;border-color:#2b6c8f}
.scheme-sunset #graphWrap,.scheme-sunset #play{background:#24121a;border-color:#88485a}
.scheme-noir #graphWrap,.scheme-noir #play{background:#121210;border-color:#4c463d}
.scheme-paper #graphWrap,.scheme-paper #play{background:#f8f1e3;border-color:#b9a885;color:#292016}
.scheme-mono #graphWrap,.scheme-mono #play{background:#e9ebef;border-color:#9fa5b1;color:#1a2028}
.scheme-amber #play,.scheme-amber #play .playText,.scheme-amber #play .playRoomLine{color:#ffd89a;text-shadow:0 0 5px rgba(255,194,92,.3),0 0 10px rgba(255,194,92,.18)}
.scheme-amber #play{font-size:12px}
.scheme-green #play,.scheme-green #play .playText,.scheme-green #play .playRoomLine{color:#a7ffc0;text-shadow:0 0 5px rgba(96,255,160,.28),0 0 10px rgba(96,255,160,.14)}
.scheme-amber #play,.scheme-green #play{position:relative;overflow:auto}
.scheme-amber #play::after,.scheme-green #play::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:repeating-linear-gradient(to bottom, rgba(255,255,255,.04) 0 1px, rgba(0,0,0,0) 1px 4px);
  mix-blend-mode:soft-light;
  opacity:.42;
}
.scheme-mono #log,.scheme-mono .list,.scheme-mono .item{background:#f6f7fa;color:#1a2028;border-color:#a6adba}
.runtimeDesignPreview{display:grid;gap:10px;padding:12px;border:1px solid var(--c-border-soft);border-radius:10px;background:var(--runtime-preview-bg,#0f1320);color:var(--runtime-preview-text,#dbe8ff);font-family:var(--runtime-preview-font,system-ui,sans-serif)}
.runtimeDesignPreviewTitle{font-size:18px;font-weight:800;color:var(--runtime-preview-accent,#cfa95d)}
.runtimeDesignPreviewLayout{display:grid;grid-template-columns:minmax(180px,.95fr) minmax(220px,1.05fr);gap:12px;align-items:stretch}
.runtimeDesignPreviewMedia{display:grid;grid-template-rows:minmax(160px,1fr) auto;gap:8px;padding:12px;border:1px solid var(--runtime-preview-border,#2f456b);border-radius:var(--runtime-preview-radius,8px);background:var(--runtime-preview-room,#090f1c);font-size:calc(12px * var(--runtime-preview-scale,1))}
.runtimeDesignPreviewImage{min-height:160px;border-radius:calc(var(--runtime-preview-radius,8px) * .75);background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.02));background-position:center;background-repeat:no-repeat;background-size:var(--runtime-preview-image-fit,contain)}
.runtimeDesignPreviewCaption{color:var(--runtime-preview-accent,#cfa95d);font-size:.9em}
.runtimeDesignPreviewPanel{display:grid;gap:8px;padding:12px;border:1px solid var(--runtime-preview-border,#2f456b);border-radius:var(--runtime-preview-radius,8px);background:var(--runtime-preview-panel,#101a2c);font-size:calc(14px * var(--runtime-preview-scale,1))}
.runtimeDesignPreviewRoomName{color:var(--runtime-preview-accent,#cfa95d);font-weight:800}
.runtimeDesignPreviewText{line-height:1.45;white-space:pre-wrap}
.runtimeDesignPreviewChoice{padding:8px 10px;border:1px solid var(--runtime-preview-border,#2f456b);border-radius:var(--runtime-preview-radius,8px);color:var(--runtime-preview-accent,#cfa95d)}
.runtimeDesignPreviewInput{border:1px solid var(--runtime-preview-input-border,#2f456b);border-radius:var(--runtime-preview-radius,8px);background:var(--runtime-preview-input-bg,#1b2a44);color:var(--runtime-preview-input-text,#fff);font:inherit;padding:8px 10px;min-width:0}
@media (max-width:760px){.runtimeDesignPreviewLayout{grid-template-columns:1fr}.runtimeDesignGraphShell{grid-template-columns:1fr}}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:none;align-items:center;justify-content:center;z-index:200000}
.overlay.open{display:flex}
.overlay .box{width:min(720px,95vw);max-height:90vh;overflow:auto;background:#111a31;border:1px solid #3c4f80;border-radius:10px;padding:12px;display:grid;gap:8px;box-shadow:0 18px 40px rgba(0,0,0,.6)}
.feedbackBox .item{display:grid;gap:6px}
.feedbackBox input,
.feedbackBox textarea{width:100%;box-sizing:border-box}
.feedbackInbox{max-height:180px;overflow:auto;font-size:12px;line-height:1.45}
.feedbackInboxThread{display:grid;gap:4px;padding:6px 0;border-top:1px solid var(--c-card-border)}
.feedbackInboxThread:first-child{border-top:0}
.feedbackInboxMeta{color:var(--c-accent)}
.contentRatingBox{width:min(860px,96vw)}
.contentRatingGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.contentRatingGrid label{display:grid;gap:6px}
.contentRatingGrid span{font-size:13px;color:#a9c0ee}
.contentRatingGrid select{width:100%;min-height:36px}
@media (max-width:780px){.contentRatingGrid{grid-template-columns:1fr}}
#bootOverlay .box{width:min(920px,96vw);padding:32px 28px 28px;justify-items:center;text-align:center;gap:18px}
#bootOverlay .bootTopBar{width:100%;display:flex;justify-content:flex-end}
#bootOverlay .welcomeLead{margin:0;color:var(--c-accent);font-size:15px;line-height:1.5}
#bootOverlay h1{margin:0;font-size:34px;line-height:1.15;color:var(--c-accent-strong)}
#bootOverlay .welcomeMeta{margin:0;color:var(--c-accent);font-size:15px;line-height:1.7}
.bootActions{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:760px}
.bootTierPicker{width:100%;max-width:900px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px;border:1px solid var(--c-border);border-radius:12px;background:var(--c-surface-panel)}
.bootTierPicker > .bootTierGroup,
.bootTierPicker > #bootTierSlider,
.bootTierPicker > #bootTierTicks,
.bootTierPicker > .bootTierInfo{grid-column:1 / -1}
.bootTierGroup{display:grid;gap:8px;text-align:left}
.bootTierGroupTitle{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--c-accent)}
.bootTierLabels{display:grid;gap:8px}
.bootTierLabelsIf{grid-template-columns:repeat(3,minmax(0,1fr))}
.bootTierLabelsBook{grid-template-columns:repeat(2,minmax(0,1fr))}
.bootTierLabelBtn{height:32px;padding:0 6px;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface-panel);color:var(--c-accent);font-size:11px;font-weight:700;cursor:pointer}
.bootTierLabelBtn:hover{border-color:#79a6e0;background:var(--c-hover-dark)}
.bootTierLabelBtn.is-active{border-color:#e0bb69;color:#fff2c7;background:#1c2840}
#bootTierSlider{width:100%;accent-color:var(--c-accent-strong)}
.bootTierInfo{min-height:42px;margin:0;color:var(--c-text);font-size:13px;line-height:1.55}
.bootTierPicker > #bootTemplateSelect,
.bootTierPicker > #btnBootImportProject,
.bootTierPicker > #btnBootTierCreate{
  min-height:46px;
  font-size:12px;
  width:100%;
}
.bootTierPicker > #bootTemplateSelect{grid-column:1;justify-self:start}
.bootTierPicker > #btnBootImportProject{grid-column:2;justify-self:center}
.bootTierPicker > #btnBootTierCreate{grid-column:3;justify-self:end}
.bootLoginBox{width:100%;max-width:500px;display:grid;gap:10px;padding:14px;border:1px solid var(--c-border);border-radius:12px;background:var(--c-surface-panel);text-align:left}
.bootLoginTitle{font-size:12px;font-weight:700;color:var(--c-accent);letter-spacing:.04em;text-transform:uppercase}
.bootLoginRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.bootLoginRow input{min-height:44px}
.bootLoginRow button{min-width:120px}
.bootLoginStatus{min-height:18px;color:var(--c-accent);font-size:12px;line-height:1.45;word-break:break-word}
.bootLoginStatus a{color:var(--c-accent-strong)}
.bootLoginStatus.isError{color:#ff9b9b}
.bootLoginStatus.isOk{color:#b9f0c8}
.bootActions button[disabled]{opacity:.52;cursor:not-allowed}
@media (max-width: 680px){
  #bootOverlay .box{padding:28px 14px 22px}
  #bootOverlay h1{font-size:30px}
  .bootTierPicker{grid-template-columns:minmax(0,1fr)}
  .bootTierLabelsIf,.bootTierLabelsBook{grid-template-columns:minmax(0,1fr)}
  .bootTierPicker > #bootTemplateSelect,
  .bootTierPicker > #btnBootImportProject,
  .bootTierPicker > #btnBootTierCreate{
    grid-column:1;
    justify-self:stretch;
  }
}
body[data-project-ready="false"] #bootOverlay{display:flex}
body[data-project-ready="false"] #wizardOverlay{display:none !important}
body[data-launcher="true"] #bootOverlay{display:flex}
body[data-launcher="true"] #wizardOverlay{display:none !important}
body[data-launcher="true"] #graphWelcome{display:none !important}
body[data-launcher="true"] .topLine,
body[data-launcher="true"] #panelToggles,
body[data-launcher="true"] .right,
body[data-launcher="true"] #graphWrap{
  pointer-events:none;
}
body[data-launcher="true"] #bootOverlay{
  pointer-events:auto;
  z-index:500000;
}
body[data-launcher="true"] #panelToggles .toolbtn,
body[data-launcher="true"] #graphViewSelect{
  opacity:.45;
}
#imagePreviewOverlay .box{width:min(1100px,96vw);max-width:min(1100px,96vw);max-height:90vh}
.assetPickerBox{width:min(980px,96vw);max-width:min(980px,96vw)}
.assetPickerList{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.assetPickerCard{display:grid;gap:8px;padding:10px;border:1px solid #35527f;border-radius:12px;background:color-mix(in srgb, var(--c-panel) 82%, #172844 18%);cursor:pointer}
.assetPickerCard:hover{border-color:#7ba6e6;background:color-mix(in srgb, var(--c-panel) 72%, #21385d 28%)}
.assetPickerCard.isSynced{box-shadow:inset 0 0 0 1px rgba(126,180,255,.32)}
.assetPickerThumb{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:8px;border:1px solid #2f466f;background:#0a1120}
.assetPickerMeta{display:grid;gap:4px;min-width:0}
.assetPickerTitle{font-weight:700;color:var(--c-accent-strong);word-break:break-word}
.assetPickerSub{font-size:12px;color:var(--c-accent);word-break:break-word}
.assetPickerHint{opacity:.82}
.assetPickerSyncBadge{display:inline-flex;align-items:center;justify-content:center;padding:3px 7px;border-radius:999px;border:1px solid rgba(126,180,255,.34);background:rgba(126,180,255,.1);color:#cfe3ff;font-size:11px}
.assetPickerBox .inlineRowWide{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
.assetPickerBox #assetPickerSearch{min-width:220px;flex:1 1 260px}
.assetPickerBox #btnAssetPickerCancel{min-width:96px;white-space:nowrap;flex:0 0 auto}
.assetPickerActions{display:flex;gap:8px;align-items:center}
.assetPickerActions .iconBtn{min-width:45px;width:45px;height:40px;padding:0;font-size:17px;line-height:1;border-radius:10px}
.assetPickerEmpty{grid-column:1 / -1}
#imagePreviewOverlayImg{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform-origin:50% 50%;user-select:none;-webkit-user-drag:none}
.imagePreviewStage{position:relative;height:min(72vh,620px);overflow:hidden;border-radius:10px;border:1px solid #2b4268;background:#09111d}
.imagePreviewFxBar{display:flex;flex-wrap:wrap;gap:8px}
.imagePreviewActions{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;align-items:center}
.imagePreviewActionQuarter{width:100%}
.imagePreviewActionGap{min-height:1px}
.imagePreviewFxBar .chipBtn{min-height:34px;padding:6px 12px;border-radius:999px;border:1px solid #35527f;background:#13233d;color:#dce8fb;cursor:pointer}
.imagePreviewFxBar .chipBtn:hover{background:#183051}
.imagePreviewFxBar .chipBtn.active{border-color:#8fc3ff;background:#21456f;color:#fff;box-shadow:0 0 0 1px rgba(143,195,255,.25) inset}
.imagePreviewFxOverlay{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;mix-blend-mode:screen;background:none}
.imagePreviewAsciiLayer{position:absolute;inset:0;z-index:2;margin:0;padding:12px;overflow:hidden;pointer-events:none;white-space:pre;letter-spacing:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#dfe7d2;background:#0a0f12;line-height:.82;text-shadow:0 0 4px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;text-align:center}
.imagePreviewMenuLayer{position:absolute;inset:0;pointer-events:none}
.imagePreviewMenuEl{position:absolute;left:var(--x,0px);top:var(--y,0px);pointer-events:auto;cursor:move}
.imagePreviewMenuLayer button.imagePreviewMenuEl{padding:9px 14px;border-radius:8px;border:1px solid rgba(138,179,238,.6);background:rgba(18,34,58,.82);color:#fff;backdrop-filter:blur(3px)}
.imagePreviewVersionLine{padding:6px 9px;border-radius:6px;background:rgba(8,16,28,.76);border:1px solid rgba(120,166,224,.45);font-size:12px;color:#cfe3ff}
.imagePreviewStage.cropMode{cursor:grab}
.imagePreviewStage.cropMode.dragging{cursor:grabbing}
.startscreenEditor{display:grid;grid-template-rows:1fr;height:100%;min-height:0;gap:0;box-sizing:border-box}
.startscreenStage{position:relative;overflow:hidden;height:100%;min-height:0;border-radius:10px;border:1px solid #2b4268;background:#09111d}
.startscreenViewport{position:absolute;left:var(--x,0px);top:var(--y,0px);width:var(--w,0px);height:var(--h,0px);overflow:hidden;border-radius:10px;box-shadow:0 0 0 1px rgba(143,195,255,.16);max-width:100%;max-height:100%}
.startscreenSurface{position:relative;width:100%;height:100%;overflow:hidden;background:#09111d}
.startscreenCover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform-origin:50% 50%;user-select:none;-webkit-user-drag:none;cursor:default}
.startscreenWeather{position:absolute;inset:0;z-index:2;pointer-events:none}
.startscreenGuides{position:absolute;inset:0;z-index:2;pointer-events:none}
.startscreenGuide{position:absolute;background:rgba(159,195,255,.18)}
.startscreenGuide.active{background:rgba(255,212,109,.9)}
.startscreenGuide.v{top:0;bottom:0;width:1px;transform:translateX(-50%)}
.startscreenGuide.h{left:0;right:0;height:1px;transform:translateY(-50%)}
.startscreenGuide[data-axis="v"][data-pos="20"]{left:20%}
.startscreenGuide[data-axis="h"][data-pos="20"]{top:20%}
.startscreenGuide[data-axis="v"][data-pos="25"]{left:25%}
.startscreenGuide[data-axis="h"][data-pos="25"]{top:25%}
.startscreenGuide[data-axis="v"][data-pos="33.3333"]{left:33.3333%}
.startscreenGuide[data-axis="h"][data-pos="33.3333"]{top:33.3333%}
.startscreenGuide[data-axis="v"][data-pos="50"]{left:50%}
.startscreenGuide[data-axis="h"][data-pos="50"]{top:50%}
.startscreenGuide[data-axis="v"][data-pos="66.6667"]{left:66.6667%}
.startscreenGuide[data-axis="h"][data-pos="66.6667"]{top:66.6667%}
.startscreenGuide[data-axis="v"][data-pos="75"]{left:75%}
.startscreenGuide[data-axis="h"][data-pos="75"]{top:75%}
.startscreenGuide[data-axis="v"][data-pos="80"]{left:80%}
.startscreenGuide[data-axis="h"][data-pos="80"]{top:80%}
.startscreenUi{position:absolute;inset:0;z-index:3}
.startscreenTitle,.startscreenSubtitle{position:absolute;left:var(--x,50%);top:var(--y,50%);transform:translate(-50%, -50%);text-align:center;text-shadow:0 2px 10px rgba(0,0,0,.85);min-width:140px;cursor:move;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:auto;touch-action:none}
.startscreenTitle{font-size:clamp(30px,4vw,52px);font-weight:800;color:#eef6ff}
.startscreenSubtitle{font-size:clamp(14px,1.5vw,20px);color:#d5e7ff;opacity:.92}
.startscreenEl{position:absolute;left:var(--x,50%);top:var(--y,50%);transform:translate(-50%, -50%);cursor:move;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}
.startscreenButton{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;border:1px solid rgba(138,179,238,.6);background:rgba(18,34,58,.82);color:#fff;backdrop-filter:blur(3px);min-width:150px;text-align:center;white-space:nowrap;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}
.startscreenVersion{padding:6px 9px;border-radius:6px;background:rgba(8,16,28,.76);border:1px solid rgba(120,166,224,.45);font-size:12px;color:#cfe3ff;max-width:min(40%,360px);text-align:right}
.startscreenTitle::after,.startscreenSubtitle::after,.startscreenEl::after{
  content:'';
  position:absolute;
  right:4px;
  bottom:4px;
  width:8px;
  height:8px;
  border-radius:2px;
  border:1px solid rgba(255,255,255,.65);
  background:rgba(247,212,109,.95);
  box-shadow:0 0 0 1px rgba(8,16,28,.45);
  pointer-events:none;
}
kbd{display:inline-block;padding:1px 6px;border:1px solid #4d618d;border-bottom-width:2px;border-radius:5px;background:#0b1428;color:#dfe9ff}
body.focusScene .wrap{width:98vw;grid-template-columns:1fr}
body.focusScene .panel:nth-of-type(2){display:none}
body.focusScene #graphWrap{height:min(84vh, calc((98vw - 36px) * 9 / 16))}
@media (max-width:1180px){
  .sec[data-sec="i18n"] .refs{grid-template-columns:1fr}
  .topLine{gap:10px}
  .layerTopCtl{gap:6px;padding:0}
  #graphLayerSelect{min-width:64px;max-width:64px}
  .sectionsHead{align-items:flex-start;flex-direction:column}
  .sectionHeadTools{width:100%}
  .menuPanel{min-width:236px;max-width:min(86vw,340px)}
  #quickActionsMenu{min-width:236px}
}
@media (max-width:980px){.wrap{grid-template-columns:minmax(0,70%) minmax(320px,30%);height:auto;min-height:calc(100vh - 20px)}.panel{max-height:none}}
@media (max-width:1200px){
  .row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .row5,.row6{grid-template-columns:repeat(3,minmax(0,1fr))}
  .rowTools{grid-template-columns:1fr 1fr 1fr}
  .sec[data-sec="audiofx"] .row6{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sec[data-sec="audiofx"] .rowTools{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sec[data-sec="audiofx"] .row2{grid-template-columns:1fr}
}
@media (max-width:700px){
  .row,.row2,.row3,.row5,.row6,.rowTools{grid-template-columns:1fr}
}


/* --- editor-polish.css --- */

/* Global UX polish layer: consistent spacing and density across all editor sections */
.sec .item{
  padding:12px;
}
.sec .list{
  padding:12px;
  gap:10px;
}
.sec > h2,
.inventorySubsec > h2{
  margin:2px 0 2px;
}
.sec[data-sec="assets"] #assetsList .item{
  padding:10px;
}
.assetQuickGroup{
  display:grid;
  gap:6px;
  margin-top:10px;
}
.assetRoleGroup{
  display:grid;
  gap:8px;
  margin-top:10px;
}
.assetQuickGroupLabel{
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
  opacity:.75;
}
.assetQuickFilters{display:flex;flex-wrap:wrap;gap:8px}
.assetQuickFilter.on{border-color:#8ab3ee;background:#23406e}
.assetPagerRow{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px}
.sec[data-sec="assets"] #assetsPageInfo{text-align:center;white-space:nowrap}
.sec[data-sec="assets"] #assetsList{display:flex;flex-wrap:wrap;gap:10px;align-content:flex-start}
.sec[data-sec="assets"] #assetsList > .item,
.sec[data-sec="assets"] #assetsList > button.item{
  width:calc(50% - 8px) !important;
  max-width:calc(50% - 8px) !important;
  min-width:280px !important;
  display:flex !important;
  flex:1 1 320px !important;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  white-space:normal;
}
@media (max-width: 960px){
  .sec[data-sec="assets"] #assetsList > .item,
  .sec[data-sec="assets"] #assetsList > button.item{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }
}
.sec[data-sec="settings"] #shortcutsList .item{
  overflow:hidden;
  width:auto;
  max-width:100%;
}
.sec[data-sec="settings"] .list > .item{
  width:auto;
  max-width:max-content;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.sec[data-sec="settings"] #shortcutsList,
.sec[data-sec="i18n"] #locList,
.sec[data-sec="i18n"] #i18nKeyList{overflow-x:hidden}
.sec[data-sec="i18n"] #locList > .item:not(button),
.sec[data-sec="i18n"] #i18nKeyList > .item:not(button){
  width:auto;
  max-width:max-content;
}
.sec[data-sec="narration"] textarea,
.sec[data-sec="interactions"] textarea,
.sec[data-sec="events"] textarea,
.sec[data-sec="inventory"] textarea,
.sec[data-sec="terminal"] textarea{
  min-height:112px;
}
/* Section polish pass: use the Game section as density baseline */
.sec .uiBlock,
.sec .parserCard{
  margin-top:0;
  padding:16px;
  border-radius:8px;
}
.sec[data-sec="inventory"] > h2 + .row,
.sec[data-sec="inventory"] > h2 + .row2,
.inventorySubsec > h2 + .row,
.inventorySubsec > h2 + .row2,
.sec[data-sec="logic"] > h2 + .row,
.sec[data-sec="narration"] > h2 + .row,
.sec[data-sec="npcs"] > h2 + .item,
.sec[data-sec="interactions"] > h2 + .row,
.sec[data-sec="events"] > h2 + .row,
.sec[data-sec="i18n"] > h2 + .roomBlock,
.sec[data-sec="assets"] > h2 + .row2,
.sec[data-sec="audiofx"] > h2 + .audioBlock,
.sec[data-sec="export"] > h2 + .row2,
.sec[data-sec="rpglab"] > h2 + .row2{
  margin-top:2px;
}
.sec[data-sec="rooms"] .roomChipList,
.sec[data-sec="inventory"] .roomChipList,
.sec[data-sec="npcs"] .roomChipList,
.sec[data-sec="interactions"] .roomChipList,
.sec[data-sec="events"] .roomChipList,
.sec[data-sec="puzzles"] .roomChipList{
  padding:12px;
  min-height:42px;
}
.sec[data-sec="rooms"] .roomChip,
.sec[data-sec="inventory"] .roomChip,
.sec[data-sec="npcs"] .roomChip,
.sec[data-sec="narration"] .roomChip,
.sec[data-sec="interactions"] .roomChip,
.sec[data-sec="events"] .roomChip,
.sec[data-sec="puzzles"] .roomChip{
  min-height:26px;
}
.sec[data-sec="interactions"] textarea[id$="Notes"],
.sec[data-sec="events"] textarea[id$="Notes"],
.sec[data-sec="logic"] textarea[id$="Notes"]{
  min-height:74px;
  margin-bottom:10px;
}
.sec[data-sec="interactions"] .uiBlock,
.sec[data-sec="interactions"] .parserCard,
.sec[data-sec="events"] .uiBlock,
.sec[data-sec="events"] .parserCard,
.sec[data-sec="puzzles"] .uiBlock,
.sec[data-sec="puzzles"] .parserCard{
  max-width:680px;
}
.rightScroll > .sec[data-sec="interactions"],
.rightScroll > .sec[data-sec="events"],
.rightScroll > .sec[data-sec="puzzles"]{
  width:min(100%,680px);
  justify-self:start;
}
.sec[data-sec="terminal"] .uiBlock{
  max-width:760px;
}
.playModeTerminal{
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace !important;
  grid-template-columns:minmax(0,1fr) 220px;
  gap:12px;
  padding:12px;
}
.playModeTerminal .playTerminalOutput,
.playModeTerminal .playTerminalSidebar{
  border:1px solid currentColor;
  border-radius:6px;
  padding:10px;
  min-height:0;
}
.playModeTerminal .playTerminalOutput{
  white-space:pre-wrap;
  overflow:auto;
}
.playModeTerminal .playTerminalSidebar{
  display:grid;
  align-content:start;
  gap:10px;
}
.playModeTerminal .playTerminalLabel{
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
  opacity:.75;
}
.playModeTerminal .playTerminalValue{
  white-space:pre-wrap;
  line-height:1.4;
}
.playModeTerminal .playBlock{
  grid-column:1 / -1;
}
@media (max-width: 900px){
  .playModeTerminal{
    grid-template-columns:minmax(0,1fr);
  }
}
#itemPluralName{min-width:220px}
#btnExClear{align-self:center}
:is(.sec[data-sec="inventory"], .sec[data-sec="npcs"]) .quickPickerList > :is(.item, button.item){
  width:fit-content !important;
  max-width:none !important;
  min-width:0 !important;
  display:inline-flex !important;
  text-align:left;
  flex:0 0 auto !important;
}
.sec[data-sec="narration"] .roomChipList .roomChipMain,
.sec[data-sec="interactions"] .roomChipList .roomChipMain,
.sec[data-sec="events"] .roomChipList .roomChipMain{
  width:auto;
  max-width:none;
  white-space:nowrap;
}
.sec[data-sec="logic"] .roomChip,
.sec[data-sec="puzzles"] .roomChipList .roomChip{
  min-height:26px;
  min-width:0;
  max-width:100%;
  display:inline-grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  align-self:flex-start;
}
.sec[data-sec="logic"] .roomChipList .roomChipMain,
.sec[data-sec="puzzles"] .roomChipList .roomChipMain{
  width:auto;
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}
.sec[data-sec="puzzles"] .roomChipList{
  overflow:auto;
}
.sec[data-sec="narration"] #dlgNodesList,
.sec[data-sec="narration"] #dlgOptionsList{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:8px;
}
.sec[data-sec="narration"] #dlgNodesList{
  max-height:240px;
  overflow:auto;
}
.sec[data-sec="narration"] #storySectionsList{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:8px;
  max-height:220px;
  overflow:auto;
}
.sec[data-sec="narration"] #storySectionsList .roomChip > button[data-story-section-del],
.storyGraphScenesList .roomChip > button[data-story-section-del]{
  margin-left:auto;
}
.sec[data-sec="narration"] #storyNodeMetaRow{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;
}
.sec[data-sec="narration"] #storyNodeSceneRow{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}
.sec[data-sec="narration"] #dlgNodesList .roomChipMain,
.sec[data-sec="narration"] #dlgOptionsList .roomChipMain{
  min-width:0;
  width:100%;
  max-width:100%;
  white-space:normal;
  overflow:hidden;
}
.sec[data-sec="narration"] #dlgOptionsList .roomChip{
  min-width:0;
  max-width:100%;
  display:inline-grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  align-self:flex-start;
  flex:0 1 auto;
}
.sec[data-sec="narration"] #dlgNodesList .roomChip > button[data-dlg-node-del],
.sec[data-sec="narration"] #dlgOptionsList .roomChip > button[data-dlg-opt-del]{
  width:18px;
  min-width:18px;
  max-width:18px;
  justify-self:end;
}
.sec[data-sec="narration"] #dlgNodeMenu .dlgNodeMenuActions{grid-template-columns:repeat(5,minmax(0,1fr))}
.sec[data-sec="narration"] #dlgOptionsList{justify-content:flex-start}
.playtestLogLine{
  display:block;
  padding:0;
  margin:0 0 6px;
  border:none;
  background:none;
  border-radius:0;
  color:var(--c-text);
  white-space:pre-wrap;
}
.sec[data-sec="narration"] #storyNodeActionBlock{margin-top:10px;padding:0;border:none;background:transparent;box-shadow:none}
.sec[data-sec="logic"] #varValBoolWrap,
.sec[data-sec="logic"] #flagValWrap{
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  display:flex;
  align-items:center;
  margin:0;
  padding:0 10px;
  align-self:center;
}
.sec[data-sec="logic"] #varValBoolWrap input,
.sec[data-sec="logic"] #flagValWrap input{width:16px;height:16px}
.sec[data-sec="logic"]{align-content:start}
.sec[data-sec="logic"] .roomBlock,
.sec[data-sec="logic"] .metaBlock{
  padding:14px;
  max-width:720px;
}
.sec[data-sec="logic"] .row.uiCols3{
  grid-template-columns:minmax(0,1fr) 132px 40px;
  gap:12px;
}
.sec[data-sec="logic"] .row.uiCols4{
  grid-template-columns:minmax(0,1.05fr) 120px minmax(0,.95fr) auto auto;
  gap:12px;
}
.sec[data-sec="logic"] textarea{
  min-height:84px;
}
.sec[data-sec="logic"] .roomChipList{
  padding:10px;
}
.ta-level-basic .sec[data-sec="logic"] .roomBlock,
.ta-level-basic .sec[data-sec="logic"] .metaBlock{
  max-width:520px;
}
.ta-level-basic .sec[data-sec="logic"] .row.uiCols3{
  grid-template-columns:minmax(0,1fr) 92px auto;
}
.ta-level-basic .sec[data-sec="logic"] .row.uiCols4{
  grid-template-columns:minmax(0,1fr) 88px minmax(0,.72fr) auto auto;
}
.sec[data-sec="rooms"] .row.uiCols3,
.sec[data-sec="inventory"] .row.uiCols3,
.sec[data-sec="puzzles"] .row.uiCols3{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 132px;
}
.sec[data-sec="logic"] [data-room-fold="puzzlescore"] .row.uiCols3{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 132px;
}
.sec[data-sec="interactions"] .row.uiCols3Action,
.sec[data-sec="events"] .row.uiCols3Action{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 168px;
}
.sec[data-sec="interactions"] #ruleText{
  width:100%;
  display:block;
  grid-column:1 / -1;
  min-height:84px;
}
.sec[data-sec="events"] .row2.uiFormRow{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
}
.sec[data-sec="events"] #conditionsVarRow{
  grid-template-columns:minmax(0,1fr) 132px minmax(0,1fr);
}
.sec[data-sec="events"] #eventRepeatRow{
  grid-template-columns:132px auto;
  align-items:center;
}
.sec[data-sec="events"] #eventRepeatRow .uiCheck{
  padding:4px 8px;
}
.sec[data-sec="events"] .row2.uiFormRow > div:empty{
  display:none;
}
.sec[data-sec="i18n"] .uiCols2Action{
  grid-template-columns:140px minmax(0,120px) minmax(0,1fr);
}
.sec[data-sec="i18n"] #btnLocAdd{
  min-width:140px;
}
.sec[data-sec="events"] #eventsQuickList,
.sec[data-sec="events"] #conditionsQuickList{
  max-height:220px;
  overflow:auto;
}
.sec[data-sec="events"] [data-room-fold="logicactions"] .row2.uiFormRow{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}
.sec[data-sec="events"] [data-room-fold="logicevents"] .row2.uiFormRow{
  grid-template-columns:minmax(0,1fr) auto;
}
.sec[data-sec="events"] #evRepeatCount{
  min-width:140px;
}
#obj.list{
  display:block;
}
#obj.list .item{
  display:block;
  width:100%;
  max-width:none;
}
.storyNodeListLine,
.storyNodeListMeta{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.storyNodeListLine{
  font-weight:700;
}
.storyNodeListMeta{
  margin-top:2px;
  color:#9fb9e4;
  white-space:normal;
}
.storyActionListMeta{
  display:block;
  color:#9fb9e4;
  margin-top:2px;
  white-space:normal;
}
.storyNodeListCount{
  color:var(--c-gold);
}
.wrap{
  grid-template-columns:minmax(0,65%) minmax(360px,35%);
}
@media (max-width:980px){
  .wrap{grid-template-columns:minmax(0,70%) minmax(320px,30%);height:auto;min-height:calc(100vh - 20px)}
  .panel{max-height:none}
}
.sec[data-sec="narration"] #storyBlockNode{
  margin-top:16px;
}
.storySceneListTitle,
.storySceneListMeta{
  display:block;
  min-width:0;
}
.storySceneListTitle{
  font-weight:700;
}
.storySceneListMeta{
  margin-top:2px;
  color:#9fb9e4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:11px;
}
.roomPickerAdd select,
.roomPickerAdd input,
.roomPickerAdd button{
  min-height:var(--ui-control-h);
}
.row .uiPair,
.row2 .uiPair,
.row3 .uiPair,
.row .miniPair,
.row2 .miniPair,
.row3 .miniPair{
  align-self:stretch;
}
.row .uiPair button,
.row2 .uiPair button,
.row3 .uiPair button,
.row .miniPair button,
.row2 .miniPair button,
.row3 .miniPair button{
  width:100%;
}
.sec[data-sec="assets"] .u-preview,
.sec[data-sec="rooms"] .u-preview,
.sec[data-sec="inventory"] .u-preview{
  border-radius:6px;
}
.sec[data-sec="settings"] .metaBlock,
.sec[data-sec="rooms"] .roomBlock,
.sec[data-sec="inventory"] .parserCard,
.sec[data-sec="npcs"] .parserCard,
.sec[data-sec="interactions"] .parserCard,
.sec[data-sec="events"] .parserCard,
.sec[data-sec="audiofx"] .audioBlock{
  background:var(--c-surface-panel);
}

/* Context menu polish layer */
.u-ctx-panel,
.u-ctx-panel-mod,
.contextPanel,
.contextPanelMod,
.rpgTileCtx,
.csvpick-menu{
  background:var(--c-field);
  border:1px solid #3b5686;
  border-radius:10px;
  padding:10px;
  gap:8px;
  box-shadow:0 14px 34px var(--c-shadow-strong);
}
.u-ctx-panel,
.contextPanel{width:344px}
.u-ctx-panel-mod,
.contextPanelMod{width:292px}
.rpgTileCtx{min-width:228px}
.csvpick-menu{min-width:272px}
.u-ctx-panel button,
.u-ctx-panel-mod button,
.contextPanel button,
.contextPanelMod button,
.rpgTileCtx button,
.csvpick-menu button{
  min-height:var(--ui-btn-h);
  height:var(--ui-btn-h);
}
.u-ctx-panel button:hover,
.u-ctx-panel-mod button:hover,
.contextPanel button:hover,
.contextPanelMod button:hover,
.rpgTileCtx button:hover,
.csvpick-menu button:hover{
  border-color:#79a6e0;
  background:var(--c-hover-dark);
}
.ctxHead{
  position:sticky;
  top:0;
  z-index:1;
  background:linear-gradient(180deg,var(--c-field) 0%,rgba(15,27,49,.92) 100%);
  padding-bottom:4px;
}
.ctxHead .item{padding:9px 10px}
.ctxClose,.ctxActBtn{
  width:var(--ui-btn-h);
  min-width:var(--ui-btn-h);
  height:var(--ui-btn-h);
}
.ctxLists{gap:12px}
.ctxLists3{display:grid;grid-template-columns:1fr;align-items:start}
.ctxListBlock{gap:8px}
.ctxItemList,.ctxNpcList,.ctxObjList{
  min-height:84px;
  max-height:84px;
  padding:8px;
  overflow:auto;
}
.u-ctx-panel-delete-link,
.contextPanelDeleteLink{
  background:var(--c-field);
  border:1px solid #3b5686;
  border-radius:10px;
  padding:10px;
  gap:8px;
  box-shadow:0 14px 34px var(--c-shadow-strong);
}
.csvpick-head{
  padding-bottom:8px;
  margin-bottom:2px;
  border-bottom:1px solid #35517e;
}
.csvpick-row{
  padding:8px 10px;
}
.csvpick-actions{
  gap:8px;
}
.rpgTileCtx button{
  text-align:left;
  padding:0 10px;
}
@media (max-width:980px){
  .u-ctx-panel,
  .contextPanel{width:min(94vw,344px)}
  .u-ctx-panel-mod,
  .contextPanelMod{width:min(88vw,292px)}
  .rpgTileCtx{min-width:min(82vw,228px)}
  .csvpick-menu{min-width:min(88vw,272px);max-width:92vw}
}


/* Normalize subsection collapse controls across all sections */
.sec-ctl{min-width:24px}
.sec-hide,.metaToggle,.roomFoldBtn,.sec-help{
  width:24px;
  min-width:24px;
  height:24px;
  min-height:24px;
  padding:0;
  line-height:1;
  display:inline-grid;
  place-items:center;
  margin:0;
  flex:0 0 24px;
  align-self:center;
  font:11px monospace;
  border-radius:4px;
  color:var(--c-accent-strong);
}
.sec-help.on{
  border-color:var(--c-accent);
  background:#1a3158;
  color:#eef6ff;
}
.sectionHelpBox{
  margin-top:10px;
  white-space:normal;
  line-height:1.45;
  color:var(--c-text-soft);
}

/* Playtest presentation layers */
.playBlock{
  display:grid;
  gap:10px;
}
.playBlockBlank{
  gap:0;
  min-height:.45em;
  height:.45em;
  margin-top:-6px;
  margin-bottom:-6px;
  overflow:hidden;
}
.playBlockBlank .playBlankLine{
  line-height:.45;
}
.playArt{
  display:block;
  position:relative;
  border:1px solid rgba(139,181,238,.28);
  border-radius:10px;
  overflow:hidden;
  background:linear-gradient(180deg, rgba(12,21,39,.92), rgba(18,31,53,.9));
  box-shadow:0 10px 24px rgba(0,0,0,.18);
}
.playArt img{
  display:block;
  width:100%;
  max-height:220px;
  object-fit:cover;
}
.playArtWeatherOnly{
  min-height:160px;
}
.playArtWeather{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:2;
}
.play-chip-art{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.play-chip-art img{
  width:20px;
  height:20px;
  border-radius:4px;
  object-fit:cover;
  flex:0 0 auto;
}
body.ta-level-illustrated-if .playText strong{
  cursor:pointer;
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
body.ta-level-illustrated-if .playText strong:hover{
  filter:brightness(1.12);
}
body.ta-level-enhanced .playRoomLine,
body.ta-level-illustrated-if .playRoomLine{
  margin-top:-2px;
}


/* --- editor-theme.css --- */

/* Color/contrast QA layer */
:root{
  --c-text:#eef4ff;
  --c-text-soft:#c9d9f4;
  --c-border:#486b9f;
  --c-border-soft:#35517e;
  --c-surface-dark:#0d1524;
  --c-surface-panel:#0f1a2f;
  --c-surface-input:#12203a;
  --c-hover-dark:#173056;
  --c-stroke-mid:#35507a;
  --c-gold:#f7d46d;
  --c-bg-input:#12203a;
  --c-bg-hover:#173056;
  --c-bg-active:#1e3a66;
  --c-focus:#98c3ff;
  --c-success:#7de39b;
  --c-warn:#ffd166;
  --c-danger:#ff9d9d;
}
body{color:var(--c-text)}
.item{color:var(--c-text-soft)}
:where(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  select,
  textarea,
  button
){
  border-color:var(--c-border);
  background-color:var(--c-bg-input);
  color:var(--c-text);
  border-style:solid;
  border-width:1px;
  min-height:var(--ui-control-h);
  padding:0 10px;
}
:where(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
  select,
  button
){
  height:var(--ui-control-h);
}
textarea{
  padding:8px 10px;
}
input[type="file"]{
  padding:7px 10px;
  min-height:var(--ui-control-h);
}
input[type="checkbox"],
input[type="radio"]{
  width:16px;
  min-width:16px;
  height:16px;
  min-height:16px;
  margin:0;
  accent-color:#7aa7ff;
  vertical-align:middle;
}
input[type="color"]{
  width:100%;
  min-width:40px;
  height:var(--ui-control-h);
  min-height:var(--ui-control-h);
  padding:0;
  border:1px solid var(--c-border);
  background-color:var(--picker-color,var(--c-bg-input));
  color:var(--c-text);
  cursor:pointer;
  border-radius:8px;
  overflow:hidden;
}
input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
input[type="color"]::-webkit-color-swatch{border:none;border-radius:7px}
input[type="range"]{
  width:100%;
  min-height:var(--ui-control-h);
  padding:0;
  border:none;
  background:transparent;
}
label.item,
.uiCheck,
.item.u-flex,
.item.u-flex8{
  display:flex;
  align-items:center;
}
label.item{
  gap:8px;
}
.uiCheck{
  gap:8px;
}
.list > .item,
.list > button.item{
  width:100%;
  text-align:left;
}
button{
  transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,opacity .12s ease;
}
button:hover{
  background:var(--c-bg-hover);
  border-color:var(--c-focus);
}
button:active{
  background:var(--c-bg-active);
  border-color:var(--c-focus);
}
button:disabled,
button[disabled]{
  opacity:.52;
  cursor:not-allowed;
  background:#0f1a2d;
  border-color:var(--c-border-soft);
}
input:focus,
select:focus,
textarea:focus,
button:focus-visible{
  outline:2px solid var(--c-focus);
  outline-offset:1px;
  border-color:var(--c-focus);
}
input::placeholder,
textarea::placeholder{
  color:#b8c9e7;
  opacity:.95;
}
.toolbtn.on{
  background:var(--c-bg-active);
  border-color:var(--c-focus);
  color:#f6fbff;
}
.iconBtn.on{
  background:var(--c-bg-active);
  border-color:var(--c-focus);
  color:#f6fbff;
}
.renderState.ok{color:var(--c-success)}
.renderState.bad{color:var(--c-danger)}
.i18nStatOk{color:var(--c-success)}
.i18nStatWarn{color:var(--c-warn)}
.i18nStatNone{color:#b6c8e8}
.assetMissingRole{
  border-color:#d35b5b !important;
  box-shadow:inset 0 0 0 1px rgba(211,91,91,.58);
}
.dropHint{
  outline:2px dashed var(--c-focus) !important;
}
.ctxDirBtn.on,
.rpgLegendItem.on,
.item.active{
  outline:2px solid var(--c-focus);
}
.menuPanel .menuSep{background:var(--c-border-soft)}
.csvpick-head{border-color:var(--c-border-soft)}

/* Meta/Game: normalize control heights to language dropdown */
.sec[data-sec="meta"] .metaBlock .row > input,
.sec[data-sec="meta"] .metaBlock .row > select,
.sec[data-sec="meta"] .metaBlock .row > button,
.sec[data-sec="meta"] .metaBlock .row2 > input,
.sec[data-sec="meta"] .metaBlock .row2 > select,
.sec[data-sec="meta"] .metaBlock .row2 > button,
.sec[data-sec="meta"] .metaBlock .row3 > input,
.sec[data-sec="meta"] .metaBlock .row3 > select,
.sec[data-sec="meta"] .metaBlock .row3 > button{
  min-height:var(--ui-btn-h);
  height:var(--ui-btn-h);
}
.sec[data-sec="meta"] .metaBlock .row > .item,
.sec[data-sec="meta"] .metaBlock .row2 > .item,
.sec[data-sec="meta"] .metaBlock .row3 > .item{
  min-height:var(--ui-btn-h);
  display:flex;
  align-items:center;
}

/* Universal field-height normalization (all sections / all row-based areas) */
.row > input,
.row > select,
.row > button,
.row2 > input,
.row2 > select,
.row2 > button,
.row3 > input,
.row3 > select,
.row3 > button,
.row5 > input,
.row5 > select,
.row5 > button,
.row6 > input,
.row6 > select,
.row6 > button,
.rowTools > input,
.rowTools > select,
.rowTools > button{
  height:var(--ui-control-h);
  min-height:var(--ui-control-h);
}
.row > input[type="checkbox"],
.row > input[type="radio"],
.row2 > input[type="checkbox"],
.row2 > input[type="radio"],
.row3 > input[type="checkbox"],
.row3 > input[type="radio"],
.row5 > input[type="checkbox"],
.row5 > input[type="radio"],
.row6 > input[type="checkbox"],
.row6 > input[type="radio"],
.rowTools > input[type="checkbox"],
.rowTools > input[type="radio"]{
  height:16px;
  min-height:16px;
}
.row > .item,
.row2 > .item,
.row3 > .item,
.row5 > .item,
.row6 > .item,
.rowTools > .item{
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  display:flex;
  align-items:center;
}
.row > .numField,
.row2 > .numField,
.row3 > .numField,
.row5 > .numField,
.row6 > .numField,
.rowTools > .numField{
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  padding:0 10px;
  box-sizing:border-box;
}
.row > .numField input,
.row2 > .numField input,
.row3 > .numField input,
.row5 > .numField input,
.row6 > .numField input,
.rowTools > .numField input{
  height:calc(var(--ui-control-h) - 10px);
  min-height:calc(var(--ui-control-h) - 10px);
  padding:0 6px;
}
#taLevelControls{
  width:100%;
  min-width:0;
}
#taLevelControls select{
  width:100%;
  min-width:0;
}

.graphLinkLine{cursor:pointer;pointer-events:auto}

.ctxItemList .item,.ctxNpcList .item,.ctxObjList .item{min-height:26px;display:flex;align-items:center}
.roomStartRow{grid-template-columns:1fr 1fr}
.roomStartRow .item,.roomStartRow button,.roomStartRow select,.roomStartRow input{min-height:var(--ui-btn-h);height:var(--ui-btn-h)}
#roomEditorDesc{min-height:76px}

.ctxLinkRow{grid-template-columns:auto 1fr auto;gap:8px;align-items:center}
.ctxCutBtn{width:28px;min-width:28px;height:28px;min-height:28px;padding:0;line-height:1;display:grid;place-items:center}
.roomStartToggle{padding:0 12px !important;min-height:var(--ui-btn-h) !important;height:var(--ui-btn-h) !important;display:flex;align-items:center;gap:8px;justify-content:flex-start;box-sizing:border-box;line-height:1}
.roomStartToggle input{height:12px;min-height:12px}
.sec[data-sec="rooms"] .uiBlock{margin-top:18px}
.sec[data-sec="rooms"] .uiBlock:first-of-type{margin-top:6px}
.storyOptionActions{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.storyOptionActions button{width:100%;min-width:0;height:34px;padding:0}
