/* Owner-confirmed Torengalm UI palette. PDF keeps its independent print palette.
   Theme only: no token participates in world geometry. Override on the root. */
.torengalm-planner {
    --tg-primary: #6E1F2A;
    --tg-primary-hover: #6E1F2A;
    --tg-accent: #6E1F2A;
    --tg-background: #F4EFE8;
    --tg-surface: #ffffff;
    --tg-surface-muted: #F4EFE8;
    --tg-text: #2B2B2B;
    --tg-text-muted: #52606d;
    --tg-border: #89939d;
    --tg-danger: #a12b32;
    --tg-success: #21634c;
    --tg-selection: #6E1F2A;
    --tg-focus: #6E1F2A;
    --tg-stage-fill: #e4eee7;
    --tg-restricted-fill: #f9e9e7;
    --tg-chair-fill: #eeeaf5;
    --tg-chair-stroke: #756087;
    --tg-table-fill: #d8eaf3;
    --tg-buffet-fill: #f5e6bd;
    --tg-buffet-stroke: #805b25;
    --tg-connector-fill: #d9eee6;
    --tg-radius: 0.75rem;
    --tg-font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
}
.torengalm-planner {
    box-sizing: border-box;
    width: 100%;
    padding: clamp(1rem, 3vw, 2rem);
    border: 1px solid var(--tg-border);
    border-radius: 0.5rem;
    color: var(--tg-text);
    background: var(--tg-background);
    font-family: var(--tg-font-family);
    line-height: 1.5;
    min-width: 0;
}
.torengalm-planner .torengalm-planner__area-label { pointer-events: none; fill: var(--tg-text); stroke: var(--tg-background); stroke-width: 3px; paint-order: stroke; vector-effect: non-scaling-stroke; font-weight: 600; }
.torengalm-planner .torengalm-planner__attached-chair { fill: var(--tg-chair-fill); stroke: var(--tg-chair-stroke); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.torengalm-planner .torengalm-planner__connector-target { fill: var(--tg-connector-fill); stroke: var(--tg-success); stroke-width: 2px; vector-effect: non-scaling-stroke; pointer-events: none; }
.torengalm-planner [data-connector-help] { display: block; width: 100%; }
.torengalm-planner .is-selected .torengalm-planner__attached-chair { stroke: var(--tg-selection); stroke-width: 2.5px; }
.torengalm-planner [data-valid="false"] .torengalm-planner__attached-chair { fill: var(--tg-restricted-fill); stroke: var(--tg-danger); }

.torengalm-planner .torengalm-planner__surface {
    min-width: 0;
}

.torengalm-planner .torengalm-planner__toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.torengalm-planner .torengalm-planner__toolbar button {
    min-height: 2.75rem;
    min-width: 2.75rem;
    padding: 0.4rem 0.8rem;
    border: 1px solid var(--tg-text-muted);
    border-radius: 0.35rem;
    background: var(--tg-background);
    color: var(--tg-text);
    font: inherit;
    cursor: pointer;
}

.torengalm-planner .torengalm-planner__toolbar button:hover { background: var(--tg-surface-muted); }
.torengalm-planner .torengalm-planner__toolbar output { margin-inline-start: auto; font-variant-numeric: tabular-nums; }
.torengalm-planner button:focus-visible,
.torengalm-planner svg:focus-visible,
.torengalm-planner summary:focus-visible { outline: 3px solid var(--tg-focus); outline-offset: 2px; }

.torengalm-planner .torengalm-planner__svg {
    display: block;
    width: 100%;
    /* Screen height only: world-to-screen scale is calculated from configuration. */
    height: clamp(24rem, 65vh, 44rem);
    border-radius: 0.5rem;
    background: var(--tg-surface-muted);
    touch-action: none;
    user-select: none;
    cursor: grab;
}
.torengalm-planner .torengalm-planner__svg.is-panning { cursor: grabbing; }
.torengalm-planner .torengalm-planner__room {
    fill: var(--tg-background);
    stroke: var(--tg-text);
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}
.torengalm-planner .torengalm-planner__zone {
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}
.torengalm-planner [data-category="stage"] { fill: var(--tg-stage-fill); stroke: var(--tg-success); }
.torengalm-planner [data-category="fixed"] { fill: var(--tg-border); stroke: var(--tg-text-muted); }
.torengalm-planner [data-category="restricted"] { fill: var(--tg-restricted-fill); stroke: var(--tg-danger); stroke-dasharray: 6 4; }
.torengalm-planner .torengalm-planner__legend {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    list-style: none;
    margin: 1rem 0;
    padding: 0;
}
.torengalm-planner .torengalm-planner__legend li { display: flex; align-items: center; gap: 0.4rem; overflow-wrap: anywhere; }
.torengalm-planner .torengalm-planner__marker { display: inline-block; flex-shrink: 0; width: 0.8rem; height: 0.8rem; border: 1px solid var(--tg-text); background: var(--tg-background); }
.torengalm-planner .torengalm-planner__marker[data-category="stage"] { background: var(--tg-stage-fill); }
.torengalm-planner .torengalm-planner__marker[data-category="fixed"] { background: var(--tg-border); }
.torengalm-planner .torengalm-planner__marker[data-category="restricted"] { background: var(--tg-restricted-fill); border-style: dashed; }
.torengalm-planner .torengalm-planner__facts,
.torengalm-planner .torengalm-planner__instructions,
.torengalm-planner .torengalm-planner__notes { font-size: 0.875rem; overflow-wrap: anywhere; }
.torengalm-planner .torengalm-planner__notes summary { cursor: pointer; }

.torengalm-planner .torengalm-planner__editor { margin-bottom: 1rem; }
.torengalm-planner .torengalm-planner__catalog { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); gap: 0.75rem; }
.torengalm-planner .torengalm-planner__catalog-item { display: flex; flex-direction: column; gap: 0.25rem; }
.torengalm-planner .torengalm-planner__catalog-item small { font-size: 0.75rem; }
.torengalm-planner .torengalm-planner__editor button,
.torengalm-planner .torengalm-planner__editor input,
.torengalm-planner .torengalm-planner__editor select {
    box-sizing: border-box; min-height: 2.75rem; padding: 0.5rem; border: 1px solid var(--tg-text-muted);
    border-radius: 0.3rem; background: var(--tg-background); color: var(--tg-text); font: inherit; max-width: 100%;
}
.torengalm-planner .torengalm-planner__editor button { cursor: pointer; }
.torengalm-planner .torengalm-planner__editor button:disabled { cursor: not-allowed; opacity: 0.5; }
.torengalm-planner .torengalm-planner__catalog button[draggable="true"] { border-color: var(--tg-primary); background: var(--tg-surface-muted); }
.torengalm-planner .torengalm-planner__inspector { display: flex; flex-wrap: wrap; align-items: end; gap: 0.5rem; margin-top: 0.75rem; }
.torengalm-planner .torengalm-planner__inspector label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.8rem; min-width: 0; max-width: 100%; }
.torengalm-planner .torengalm-planner__inspector input { width: 9rem; }
.torengalm-planner .torengalm-planner__inspector select { width: 16rem; }
.torengalm-planner .torengalm-planner__object-status { box-sizing: border-box; height: 4.5rem; overflow: auto; padding: 0.5rem 0.75rem; background: var(--tg-surface-muted); border-inline-start: 3px solid var(--tg-text-muted); }
.torengalm-planner .torengalm-planner__object-status[data-valid="false"] { color: var(--tg-danger); background: var(--tg-restricted-fill); border-color: var(--tg-danger); }
.torengalm-planner .torengalm-planner__object { cursor: move; }
.torengalm-planner .torengalm-planner__object-shape { fill: var(--tg-table-fill); stroke: var(--tg-primary); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.torengalm-planner [data-furniture-category="buffet"] .torengalm-planner__object-shape { fill: var(--tg-buffet-fill); stroke: var(--tg-buffet-stroke); }
.torengalm-planner [data-furniture-category="chair"] .torengalm-planner__object-shape { fill: var(--tg-chair-fill); stroke: var(--tg-chair-stroke); }
.torengalm-planner .torengalm-planner__object.is-selected .torengalm-planner__object-shape { stroke: var(--tg-selection); stroke-width: 3; }
.torengalm-planner .torengalm-planner__object[data-valid="false"] .torengalm-planner__object-shape { fill: var(--tg-restricted-fill); stroke: var(--tg-danger); }
.torengalm-planner [data-object-preview] { opacity: 0.7; }
.torengalm-planner .torengalm-planner__rotation-handle { fill: var(--tg-background); stroke: var(--tg-selection); stroke-width: 2; vector-effect: non-scaling-stroke; cursor: crosshair; }
.torengalm-planner .torengalm-planner__rotation-stem { stroke: var(--tg-selection); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.torengalm-planner .torengalm-planner__svg.is-placing { cursor: crosshair; }

.torengalm-planner h2 {
    margin-block: 0 0.75rem;
    font-size: 1.25rem;
}

.torengalm-planner .torengalm-planner__seating-ring { fill: var(--tg-chair-fill); stroke: var(--tg-chair-stroke); stroke-width: 2px; vector-effect: non-scaling-stroke; }
.torengalm-planner [data-valid="false"] .torengalm-planner__seating-ring { fill: var(--tg-restricted-fill); stroke: var(--tg-danger); }

.torengalm-planner [hidden] { display: none !important; }
.torengalm-planner .torengalm-planner__workspace { display: grid; grid-template-columns: 16rem minmax(0, 1fr); gap: 0 1rem; align-items: start; }
.torengalm-planner .torengalm-planner__workspace > * { grid-column: 2; min-width: 0; }
.torengalm-planner .torengalm-planner__workspace > .torengalm-planner__editor { grid-column: 1; grid-row: 1 / span 8; padding: 0.75rem; background: var(--tg-surface); border-radius: 0.5rem; }
.torengalm-planner .torengalm-planner__catalog { grid-template-columns: 1fr; }
.torengalm-planner .torengalm-planner__editor h3 { font-size: 1rem; margin-top: 0; }
.torengalm-planner .torengalm-planner__inspector { border-top: 2px solid var(--tg-focus); padding-top: 0.75rem; }
.torengalm-planner .torengalm-planner__inspector strong { width: 100%; }
.torengalm-planner .torengalm-planner__inspector details { width: 100%; }
.torengalm-planner .torengalm-planner__inspector summary { cursor: pointer; padding: 0.5rem 0; }
.torengalm-planner .torengalm-planner__guide { stroke: var(--tg-accent); stroke-width: 1; stroke-dasharray: 5 4; vector-effect: non-scaling-stroke; pointer-events: none; }
.torengalm-planner .is-selected .torengalm-planner__seating-ring { stroke: var(--tg-selection); stroke-width: 3; }
@media (max-width: 700px) {
 .torengalm-planner .torengalm-planner__workspace { display: block; }
 .torengalm-planner .torengalm-planner__catalog { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 16rem; overflow: auto; }
}

.torengalm-planner .torengalm-planner__history { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.75rem; }
.torengalm-planner .torengalm-planner__alignment { display: flex; align-items: center; gap: 0.4rem; width: 100%; font-size: 0.875rem; }
.torengalm-planner .torengalm-planner__alignment input { min-height: 0; width: 1rem; height: 1rem; margin: 0; }
@media (min-width: 701px) { .torengalm-planner .torengalm-planner__catalog { max-height: 24rem; overflow-y: auto; padding-right: 0.25rem; } }

.torengalm-planner .torengalm-planner__templates { display: grid; gap: 0.5rem; margin-bottom: 1rem; }
.torengalm-planner .torengalm-planner__templates label { display: grid; gap: 0.3rem; }
.torengalm-planner .torengalm-planner__templates,
.torengalm-planner .torengalm-planner__templates label { min-width: 0; }
.torengalm-planner .torengalm-planner__templates select { width: 100%; min-width: 0; }

/* Catalogue-only presentation. These icon pixels are illustrative, never world geometry. */
.torengalm-planner .torengalm-planner__catalog-hint { font-size: 0.75rem; color: var(--tg-text-muted); margin: 0 0 0.5rem; }
.torengalm-planner .torengalm-planner__catalog-usage { color: var(--tg-text-muted); padding-inline: 0.2rem; overflow-wrap: anywhere; }
.torengalm-planner .torengalm-planner__catalog { gap: 0.65rem; padding: 0.2rem; scrollbar-gutter: stable; }
.torengalm-planner .torengalm-planner__catalog-item { position: relative; min-width: 0; }
.torengalm-planner .torengalm-planner__catalog button.torengalm-planner__catalog-card { display: grid; grid-template-columns: 4rem minmax(0,1fr); align-items: center; gap: 0.65rem; width: 100%; padding: 0.65rem; text-align: start; background: var(--tg-background); border: 1px solid var(--tg-border); border-radius: 0.55rem; min-height: 6.25rem; }
.torengalm-planner .torengalm-planner__catalog-card:hover:not(:disabled) { border-color: var(--tg-primary); box-shadow: 0 0 0 1px var(--tg-primary); }
.torengalm-planner .torengalm-planner__catalog button:disabled { opacity: 1; background: var(--tg-surface-muted); border-style: dashed; cursor: not-allowed; }
.torengalm-planner .torengalm-planner__catalog-copy { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.torengalm-planner .torengalm-planner__catalog-name { color: var(--tg-text); font-size: 0.875rem; font-weight: 650; line-height: 1.3; overflow-wrap: anywhere; }
.torengalm-planner .torengalm-planner__catalog-subtitle { font-size: 0.8rem; color: var(--tg-text-muted); line-height: 1.35; overflow-wrap: anywhere; }
.torengalm-planner .torengalm-planner__catalog-stock { font-size: 0.75rem; color: var(--tg-primary-hover); line-height: 1.35; margin-top: 0.2rem; font-weight: 600; }
.torengalm-planner [data-exhausted="true"] .torengalm-planner__catalog-stock { color: var(--tg-danger); }
.torengalm-planner .torengalm-planner__catalog-visual { display: grid; place-items: center; width: 100%; height: 4.5rem; border-radius: 0.35rem; background: var(--tg-surface-muted); overflow: hidden; }
.torengalm-planner .torengalm-planner__catalog-visual img { width: 100%; height: 100%; object-fit: contain; object-position: center; padding: 4px; box-sizing: border-box; }
.torengalm-planner .torengalm-planner__catalog-fallback { display: grid; place-items: center; width: 100%; height: 100%; pointer-events: none; }
.torengalm-planner .torengalm-planner__catalog-icon { position: relative; display: block; box-sizing: border-box; width: 44px; height: 27px; background: var(--tg-table-fill); border: 2px solid var(--tg-text); border-radius: 3px; box-shadow: 0 5px 0 -2px var(--tg-border); }
.torengalm-planner [data-catalog-fallback="round-table"] .torengalm-planner__catalog-icon { width: 37px; height: 37px; border-radius: 50%; outline: 4px dotted var(--tg-border); outline-offset: 4px; }
.torengalm-planner [data-catalog-fallback="rectangular-table"] .torengalm-planner__catalog-icon { outline: 3px dotted var(--tg-border); outline-offset: 4px; }
.torengalm-planner [data-catalog-fallback="cocktail-table"] .torengalm-planner__catalog-icon { width: 38px; height: 20px; border-radius: 50%; }
.torengalm-planner [data-catalog-fallback="cocktail-table"] .torengalm-planner__catalog-icon::after { content: ''; position: absolute; left: 15px; top: 18px; width: 4px; height: 19px; background: var(--tg-text); }
.torengalm-planner [data-catalog-fallback="buffet"] .torengalm-planner__catalog-icon { width: 52px; height: 17px; background: var(--tg-buffet-fill); }
.torengalm-planner [data-catalog-fallback="chair"] .torengalm-planner__catalog-icon { width: 27px; height: 27px; background: var(--tg-chair-fill); border-top-width: 7px; box-shadow: 0 8px 0 -5px var(--tg-text); }
@media (min-width: 701px) { .torengalm-planner .torengalm-planner__catalog { max-height: min(32rem, 60vh); } }
@media (max-width: 700px) {
 .torengalm-planner .torengalm-planner__catalog { max-height: 23rem; grid-template-columns: repeat(2,minmax(0,1fr)); }
 .torengalm-planner .torengalm-planner__catalog button.torengalm-planner__catalog-card { grid-template-columns: minmax(0,1fr); align-content: start; height: 100%; min-height: 11rem; }
 .torengalm-planner .torengalm-planner__catalog-visual { height: 4rem; }
}
@media (max-width: 360px) { .torengalm-planner .torengalm-planner__catalog { grid-template-columns: minmax(0,1fr); } }

/* Common controls and presentation hierarchy. All dimensions here are screen units. */
.torengalm-planner { border-radius: var(--tg-radius); font-size: 1rem; }
.torengalm-planner h2 { font-family: inherit; color: var(--tg-text); font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.2; letter-spacing: -0.02em; }
.torengalm-planner h3 { font-family: inherit; color: var(--tg-text); line-height: 1.4; }
.torengalm-planner .torengalm-planner__intro { margin: 0 0 1rem; color: var(--tg-text-muted); max-width: 65ch; }
.torengalm-planner [data-planner-status] { color: var(--tg-text-muted); font-size: 0.875rem; }
.torengalm-planner .torengalm-planner__editor { border: 1px solid var(--tg-border); }
.torengalm-planner .torengalm-planner__editor button:not(.torengalm-planner__catalog-card) { padding: 0.6rem 0.8rem; font-weight: 600; }
.torengalm-planner button:not(:disabled):hover { background: var(--tg-surface-muted); }
.torengalm-planner button:not(:disabled):active { outline: 2px solid var(--tg-selection); outline-offset: -3px; }
.torengalm-planner :is(button,input,select,summary,svg):focus-visible { outline: 3px solid var(--tg-focus); outline-offset: 3px; }
.torengalm-planner .torengalm-planner__editor [data-object-action="export-pdf"] { width: 100%; margin-top: 0.75rem; background: var(--tg-primary); color: var(--tg-surface); border-color: var(--tg-primary); }
.torengalm-planner .torengalm-planner__editor [data-object-action="export-pdf"]:hover { background: var(--tg-primary-hover); }
.torengalm-planner .torengalm-planner__editor [data-object-action="remove"] { color: var(--tg-danger); border-color: var(--tg-danger); }
.torengalm-planner .torengalm-planner__editor button:disabled { opacity: 1; color: var(--tg-text-muted); background: var(--tg-surface-muted); border-style: dashed; }
.torengalm-planner .torengalm-planner__catalog-stock { align-self: flex-start; border-radius: 0.3rem; background: var(--tg-surface-muted); padding: 0.2rem 0.35rem; }
.torengalm-planner .torengalm-planner__catalog-card[aria-pressed="true"] { outline: 3px solid var(--tg-selection); outline-offset: -3px; }
.torengalm-planner .torengalm-planner__catalog-card[aria-pressed="true"] .torengalm-planner__catalog-stock::before { content: '✓ '; }
.torengalm-planner .torengalm-planner__catalog { overscroll-behavior: contain; }
.torengalm-planner .torengalm-planner__inspector { background: var(--tg-surface); border-radius: var(--tg-radius); padding: 0.75rem; }
.torengalm-planner .torengalm-planner__inspector strong::before { content: 'Geselecteerd: '; font-weight: 400; }
.torengalm-planner .torengalm-planner__inspector label { font-size: 0.875rem; }
.torengalm-planner .torengalm-planner__alignment { min-height: 2.75rem; cursor: pointer; }
.torengalm-planner .torengalm-planner__alignment input { accent-color: var(--tg-primary); width: 1.25rem; height: 1.25rem; }
.torengalm-planner .torengalm-planner__object-status { border-radius: 0.3rem; font-size: 0.875rem; }
.torengalm-planner .torengalm-planner__object[data-valid="false"] .torengalm-planner__object-shape { stroke-dasharray: 4 3; stroke-width: 3; }
.torengalm-planner .torengalm-planner__toolbar { margin-bottom: 0.75rem; }
.torengalm-planner .torengalm-planner__facts { color: var(--tg-text-muted); }
.torengalm-planner .torengalm-planner__notes summary { min-height: 2.75rem; padding-block: 0.6rem; box-sizing: border-box; }
@media (max-width: 700px) {
 .torengalm-planner { padding: 0.75rem; }
 .torengalm-planner .torengalm-planner__catalog { max-height: 18rem; }
 .torengalm-planner .torengalm-planner__svg { height: clamp(22rem, 60vh, 36rem); }
 .torengalm-planner .torengalm-planner__inspector > button { flex: 1 1 auto; }
 .torengalm-planner .torengalm-planner__inspector select { width: 100%; font-size: 1rem; }
 .torengalm-planner .torengalm-planner__inspector > label { width: 100%; }
}

.torengalm-planner .torengalm-planner__catalog-seating { width: 100%; height: 100%; overflow: visible; }
.torengalm-planner [data-catalog-chair] { fill: var(--tg-chair-stroke); }
.torengalm-planner [data-catalog-table] { fill: var(--tg-table-fill); stroke: var(--tg-text); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }

/* Furniture-only pickup follows the pointer until the world-scale SVG preview takes over. */
.torengalm-planner .torengalm-planner__pickup { position: fixed; z-index: 1000; width: 64px; height: 72px; transform: translate(-50%, -50%); pointer-events: none; }
.torengalm-planner .torengalm-planner__pickup[hidden] { display: none; }

.torengalm-planner .torengalm-planner__inspector { display: block; }
.torengalm-planner .torengalm-planner__inspector-body { display: flex; flex-wrap: wrap; gap: .5rem; align-items: end; }
.torengalm-planner [data-object-action="toggle-inspector"] { width: 100%; text-align: left; }
.torengalm-planner [data-object-action="toggle-inspector"]::before { content: "▸ "; }
.torengalm-planner [data-object-action="toggle-inspector"][aria-expanded="true"]::before { content: "▾ "; }

.torengalm-planner [data-object-action="toggle-inspector"] { display: block; font-size: .875rem; padding: .4rem; }
.torengalm-planner [data-object-action="toggle-inspector"] strong { display: inline; width: auto; }
