/* OLDPLAY photo preparation: scoped to editor only */
.op-photo-modes{display:flex;gap:8px;margin:12px 0}.op-photo-modes button{flex:1;min-width:0;border:1px solid #3b4655;background:transparent;color:#d9e8fc;border-radius:10px;padding:12px 8px;font:500 13px Inter,sans-serif;cursor:pointer}.op-photo-modes button.is-active{border-color:#d9e8fc;background:#1b2430}.op-photo-batch[hidden],.op-photo-ready[hidden],.op-photo-modal[hidden]{display:none!important}.op-photo-drop{border:1px dashed #566273;border-radius:12px;padding:20px 12px;text-align:center;color:#aeb9c9;cursor:pointer;font:13px Inter,sans-serif}.op-photo-drop:hover,.op-photo-drop:focus-visible{border-color:#D9E8FC}.op-photo-drop strong{display:block;color:#d9e8fc;margin-bottom:6px}.op-photo-list{display:grid;gap:0;margin:12px 0}.op-photo-row{display:flex;gap:9px;align-items:center;border-bottom:1px solid #3b4655;padding:12px 8px;color:#d9e8fc;font:12px Inter,sans-serif}.op-photo-row:last-child{border-bottom:0}.op-photo-row img{width:40px;height:44px;object-fit:contain;border-radius:4px}.op-photo-row .op-photo-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.op-photo-row .op-select-wrap{flex:0 0 105px;width:105px;min-width:105px}.op-photo-row select{background:#101319;border:1px solid #46505f;color:#d9e8fc;border-radius:7px;padding:7px;cursor:pointer;font:12px Inter,sans-serif}.op-photo-row .op-photo-edit-link{background:none;border:0;padding:7px 2px;color:#D9E8FC;font:400 14px Inter,sans-serif;cursor:pointer}.op-photo-row .op-photo-edit-link:hover{color:#57D2FF}.op-photo-row .op-photo-remove{margin-left:auto;flex:0 0 32px;width:32px;height:32px;border:0;background:none;padding:0;cursor:pointer}.op-photo-row .op-photo-remove svg{display:block}.op-photo-row .op-photo-remove:not(:disabled):hover .op-photo-remove-border{stroke:#D9E8FC}.op-photo-modal{position:fixed;inset:0;z-index:99999;background:#000b;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.op-photo-dialog{width:min(1060px,96vw);max-height:95vh;overflow:auto;background:#101219;border:1px solid #3b4655;border-radius:18px;color:#d9e8fc;padding:22px;box-sizing:border-box;font-family:Inter,sans-serif}.op-photo-head,.op-photo-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}.op-photo-head h2{font:600 22px Inter,sans-serif;margin:0}.op-photo-close{background:transparent;border:1px solid #3b4655;border-radius:8px;color:#d9e8fc;padding:8px 12px;cursor:pointer}.op-photo-stage{background:#1b202a;border-radius:12px;margin:16px 0;padding:16px;display:flex;justify-content:center;align-items:center;min-height:280px}.op-photo-stage canvas{max-width:100%;max-height:48vh;object-fit:contain;display:block}.op-photo-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.op-photo-controls label{font-size:12px;color:#b8c3d3;display:flex;flex-direction:column;gap:6px}.op-photo-controls input{width:100%;accent-color:#d9e8fc}.op-photo-controls output{color:#d9e8fc}.op-photo-tabs{display:flex;gap:8px;margin-top:16px}.op-photo-tabs button{border:1px solid #3b4655;border-radius:8px;background:transparent;color:#d9e8fc;padding:9px 14px;cursor:pointer}.op-photo-tabs button.is-active{background:#d9e8fc;color:#101219}.op-photo-foot{margin-top:18px}.op-photo-foot button{border:1px solid #46505f;border-radius:9px;padding:11px 16px;background:transparent;color:#d9e8fc;cursor:pointer}.op-photo-foot .op-photo-save{background:#d9e8fc;color:#101219}.op-photo-help{font-size:12px;color:#9aa8bb;line-height:1.5}.op-photo-panel[hidden]{display:none}.op-photo-grid-toggle{font-size:12px;color:#b8c3d3;display:flex;align-items:center;gap:8px}.op-photo-grid-toggle input{accent-color:#d9e8fc}@media(max-width:650px){.op-photo-controls{grid-template-columns:1fr 1fr}.op-photo-dialog{padding:14px}.op-photo-row{flex-wrap:wrap}}
/* Fixed perspective guide and non-destructive crop frame */
.op-photo-image-wrap{position:relative;display:block;width:min(100%,800px);max-height:48vh;aspect-ratio:4/3;flex:0 1 auto;min-width:0}
.op-photo-image-wrap canvas{display:block}
.op-photo-fixed-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right,transparent calc(25% - .5px),#d9e8fc80 25%,transparent calc(25% + .5px),transparent calc(50% - .5px),#d9e8fc80 50%,transparent calc(50% + .5px),transparent calc(75% - .5px),#d9e8fc80 75%,transparent calc(75% + .5px)),linear-gradient(to bottom,transparent calc(25% - .5px),#d9e8fc80 25%,transparent calc(25% + .5px),transparent calc(50% - .5px),#d9e8fc80 50%,transparent calc(50% + .5px),transparent calc(75% - .5px),#d9e8fc80 75%,transparent calc(75% + .5px));border:1px solid #d9e8fc88;box-sizing:border-box}
.op-photo-fixed-grid[hidden],.op-photo-crop-overlay[hidden]{display:none!important}
.op-photo-crop-overlay{position:absolute;inset:0;touch-action:none}
.op-photo-crop-shade{position:absolute;background:#0009;pointer-events:none}
.op-photo-crop-frame{position:absolute;box-sizing:border-box;border:2px solid #d9e8fc;box-shadow:0 0 0 1px #0007;pointer-events:none}
.op-photo-crop-handle{position:absolute;width:14px;height:14px;border:2px solid #d9e8fc;background:#101219;border-radius:3px;box-sizing:border-box;pointer-events:auto;touch-action:none}
.op-photo-crop-handle.nw{left:-7px;top:-7px;cursor:nwse-resize}.op-photo-crop-handle.ne{right:-7px;top:-7px;cursor:nesw-resize}.op-photo-crop-handle.sw{left:-7px;bottom:-7px;cursor:nesw-resize}.op-photo-crop-handle.se{right:-7px;bottom:-7px;cursor:nwse-resize}.op-photo-crop-handle.n{left:calc(50% - 7px);top:-7px;cursor:ns-resize}.op-photo-crop-handle.s{left:calc(50% - 7px);bottom:-7px;cursor:ns-resize}.op-photo-crop-handle.w{left:-7px;top:calc(50% - 7px);cursor:ew-resize}.op-photo-crop-handle.e{right:-7px;top:calc(50% - 7px);cursor:ew-resize}

/* Preserve source aspect ratio: canvas and overlay always share the same actual box. */
.op-photo-image-wrap{width:auto;max-height:none;flex:0 0 auto;box-sizing:border-box}
.op-photo-image-wrap canvas{width:100%;height:100%;max-width:none;max-height:none;object-fit:fill}

/* Photo editor control refinements */
.op-photo-fixed-grid{background-image:linear-gradient(to right,transparent calc(20% - .5px),#d9e8fc80 20%,transparent calc(20% + .5px),transparent calc(40% - .5px),#d9e8fc80 40%,transparent calc(40% + .5px),transparent calc(60% - .5px),#d9e8fc80 60%,transparent calc(60% + .5px),transparent calc(80% - .5px),#d9e8fc80 80%,transparent calc(80% + .5px)),linear-gradient(to bottom,transparent calc(20% - .5px),#d9e8fc80 20%,transparent calc(20% + .5px),transparent calc(40% - .5px),#d9e8fc80 40%,transparent calc(40% + .5px),transparent calc(60% - .5px),#d9e8fc80 60%,transparent calc(60% + .5px),transparent calc(80% - .5px),#d9e8fc80 80%,transparent calc(80% + .5px))}
.op-photo-rotate-group{display:flex;align-items:flex-end;gap:8px;min-width:0}
.op-photo-rotate-group>label{flex:1;min-width:0}
.op-photo-rotate-buttons{display:flex;gap:6px;align-items:center}
.op-photo-rotate-buttons button{width:36px;height:36px;display:grid;place-items:center;padding:0;background:transparent;border:1px solid #3b4655;border-radius:9px;color:#d9e8fc;cursor:pointer;transition:border-color .16s}
.op-photo-rotate-buttons button:not(:disabled):hover{border-color:#fff}
.op-photo-save-actions{display:flex;gap:10px;align-items:center;margin-left:auto}
.op-photo-foot>.op-photo-help{flex:1;text-align:center}
.op-photo-foot .op-photo-save:not(:disabled):hover,.op-photo-foot .op-photo-save:not(:disabled):focus-visible{background:#57D2FF!important;border-color:#57D2FF!important;color:#101219!important}
.op-photo-tabs button:not(.is-active):hover{border-color:#fff}
.op-photo-tabs button.is-active,.op-photo-tabs button.is-active:not(:disabled):hover{background:#d9e8fc;color:#101219;border-color:#d9e8fc;cursor:default}
.op-photo-close{width:38px;height:38px;padding:0;display:grid;place-items:center;border-radius:50%;transition:border-color .16s,color .16s}
.op-photo-close:not(:disabled):hover{border-color:#fff;color:#fff}
@media(max-width:700px){.op-photo-foot{flex-wrap:wrap}.op-photo-foot>.op-photo-help{order:3;flex-basis:100%}.op-photo-save-actions{margin-left:auto}.op-photo-rotate-group{flex-wrap:wrap}}

/* Explicit interactive states: override shared editor button hover rules. */
html body .op-photo-modal .op-photo-dialog .op-photo-foot button.op-photo-save[data-done]:not(:disabled):hover:not(:disabled),
html body .op-photo-modal .op-photo-dialog .op-photo-foot button.op-photo-save[data-done]:not(:disabled):focus-visible:not(:disabled){background:#57D2FF!important;background-color:#57D2FF!important;border-color:#57D2FF!important;color:#101219!important;}
html body .op-photo-modal .op-photo-dialog .op-photo-tabs button.is-active,
html body .op-photo-modal .op-photo-dialog .op-photo-tabs button.is-active:not(:disabled):hover:not(:disabled),
html body .op-photo-modal .op-photo-dialog .op-photo-tabs button.is-active:not(:disabled):focus-visible{background:#D9E8FC!important;background-color:#D9E8FC!important;color:#101219!important;border-color:#D9E8FC!important;box-shadow:none!important;filter:none!important;cursor:default!important;}

/* Hover behavior v4: active tab cannot be hovered, only inactive tabs are interactive. */
.op-photo-modal .op-photo-tabs button.is-active{pointer-events:none!important;cursor:default!important;transition:none!important}
.op-photo-modal .op-photo-tabs button:not(.is-active){pointer-events:auto}

/* Mode selection: bright white active button, no hover effect. */
html body .op-photo-modes button.is-active,
html body .op-photo-modes button.is-active:not(:disabled):hover,
html body .op-photo-modes button.is-active:not(:disabled):focus-visible {
 background:#D9E8FC!important; background-color:#D9E8FC!important; color:#101219!important;
 border-color:#D9E8FC!important; box-shadow:none!important; filter:none!important;
 transform:none!important; cursor:default!important; transition:none!important;
}
html body .op-photo-modes button:not(.is-active):hover{border-color:#D9E8FC!important;}

/* Active upload mode is not an interactive hover target. */
html body .op-photo-modes button.is-active{pointer-events:none!important;cursor:default!important;}
