InventoryWiredTrade.css 10.5 Ko
Télécharger le fichier
/*
* AIR inventory_trading_wired (478 x 274), hosted in the inventory window next to the furni grid like a user trade.
* Positions are AIR's: trade_container 478 x 233, offers_0 at 17,29, offers_1 at 263,29 (200 x 200 each, the grid
* border 136 x 136 at 32,22 with 40 px slots 4 px apart), lock_0 at 223,192, trade_type_splitter at 212,95,
* requirements_button at 453,6, button_container at 0,240.
*/
.octane-inventory-window.is-wired-trading {
width: 692px !important;
min-width: 692px !important;
max-width: min(692px, calc(100vw - 16px)) !important;
}
.octane-wired-trade {
display: flex;
flex: 1 1 auto;
gap: 8px;
min-height: 0;
}
.octane-wired-trade-inventory {
flex: 1 1 auto;
min-width: 0;
}
.octane-wired-trade-amount {
width: 49px;
}
.octane-wired-trade-panel {
position: relative;
flex: 0 0 478px;
width: 478px;
height: 274px;
/* The layout's texts carry no text_style: u_regular, 12 px. */
font-size: 12px;
color: #000;
}
.octane-wired-trade-container {
position: absolute;
inset: 0 0 auto 0;
height: 233px;
border: 1px solid #27556a;
border-radius: 4px;
background: #fff;
}
.octane-wired-trade-info {
position: absolute;
left: 38px;
top: 7px;
width: 401px;
height: 17px;
overflow: hidden;
text-align: center;
white-space: nowrap;
text-overflow: ellipsis;
opacity: 0.6;
}
.octane-wired-trade-requirements-button {
position: absolute;
left: 453px;
top: 6px;
width: 18px;
height: 18px;
padding: 0;
border: 0;
border-radius: 50%;
background: transparent;
cursor: pointer;
}
.octane-wired-trade-requirements-button img {
display: block;
}
.octane-wired-trade-requirements-button.is-highlighted {
outline: 2px solid #4fbce3;
}
.octane-wired-trade-offers {
position: absolute;
top: 29px;
width: 200px;
height: 200px;
}
.octane-wired-trade-offers.is-own {
left: 17px;
}
.octane-wired-trade-offers.is-receive,
.octane-wired-trade-offers.is-payment {
left: 263px;
}
.octane-wired-trade-offers.is-payment img {
position: absolute;
left: 20px;
top: 9px;
width: 170px;
height: 173px;
}
.octane-wired-trade-title {
position: absolute;
left: 0;
top: 2px;
width: 200px;
height: 16px;
text-align: center;
white-space: nowrap;
}
.octane-wired-trade-grid {
position: absolute;
left: 32px;
top: 22px;
display: grid;
grid-template-columns: repeat(3, 40px);
grid-auto-rows: 40px;
gap: 4px;
width: 136px;
height: 136px;
padding: 4px;
box-sizing: border-box;
border: 1px solid #27556a;
border-radius: 4px;
}
.octane-wired-trade-slot {
position: relative;
width: 40px;
height: 40px;
padding: 0;
border: 1px solid #cccccc;
border-radius: 4px;
background: #f2f2f2 center no-repeat;
box-sizing: border-box;
}
.octane-wired-trade-slot.is-filled {
cursor: pointer;
}
.octane-wired-trade-slot.is-active {
border-color: #0f1b22;
box-shadow: 0 0 0 2px #418db0;
}
.octane-wired-trade-slot-count {
position: absolute;
right: 1px;
top: 1px;
min-width: 12px;
padding: 0 2px;
border-radius: 3px;
background: #fff;
border: 1px solid #a5a5a5;
font-size: 9px;
line-height: 10px;
}
.octane-wired-trade-slot-remove {
position: absolute;
left: 1px;
bottom: 1px;
display: flex;
padding: 1px 2px;
border-radius: 3px;
background: #c0392b;
color: #fff;
font-size: 8px;
}
.octane-wired-trade-count {
position: absolute;
left: 0;
width: 200px;
text-align: center;
opacity: 0.6;
white-space: nowrap;
}
.octane-wired-trade-count.is-items {
top: 162px;
}
.octane-wired-trade-count.is-credits {
top: 180px;
}
.octane-wired-trade-lock {
position: absolute;
left: 223px;
top: 192px;
width: 32px;
height: 34px;
object-fit: none;
}
.octane-wired-trade-splitter {
position: absolute;
left: 212px;
top: 95px;
width: 53px;
height: 42px;
object-fit: none;
}
.octane-wired-trade-buttons {
position: absolute;
left: 0;
top: 240px;
width: 478px;
height: 32px;
}
.octane-wired-trade-accept {
position: absolute;
left: 5px;
top: 0;
width: 157px;
height: 28px;
}
.octane-wired-trade-time {
position: absolute;
left: 168px;
top: 5px;
width: 136px;
white-space: nowrap;
/* seconds_left_text: text_color 0xbf272a. */
color: #bf272a;
}
/* AIR's cancel sits at 415 with "Cancel"; anchored to the right edge so a longer caption ("Annuleren") stays inside. */
.octane-wired-trade-cancel {
position: absolute;
right: 7px;
top: 0;
min-width: 56px;
height: 28px;
}
/* trade_requirements_bubble: AIR floats it by the button; here it opens over the table, under the button. */
.octane-wired-trade-bubble {
position: absolute;
right: 4px;
top: 28px;
z-index: 10;
width: 430px;
max-height: 200px;
overflow: auto;
padding: 7px 13px;
box-sizing: border-box;
border: 1px solid #000;
border-radius: 6px;
background: #fff;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
}
.octane-wired-trade-bubble.is-highlighted {
box-shadow: 0 0 0 3px rgba(79, 188, 227, 0.6);
}
/* bubble_title: plain u_regular (no bold var). */
.octane-wired-trade-bubble-title {
font-weight: 400;
opacity: 0.5;
margin-bottom: 6px;
}
.octane-wired-trade-bubble-columns {
display: flex;
gap: 30px;
}
.octane-wired-trade-bubble-column {
flex: 1 1 0;
min-width: 0;
}
.octane-wired-trade-bubble-heading {
font-weight: bold;
margin-bottom: 4px;
}
.octane-wired-trade-bubble-definition {
display: flex;
flex-direction: column;
justify-content: center;
gap: 3px;
min-height: 60px;
padding: 6px 8px;
border-radius: 4px;
background: #f7f7f7;
text-align: center;
color: rgba(0, 0, 0, 0.6);
}
.octane-wired-trade-bubble-met {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 6px;
padding: 4px 6px;
background: #d9d9d9;
}
.octane-wired-trade-bubble-note {
margin-top: 6px;
}
/* disclaimer_text: text_color 0xbf272a. */
.octane-wired-trade-bubble-note.is-disclaimer {
color: #bf272a;
}
.octane-wired-trade-rule {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 3px;
}
.octane-wired-trade-node {
display: inline-flex;
align-items: center;
gap: 3px;
color: #000;
}
.octane-wired-trade-node img {
max-width: 32px;
max-height: 32px;
object-fit: contain;
}
.octane-wired-trade-or {
opacity: 0.5;
}
.octane-wired-trade-and {
opacity: 0.8;
}
/*
* Trade text (AIR inventory_trading, inventory_trading_wired, inventory_trading_name_scam_warning). These are
* Ubuntu frames: the texts carry no text_style, so u_regular 12 px black; the user names in the offer titles are
* bold; the style 3 buttons draw button_shiny_regular, 12 px regular (our
* buttons were 11-12.6 px bold). Our `Ubuntu` face is the condensed cut and the card shell hands it to spans and
* buttons, so the trade body takes the regular one.
*/
.octane-inventory-window .octane-inventory-body.is-trade,
.octane-trade-name-scam-body {
color: #000000;
font-family: HabboAirUbuntu, UbuntuRegular, sans-serif;
font-size: 12px;
line-height: 16px;
}
/* text_list_0 / text_list_1: bold_text (the user) + plain_text (are offering), u_regular 12 px. */
.octane-trade-offer-title {
font-size: 12px;
font-weight: 400;
}
.octane-trade-offer-title .octane-trade-offer-user {
font-weight: 700;
}
/* inventory_trading_name_scam_warning: trader_label / close_countdown_text 0x555555, trader_name_text 13 px bold. */
.octane-trade-name-scam-body .octane-trade-name-scam-muted {
color: #555555;
font-size: 12px;
}
.octane-trade-name-scam-body .octane-trade-name-scam-trader {
font-size: 13px;
font-weight: 700;
}
/* The buttons carry important Tailwind sizes and the card shell's condensed face; an important rule in the
earlier base layer outranks both. */
@layer base {
.octane-inventory-window .octane-inventory-body.is-trade :where(*):not(svg, svg *),
.octane-trade-name-scam-body :where(*):not(svg, svg *) {
font-family: HabboAirUbuntu, UbuntuRegular, sans-serif !important;
}
.octane-inventory-window .octane-inventory-body.is-trade :where(.octane-trade-button, .octane-wired-trade-accept, .octane-wired-trade-cancel),
.octane-trade-name-scam-body .octane-trade-button {
font-size: 12px !important;
font-weight: 400 !important;
}
/* button_accept, button_cancel (inventory_trading / _wired) and the name scam warning's open_profile_button /
close_button are the grey `button` (style 3, habbo_skin_button_shiny) with black text; the shared
.habbo-btn-secondary draws the flat 3 px button_default picture. AIR's cancel is grey too, never red. */
.octane-inventory-window .octane-inventory-body.is-trade :where(.octane-trade-button, .octane-wired-trade-accept, .octane-wired-trade-cancel).habbo-btn-secondary,
.octane-trade-name-scam-body .octane-trade-button.habbo-btn-secondary {
border-width: 5px !important;
border-image-source: var(--habbo-skin-shiny) !important;
border-image-slice: 5 fill !important;
border-image-width: 5px !important;
color: #000000 !important;
}
.octane-inventory-window .octane-inventory-body.is-trade :where(.octane-trade-button, .octane-wired-trade-accept, .octane-wired-trade-cancel).habbo-btn-secondary:hover,
.octane-trade-name-scam-body .octane-trade-button.habbo-btn-secondary:hover {
border-image-source: var(--habbo-skin-shiny-hover) !important;
}
.octane-inventory-window .octane-inventory-body.is-trade :where(.octane-trade-button, .octane-wired-trade-accept, .octane-wired-trade-cancel).habbo-btn-secondary:active,
.octane-trade-name-scam-body .octane-trade-button.habbo-btn-secondary:active {
border-image-source: var(--habbo-skin-shiny-pressed) !important;
}
.octane-inventory-window .octane-inventory-body.is-trade :where(.octane-trade-button, .octane-wired-trade-accept, .octane-wired-trade-cancel).habbo-btn-secondary:is(:disabled, .pointer-events-none),
.octane-trade-name-scam-body .octane-trade-button.habbo-btn-secondary:is(:disabled, .pointer-events-none) {
border-image-source: var(--habbo-skin-shiny-disabled) !important;
color: #777777 !important;
}
}
