/* Écran « En partie » : trois colonnes réglables (lieu + sons | journaux | bibliothèque + jets), 16/9 au maximum. */
.vtw{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr);gap:6px;height:calc(100vh - 96px);min-height:520px;font-size:12px;color:var(--ink)}
.workspace:has(> .vtw){padding:8px 10px 6px;max-width:none}
.vtw-top{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.vtw-top .vsb{border-bottom:0;border-radius:8px}
.vtw-cols{position:relative;display:grid;grid-template-columns:var(--vcl-cols,38fr 44fr 18fr);gap:6px 12px;min-height:0;min-width:0}
.vtw-col{display:flex;flex-direction:column;gap:6px;min-height:0;min-width:0}
.vtw-frame-place{flex:0 0 auto;min-height:120px}
.vtw-frame-place .vfz-body{overflow:auto;padding:0}
.vtw-frame-sounds{flex:1 1 0;min-height:120px}
.vtw-frame-sounds .vfz-body{overflow:auto;padding:2px 4px}
.vtw-frame-journal{flex:1 1 auto;min-height:0}
.vtw-over{outline:2px dashed var(--green);outline-offset:-2px;background:var(--green-soft)}
.vtw-btn{}
.vtw-top .vtw-next{margin-left:6px}
.vtw-next-on::after{content:' ✓'}
.vtw-next-on{background:var(--copper-soft,#eadfc9)!important;border-color:var(--copper)!important;font-weight:650}
.vtw-activate{background:var(--copper)!important;border-color:var(--copper)!important;color:#fff!important;font-weight:650}
.vtw-btn:disabled{opacity:.45}
.vtw-btn[hidden]{display:none}
.vtw-place{min-height:0}
.vtw .location-stage{width:min(100%,calc(38vh * var(--location-ratio,1.7778)));max-height:none;min-height:0}
.vtw-banner{margin:0;padding:3px 8px;background:var(--copper-soft);color:var(--copper);font-size:11px;font-weight:650}
.vtw-foreign{outline:2px solid var(--copper);outline-offset:-2px}
.vtw-hint{margin:0;padding:4px 6px;color:var(--muted);font-size:11px;font-style:italic}
.vtw-manque{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 4px}
.vtw-manque .vtw-hint{font-style:normal;font-size:12px;line-height:1.5;flex:1 1 100%}
.vtw-pop{position:absolute;top:30px;right:8px;z-index:20;min-width:200px;max-height:60%;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 6px 18px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:4px}
.vtw-pop-row{display:flex;align-items:center;gap:6px;font-size:12px}
.vtw-journal{display:flex;flex-direction:column;height:100%;min-height:0}
.vtw-frame-journal .vfz-body{display:flex;flex-direction:column;padding:0;overflow:hidden}
.vtw-tabs{display:flex;flex-wrap:wrap;gap:2px;padding:4px 6px 0;border-bottom:1px solid var(--line);flex:none}
.vtw-tab{padding:4px 10px;border:1px solid var(--line);border-bottom:0;border-radius:6px 6px 0 0;background:var(--paper);font-size:12px;color:var(--muted);overflow-wrap:anywhere;text-align:left}
.vtw-tab.is-active{background:var(--surface);color:var(--ink);font-weight:650;box-shadow:0 1px 0 var(--surface)}
.vtw-page{flex:1;min-height:0;overflow:auto;padding:10px 16px;font-size:15px;line-height:1.6}
.vtw-page img{max-width:100%;height:auto}
.vtw-side{flex:1 1 auto;display:flex;flex-direction:column;gap:4px;min-height:0;min-width:0;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.vtw-search{padding:3px 7px;border:1px solid var(--line);border-radius:5px;background:var(--paper);font-size:12px;flex:none}
.vtw-browser{flex:1 1 auto;min-height:0;overflow:hidden;border-top:1px solid var(--line)}
.vtw-tree{height:100%;min-height:120px}
.vtw-frame-rolls{flex:none;min-height:90px}
.vtw-frame-rolls:not(.vts-resizable){max-height:210px}
.vtw-frame-rolls .vfz-bar{height:auto;min-height:28px;flex-wrap:wrap;padding:2px 6px}
.vtw-frame-rolls .vtw-roll-tool{padding:2px 7px;font-size:11px}
.vtw-empty{display:none}
.vtw-no-scene .vtw-cols{visibility:hidden}
.vtw-no-scene .vtw-empty{display:block;position:absolute;top:50%;left:0;right:0;text-align:center;color:var(--muted);font-size:13px}
.vtw button:focus-visible,.vtw input:focus-visible{outline:2px solid var(--green);outline-offset:1px}
/* Noms des acteurs sur le lieu : jamais coupés sur cet écran (demande du 30/09). */
.vtw .location-token .token-name{white-space:normal;overflow:visible;text-overflow:clip;width:max-content;max-width:150px;text-align:center;line-height:1.2}
.vtw-subseg{flex:none}
.vtw-subseg[hidden]{display:none}
.vtw-mute{flex:none;padding:2px 10px;min-height:26px;border:1px solid #c99378;border-radius:5px;background:#fff1e9;color:#814127;font-size:12px;font-weight:650}
.vtw-mute:hover{background:var(--copper);color:#fff}
.vtw-note-editor{min-height:120px;font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
/* Sous 900 px : colonnes empilées, chacune défile. */
@media (max-width:899px){.vtw{height:auto}.vtw-cols{grid-template-columns:1fr}.vtw-col{min-height:420px}}
.vtw-side-head{display:flex;align-items:center;gap:6px}
.vtw-side-title{flex:1 1 auto;font-size:12px;font-weight:650}
.vtw-side.vfw-detached > :not(.vtw-side-head){display:none}
.vtw-side.vfw-detached .vtw-side-title::after{content:" — dans une fenêtre séparée";font-weight:400;color:var(--muted)}
.vtw-side.vfw-full{padding:8px}
.vtw-tabwrap{display:inline-flex;align-items:stretch}
.vtw-tabwrap .vtw-tab{border-right:0;border-radius:6px 0 0 0}
.vtw-tab-close{padding:0 6px;border:1px solid var(--line);border-bottom:0;border-radius:0 6px 0 0;background:var(--paper);color:var(--muted);font-size:13px;line-height:1}
.vtw-tab-close:hover{background:var(--green-soft);color:var(--ink)}
/* Place libérée par une fenêtre détachée : les cadres restants la récupèrent ; la colonne vidée se réduit à sa barre. */
.vtw-col:has(.vtw-frame-sounds.vfw-detached) .vtw-frame-place{flex:1 1 0}
.vtw .vtw-col:has(.vtw-frame-sounds.vfw-detached) .location-stage{width:min(100%,calc(78vh * var(--location-ratio,1.7778)))}
.vtw-col:has(.vtw-frame-place.vfw-detached) .vtw-frame-sounds{flex:1 1 0}
.vtw-cols:has(.vtw-frame-journal.vfw-detached){grid-template-columns:minmax(0,1.3fr) 15rem minmax(0,.7fr)}
.vtw-cols:has(.vtw-side.vfw-detached){grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 15rem}
.vtw-cols:has(.vtw-frame-journal.vfw-detached):has(.vtw-side.vfw-detached){grid-template-columns:minmax(0,1fr) 15rem 15rem}
.vtw-cols:has(.vtw-frame-journal.vfw-detached) .vcl-handle,.vtw-cols:has(.vtw-side.vfw-detached) .vcl-handle{display:none}
.vtw-frame-journal.vfw-detached,.vtw-side.vfw-detached{align-self:start}
.vtw-side.vfw-detached{flex:0 0 auto}
.vtw-frame-journal.vfw-detached .vfz-title{white-space:nowrap;flex:0 0 auto}
/* Onglet à part : la scène est figée par l'adresse, le choix de scène n'a pas de sens ici. */
.vtw-fixe>.vsg-top,.vtw-fixe>.vsg-overview,.vtw-fixe .vtw-top{display:none}
