#n28-battle-markers{position:fixed;inset:0;z-index:95;pointer-events:none}#n28-battle-markers .n28-battle-marker{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);border:2px solid #e3bc66;border-radius:50%;background:#14120f;color:#ffdf82;width:40px;height:40px;cursor:pointer}#n28-trade-panel,.n28-battle-choice,.n28-trade-status{position:fixed;z-index:300001;top:15%;left:50%;transform:translateX(-50%);background:#15110c;color:#f5dfb5;border:1px solid #ae8e48;padding:16px;border-radius:10px;box-shadow:0 8px 32px #000a;font:14px system-ui;max-width:min(90vw,750px)}#n28-trade-panel[hidden]{display:none}#n28-trade-panel button,.n28-battle-choice button{display:inline-block;margin:7px;padding:8px 15px;border:1px solid #c5a463;background:#2b2212;color:#f7da9f;cursor:pointer}.n28-trade-dual{display:grid;grid-template-columns:1fr 1fr;gap:18px}.n28-trade-slots{display:grid;grid-template-columns:repeat(4,34px);gap:6px;margin:8px}.n28-trade-slots span{display:block;width:34px;height:34px;border:1px solid #6a542a;background:#201b15}.n28-trade-status{top:auto;bottom:30px;min-width:180px}/* N2.9 Trade bilateral autoritativo */
#n28-trade-panel{top:5vh;max-height:89vh;overflow:auto;width:min(92vw,850px)}
#n28-trade-panel .n29-offer-column{border:1px solid #80622e;border-radius:8px;padding:10px}
#n28-trade-panel .n28-trade-slots{grid-template-columns:repeat(4,minmax(54px,1fr));gap:5px}
#n28-trade-panel .n29-trade-cell{min-height:55px;max-width:150px;overflow:hidden;border:1px solid #866936;padding:3px;overflow-wrap:anywhere}
#n28-trade-panel .n29-trade-inventory{margin:10px 0;padding:9px;border:1px solid #80622e;max-height:23vh;overflow:auto}
#n28-trade-panel .n29-trade-item{display:flex;align-items:center;gap:7px;border-bottom:1px solid #493717;padding:5px}
#n28-trade-panel .n29-trade-item span{flex:1}#n28-trade-panel .n29-trade-item img{width:30px;height:30px;object-fit:contain}
#n28-trade-panel input{max-width:90px;background:#2c2418;color:#ffe1a1;border:1px solid #90733b;padding:4px}

