/* Shared ticket renderer. All artwork uses the same unscaled pixel coordinates as PDF. */
.ticket-preview-frame{position:relative;flex:none;margin:0 auto;overflow:visible}
.ticket-preview-board{position:relative;isolation:isolate;overflow:hidden;transform-origin:0 0;box-sizing:border-box;color:#23352e;font-family:Arial,"Segoe UI",sans-serif;line-height:1.2;text-rendering:geometricPrecision}
.ticket-preview-board *{box-sizing:border-box}
.ticket-preview-object{position:absolute;box-sizing:border-box;transform-origin:50% 50%;margin:0;padding:0;line-height:1.2;border:0;background:transparent}
.ticket-preview-content{position:relative;overflow:hidden;width:100%;height:100%;white-space:pre-wrap;overflow-wrap:anywhere}
.ticket-preview-object img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}
.ticket-preview-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:8px;border:1px dashed #9baa9f;background:#f4f7f3;color:#617167;text-align:center;white-space:pre-line;font:12px/1.35 Arial,sans-serif}
.ticket-preview-qr{background:#fff!important;color:#111!important}
.ticket-preview-qr .ticket-preview-content{background:#fff!important}
.ticket-preview-qr img{object-fit:contain;image-rendering:pixelated}
.ticket-preview-qr .ticket-preview-placeholder{font-size:11px;border-color:#c3ccc6;background:#fff;color:#23352e;padding:3px}
.ticket-preview-days .ticket-preview-content{display:flex;flex-wrap:wrap;align-content:flex-start;gap:4px}
.ticket-preview-day{display:inline-block;max-width:100%;padding:4px 6px;border:1px solid #b7cebd;border-radius:3px;background:#eef5ec;color:#2c583b;font-size:inherit;line-height:1.15;white-space:normal}
.ticket-preview-day.is-unavailable{background:#f2f3f2;border-color:#d6dad7;color:#606e65}
.ticket-preview-day.is-used{background:#e7eff7;border-color:#bfd0df;color:#345d7b}

/* Editor controls intentionally do not rely on the global dialog or button styles. */
.tte{--tte-surface:#fff;--tte-ground:#f5f7f5;--tte-ink:#23352e;--tte-muted:#65756b;--tte-line:#d7e0d9;--tte-primary:#244e3c;color:var(--tte-ink);font:14px/1.5 Inter,"Segoe UI",Arial,sans-serif;width:100%;min-width:0}
.tte *{box-sizing:border-box}
.tte [hidden]{display:none!important}
.tte h2,.tte h3,.tte p{margin:0}
.tte h2{font-size:23px;line-height:1.25;font-weight:600;letter-spacing:-.4px}
.tte h3{font-size:14px;line-height:1.4;font-weight:650;margin-bottom:12px}
.tte .tte-muted{font-size:12px;line-height:1.5;color:var(--tte-muted);overflow-wrap:anywhere}
.tte-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:0 0 18px}
.tte-header p{margin-top:5px}
.tte .tte-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:7px 11px;border:1px solid var(--tte-line);border-radius:7px;background:var(--tte-surface);color:var(--tte-ink);font:600 12px/1.4 Inter,"Segoe UI",Arial,sans-serif;cursor:pointer;text-align:center;white-space:normal;transition:background-color .12s}
.tte .tte-button:hover:not(:disabled){background:#edf3eb;border-color:#bacdbc}
.tte .tte-button:disabled{opacity:.48;cursor:default}
.tte .tte-primary{background:var(--tte-primary);border-color:var(--tte-primary);color:#fff}
.tte .tte-primary:hover:not(:disabled){background:#193f2e;border-color:#193f2e}
.tte .tte-danger{color:#9c4331;border-color:#e6cec5}
.tte .tte-button[aria-pressed=true]{background:#e8f0e3;border-color:#76957f;color:#1f4934}
.tte .tte-button:focus-visible,.tte .ticket-preview-object:focus-visible,.tte summary:focus-visible,.tte .ticket-preview-board:focus-visible{outline:3px solid #739d80;outline-offset:3px}
.tte .tte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;border-top:1px solid var(--tte-line);border-bottom:1px solid var(--tte-line);margin-bottom:16px}
.tte .tte-zoom{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:12px;color:var(--tte-muted)}
.tte .tte-zoom select{width:auto;min-width:110px;padding:7px 8px}
.tte .tte-layout{display:grid;grid-template-columns:180px minmax(240px,1fr) 220px;align-items:start;gap:16px;min-width:0}
.tte .tte-library,.tte .tte-inspector,.tte .tte-workspace{min-width:0}
.tte .tte-library{padding-right:14px;border-right:1px solid var(--tte-line)}
.tte .tte-palette{display:grid;grid-template-columns:1fr;gap:6px;margin-bottom:24px}
.tte .tte-palette .tte-button{justify-content:flex-start;text-align:left}
.tte .tte-library>p{margin:-5px 0 12px}
.tte .tte-layers{display:grid;grid-auto-rows:min-content;align-content:start;gap:4px;max-height:270px;overflow:auto;padding:3px;margin:-3px}
.tte .tte-layers .tte-button{justify-content:flex-start;text-align:left;overflow-wrap:anywhere;min-width:0;padding:7px 8px;font-weight:500}
.tte .tte-layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:12px}
.tte .tte-layer-actions .tte-button{font-size:11px;padding:6px}
.tte .tte-stage{display:flex;align-items:flex-start;justify-content:flex-start;overflow:auto;min-height:400px;max-height:780px;padding:40px 28px 32px;background:repeating-conic-gradient(#eef1ed 0% 25%,#f6f8f4 0% 50%) 0 0/16px 16px;border:1px solid var(--tte-line);border-radius:8px;overscroll-behavior:contain;touch-action:pan-x pan-y}
.tte .tte-canvas-frame{position:relative;flex:none;margin:0 auto;box-shadow:0 2px 16px #17382717}
.tte .ticket-preview-object{cursor:move;touch-action:none;user-select:none}
.tte .ticket-preview-object:hover{outline:1px dashed #7b9c86}
.tte .ticket-preview-object[aria-pressed=true]{outline:1px solid #244e3c}
.tte .ticket-preview-board{background:#fff}
.tte .tte-selection-layer{position:absolute;top:0;left:0;transform-origin:0 0;pointer-events:none;z-index:2}
.tte .tte-selection{position:absolute;outline:1.5px solid #244e3c;transform-origin:50% 50%;pointer-events:none}
.tte .tte-resize,.tte .tte-rotate{display:block;position:absolute;pointer-events:auto;width:14px;height:14px;background:#fff;border:2px solid #244e3c;box-shadow:0 1px 3px #1738271a;touch-action:none}
.tte .tte-resize::after,.tte .tte-rotate::after{content:"";position:absolute;inset:-7px}
.tte .tte-nw{left:-7px;top:-7px;cursor:nwse-resize}.tte .tte-ne{right:-7px;top:-7px;cursor:nesw-resize}.tte .tte-se{right:-7px;bottom:-7px;cursor:nwse-resize}.tte .tte-sw{left:-7px;bottom:-7px;cursor:nesw-resize}
.tte .tte-rotate{border-radius:50%;top:-34px;left:calc(50% - 7px);cursor:grab;background:#e8f0e3}
.tte .tte-rotate::before{content:"";position:absolute;left:4px;top:12px;width:2px;height:20px;background:#244e3c}
.tte .tte-help{font-size:12px;color:var(--tte-muted);line-height:1.55;margin:12px 0}
.tte .tte-inspector{padding-left:14px;border-left:1px solid var(--tte-line)}
.tte .tte-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tte .tte-field{display:flex;flex-direction:column;gap:5px;min-width:0;margin:0 0 12px}
.tte .tte-field>span{font-size:12px;color:#4e6456;font-weight:500}
.tte .tte-field input,.tte .tte-field textarea,.tte .tte-field select,.tte .tte-zoom select{min-width:0;border:1px solid var(--tte-line);border-radius:6px;color:var(--tte-ink);background:#fff;font:13px/1.4 Inter,"Segoe UI",Arial,sans-serif}
.tte .tte-field input,.tte .tte-field select{width:100%;padding:8px}
.tte .tte-field input[type=color]{height:38px;padding:3px;cursor:pointer}
.tte .tte-field textarea{padding:9px;min-height:104px;width:100%;resize:vertical}
.tte .tte-field input:focus,.tte .tte-field textarea:focus,.tte .tte-field select:focus,.tte .tte-zoom select:focus{outline:2px solid #a8c4b0;border-color:#426750}
.tte .tte-fields .tte-field{margin-bottom:4px}
.tte .tte-inspector>.tte-field:first-of-type{margin-top:12px}
.tte .tte-inspector>.tte-muted{margin:9px 0 14px}
.tte .tte-inspector>.tte-button{margin:6px 0;max-width:100%}
.tte .tte-preview-details{border-top:1px solid var(--tte-line);padding-top:12px}
.tte .tte-preview-details summary{cursor:pointer;font-size:13px;font-weight:600;color:#345740;margin-bottom:12px}
.tte .tte-live-preview{padding:16px;background:#edf1ec;border-radius:8px;overflow:hidden}
.tte .tte-live-preview .ticket-preview-board{box-shadow:0 2px 16px #17382712}
.tte .tte-live-preview .ticket-preview-object{cursor:default}
.tte .tte-live-preview .ticket-preview-object:hover{outline:0}
.tte .tte-status{min-height:20px;margin:14px 0 0;font-size:13px;white-space:pre-line;overflow-wrap:anywhere;color:#315c3e}
.tte .tte-status.is-error{color:#9b3828;background:#fff1ec;border:1px solid #eac8bc;padding:12px;border-radius:7px}
.tte .tte-discard{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:#fff6e9;border:1px solid #e6d0af;border-radius:7px;padding:14px;margin-top:12px}
.tte .tte-discard p{flex:1;min-width:220px;font-size:13px}
.tte .tte-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;border-top:1px solid var(--tte-line);padding-top:16px;margin-top:14px}
.tte .tte-footer>.tte-muted{flex:1}
@media(max-width:1150px){.tte .tte-layout{grid-template-columns:150px minmax(220px,1fr) 190px;gap:12px}.tte .tte-library{padding-right:10px}.tte .tte-inspector{padding-left:10px}.tte .tte-layer-actions{grid-template-columns:1fr}.tte .tte-stage{padding:40px 28px 28px}}
@media(max-width:850px){.tte .tte-layout{grid-template-columns:minmax(0,1fr) 210px}.tte .tte-library{grid-column:1/-1;border-right:0;border-bottom:1px solid var(--tte-line);padding:0 0 14px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px}.tte .tte-library>h3:first-child{grid-column:1;grid-row:1}.tte .tte-palette{grid-column:1;grid-row:2/5;grid-template-columns:1fr 1fr;margin:0;align-content:start}.tte .tte-library>h3:nth-of-type(2){grid-column:2;grid-row:1}.tte .tte-library>p{grid-column:2;grid-row:2;margin:0 0 7px}.tte .tte-layers{grid-column:2;grid-row:3;max-height:156px}.tte .tte-layer-actions{grid-column:2;grid-row:4;grid-template-columns:1fr 1fr}.tte .tte-stage{max-height:700px}}
@media(max-width:580px){.tte h2{font-size:21px}.tte .tte-header{padding-bottom:12px}.tte .tte-layout{grid-template-columns:minmax(0,1fr)}.tte .tte-library{column-gap:12px}.tte .tte-palette{grid-template-columns:1fr}.tte .tte-palette .tte-button{font-size:11px;padding:5px 7px;min-height:32px}.tte .tte-layers{max-height:240px}.tte .tte-library>p{font-size:11px}.tte .tte-inspector{border-left:0;border-top:1px solid var(--tte-line);padding:16px 0 0}.tte .tte-fields{grid-template-columns:1fr 1fr}.tte .tte-inspector>.tte-field{max-width:none}.tte .tte-toolbar{gap:6px}.tte .tte-toolbar>.tte-button{flex:1;font-size:11px;padding:7px}.tte .tte-zoom{width:100%;justify-content:flex-end;margin-top:4px}.tte .tte-stage{min-height:300px;max-height:680px}.tte .tte-footer{flex-wrap:wrap}.tte .tte-footer>.tte-muted{flex-basis:100%}.tte .tte-discard p{min-width:0;flex-basis:100%}}
@media(prefers-reduced-motion:reduce){.tte .tte-button{transition:none}}
@media print{.ticket-preview-board{print-color-adjust:exact;-webkit-print-color-adjust:exact}.tte .tte-selection-layer{display:none}}