/* N3.0 trade offers: server catalog icons and equipment attributes, not raw asset IDs */
#n28-trade-panel .n29-trade-cell img{display:block;width:30px;height:30px;object-fit:contain;margin:0 auto 3px}#n28-trade-panel .n29-trade-cell span{width:auto;height:auto;border:0;background:transparent;font-size:11px;overflow-wrap:anywhere}
@media(max-width:620px){#n28-trade-panel{max-height:95vh;top:2vh;padding:10px}#n28-trade-panel .n28-trade-dual{grid-template-columns:1fr}#n28-trade-panel .n28-trade-slots{grid-template-columns:repeat(4,minmax(42px,1fr))}}

/* N3.1: true currency sprite with accessible textual balance; stable Trade overflow */
#n28-trade-panel .n31-espinas-row{display:flex;align-items:center;gap:7px}
#n28-trade-panel .n31-espinas-row img{width:24px;height:24px;object-fit:contain;flex-shrink:0}
#n28-trade-panel .n29-trade-inventory{overscroll-behavior:contain}
#n28-trade-panel .n29-trade-item input{width:70px;min-width:55px}
@media(max-width:620px){#n28-trade-panel{width:94vw;box-sizing:border-box;overflow-y:auto}
#n28-trade-panel .n29-trade-item{flex-wrap:wrap;min-height:46px}
#n28-trade-panel .n29-trade-item span{min-width:110px}
#n28-trade-panel .n28-trade-slots{margin:7px 0}
#n28-trade-panel button{margin:4px}}

/* LAB06 Trade bilateral inspirado en la mecánica de revisión mutua de Dofus. */
#n28-trade-panel .n29-offer-column.confirmed{border-color:#f5d663;box-shadow:inset 0 0 0 1px #f5d663,0 0 14px #b28b2336;background:linear-gradient(180deg,#58451f33,transparent)}
#n28-trade-panel .n29-trade-security-hint{font-size:12px;color:#ffda81;border-left:3px solid #c6a14b;padding:5px 10px;background:#9875281a}
#n28-trade-panel .n29-trade-cell{position:relative;border-radius:6px;background:#211b15}
#n28-trade-panel .n29-trade-cell:hover{border-color:#ecc471}
#n28-trade-panel button:disabled{opacity:.5;cursor:not-allowed}

#n28-trade-panel .n29-trade-item[draggable="true"]{cursor:grab}#n28-trade-panel .n29-trade-item[draggable="true"]:hover{background:#5a432522}

/* LAB06 FIX: square Dofus-like inventory; readable icons, stack badges, no stretched images. */
#n28-trade-panel .n29-available-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(63px,1fr));gap:7px;padding:9px 3px;align-content:start}
#n28-trade-panel .n29-inventory-tile{position:relative;box-sizing:border-box;aspect-ratio:1;width:100%;height:auto;min-height:59px;margin:0;padding:5px;border:1px solid #907038;border-radius:6px;background:#261e14;display:grid;place-items:center;cursor:pointer;overflow:hidden}
#n28-trade-panel .n29-inventory-tile:hover:not(:disabled),#n28-trade-panel .n29-inventory-tile:focus-visible{border-color:#ffd57c;background:#3e2c17;outline:2px solid #dcb568}
#n28-trade-panel .n29-inventory-tile img{display:block;width:87%;height:83%;max-width:58px;max-height:58px;object-fit:contain;object-position:center;min-width:0;min-height:0;pointer-events:none}
#n28-trade-panel .n29-inventory-count,#n28-trade-panel .n29-offer-count{position:absolute;right:2px;bottom:2px;color:#ffebaa;background:#0a0909d9;border-radius:3px;padding:1px 3px;font:800 12px system-ui;pointer-events:none}
#n28-trade-panel .n29-trade-shortcut{font-size:12px;color:#ffd78b}
#n28-trade-panel .n29-equipped-tag{position:absolute;left:1px;bottom:1px;font-size:9px;background:#221b17ed;color:#e7aa79}
#n28-trade-panel .n29-trade-slots{grid-template-columns:repeat(4,minmax(51px,1fr))}
#n28-trade-panel .n29-trade-cell{position:relative;aspect-ratio:1;min-height:0;max-width:none;overflow:hidden;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:3px}
#n28-trade-panel .n29-trade-cell img{display:block;width:83%;height:83%;max-width:62px;max-height:62px;object-fit:contain;min-width:0;min-height:0;margin:0}
#n28-trade-panel .n29-trade-cell .n29-offer-label{position:absolute;left:0;right:0;top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;font-size:9px;color:#e9d5ad;background:#12100abb;padding:1px}
#n28-trade-panel .n29-trade-cell .n29-offer-count{right:2px;bottom:2px;color:#ffebaa}
#n28-trade-panel .n29-trade-cell .n29-remove-offer{position:absolute;right:0;top:0;margin:0!important;padding:0 3px!important;font:700 13px/1.3 system-ui;z-index:2}
#n28-trade-panel .n29-editable-offer{cursor:pointer}
.n28-quantity-dialog{border:1px solid #c4a26b;border-radius:9px;background:#15120f;color:#f9e5bf;padding:17px;min-width:min(86vw,310px);box-shadow:0 10px 55px #000d}
.n28-quantity-dialog::backdrop{background:#000a}
.n28-quantity-dialog form{display:grid;gap:11px;font:14px system-ui}
.n28-quantity-dialog input{width:100%;box-sizing:border-box;color:#ffe5a6;background:#282017;border:1px solid #ba9254;border-radius:4px;padding:8px}
.n28-quantity-dialog button{margin:3px;padding:8px;background:#382713;color:#ffe5a6;border:1px solid #ba9254;cursor:pointer}
@media(max-width:620px){#n28-trade-panel .n29-available-grid{grid-template-columns:repeat(auto-fill,minmax(57px,1fr))}}

/* QA2: high specificity against legacy grid styles; no stretched resources. */
#n28-trade-panel .n28-trade-slots .n29-trade-cell img{display:block;width:78%;height:78%;max-width:62px;max-height:62px;object-fit:contain;object-position:center;margin:0}
#n28-trade-panel .n28-trade-slots .n29-trade-cell .n29-offer-count{position:absolute;width:auto;height:auto;right:2px;bottom:2px;border:0;border-radius:4px;padding:2px 4px;color:#fff0ad;background:rgba(10,9,7,.92);font:800 12px/1.1 system-ui;overflow-wrap:normal}
#n28-trade-panel .n28-trade-slots .n29-trade-cell .n29-offer-label{position:absolute;width:100%;height:auto;left:0;right:0;top:0;line-height:1.1;font-size:9px;text-overflow:ellipsis;overflow:hidden;border:0;background:#14110dc4}
#n28-trade-panel .n29-inventory-tile img{object-fit:contain!important;max-width:58px!important;max-height:58px!important}
#n28-trade-panel .n29-build-label{display:block;margin:0 0 7px;color:#d6a65b;font-size:10px;letter-spacing:.3px}

/* QA4: confirmaciones visibles y accesibles para ambos participantes. */
#n28-trade-panel .n29-confirmation-state{padding:7px;border-radius:5px;text-align:center;font-weight:750;border:1px solid #8f7237;}
#n28-trade-panel .n29-confirmation-state.is-confirmed{background:#315334;color:#d7ffd9;border-color:#76c981;}
#n28-trade-panel .n29-confirmation-state.is-pending{background:#40311f;color:#ffe2a1;border-color:#b18d41;}
