TalentTrack.css 16.2 Ko
Télécharger le fichier
/* Official friendbar/talent windows (talent_track, task_progress_dialog, level_up, citizenship_welcome, track_promo). */
.icon-me-talents {
width: 32px;
height: 30px;
background-image: url("@/assets/images/talent/me_menu_me_talents.png");
background-position: center;
background-repeat: no-repeat;
image-rendering: pixelated;
}
/* ---- Talent track (talent_track layout; the window is the desktop minus 100 px each side) ---- */
.octane-talent-track.octane-air-modal__window {
width: calc(100vw - 200px) !important;
min-width: min(700px, calc(100vw - 16px));
}
/* frame: the panorama starts 20 px down and is 280 high, its scrollbar (10 px) right under it. */
.octane-talent-track__viewport {
position: relative;
margin-top: 20px;
}
.octane-talent-track__panorama {
display: flex;
height: 290px;
overflow-x: auto;
overflow-y: hidden;
}
.octane-talent-track__panorama > * {
flex: none;
height: 280px;
}
.octane-talent-track__end {
width: 100px;
}
.octane-talent-track__mask {
position: absolute;
top: 0;
width: 24px;
height: 280px;
pointer-events: none;
}
.octane-talent-track__mask.is-left {
left: 0;
}
.octane-talent-track__mask.is-right {
right: 0;
}
/* begin_helper / begin_citizenship: 250 x 280, everything placed as in the layout. */
.octane-talent-begin {
position: relative;
width: 250px;
}
.octane-talent-begin__title {
position: absolute;
left: 20px;
top: 20px;
width: 311px;
font-size: 18px;
font-weight: 700;
line-height: 22px;
}
.octane-talent-begin__text {
position: absolute;
left: 20px;
top: 49px;
width: 230px;
}
.octane-talent-begin__label {
position: absolute;
width: 76px;
color: #333333;
font-size: 10px; /* talent.track.helper.begin.* labels: il_button, 10 px bold */
font-weight: 700;
line-height: 12px;
text-align: right;
}
.octane-talent-begin__label.is-citizenship {
left: 124px;
top: 166px;
}
.octane-talent-begin__label.is-register {
left: 89px;
top: 201px;
}
.octane-talent-begin__emblem {
position: absolute;
left: 203px;
top: 182px;
}
.octane-talent-begin__button {
position: absolute;
left: 54px;
top: 227px;
width: 200px;
}
.octane-talent-begin__avatar {
position: absolute;
left: 169px;
top: 144px;
width: 90px;
height: 130px;
}
.octane-talent-begin__check {
position: absolute;
left: 216px;
top: 172px;
}
/* level_pane: separator at y30, title (50,30), description (50,55), illustration (700,0), status list (10,100). */
.octane-talent-level {
position: relative;
box-sizing: border-box;
min-width: 880px;
height: 280px;
padding: 100px 30px 0 10px;
}
.octane-talent-level::before {
content: "";
position: absolute;
left: 24px;
top: 30px;
bottom: 10px;
border-left: 1px solid #cccccc;
}
.octane-talent-level__title {
position: absolute;
left: 50px;
top: 30px;
font-size: 14px; /* level_title: il_heading_1, 14 px bold */
font-weight: 700;
line-height: 19px;
white-space: nowrap;
}
.octane-talent-level__description {
position: absolute;
left: 50px;
top: 55px;
width: 320px;
color: #333333;
font-size: 11px;
line-height: 14px;
}
.octane-talent-level__illustration {
position: absolute;
left: 700px;
top: 0;
width: 170px;
height: 120px;
object-fit: contain;
object-position: bottom center;
pointer-events: none;
}
.octane-talent-level__status {
position: relative;
display: flex;
gap: 10px;
height: 180px;
}
/* level_reward: 350 x 180, its border 155 high from y20; it widens when its rewards need more room. */
.octane-talent-reward {
position: relative;
flex: none;
min-width: 350px;
height: 180px;
}
.octane-talent-reward__border {
position: relative;
box-sizing: border-box;
min-width: 350px;
height: 155px;
margin-top: 20px;
padding: 80px 10px 0;
border-radius: 6px;
background: #bdbdbd;
color: #000000;
}
.octane-talent-reward.is-achieved .octane-talent-reward__border {
background: #4f7f2d;
color: #ffffff;
}
.octane-talent-reward__unlocked {
position: absolute;
left: 10px;
top: 8px;
color: #ffffff;
font-size: 9px;
font-weight: 700;
line-height: 12px;
}
.octane-talent-reward__description {
position: absolute;
left: 10px;
top: 22px;
width: 330px;
max-height: 54px;
overflow: hidden;
font-size: 12px;
font-weight: 700;
line-height: 16px;
}
.octane-talent-reward__list {
display: flex;
gap: 10px;
}
.octane-talent-reward__item {
position: relative;
display: flex;
flex: none;
box-sizing: border-box;
height: 60px;
border-radius: 6px;
background: rgba(0, 0, 0, 0.2);
color: #ffffff;
}
.octane-talent-reward__product {
display: flex;
align-items: center;
justify-content: center;
width: 33px;
height: 33px;
margin: 14px;
border-radius: 4px;
background: #cccccc;
}
.octane-talent-reward__product img {
max-width: 31px;
max-height: 30px;
}
.octane-talent-reward__item.is-vip {
align-items: center;
width: 69px;
padding-left: 14px;
}
.octane-talent-reward__item.is-vip span {
margin-left: 6px;
font-weight: 700;
}
.octane-talent-reward__item.is-perk {
width: 200px;
}
.octane-talent-reward.is-locked .octane-talent-reward__item.is-perk {
background: #979797;
}
.octane-talent-reward__perk-icon {
display: flex;
flex: none;
align-items: center;
justify-content: center;
width: 60px;
height: 60px;
}
.octane-talent-reward__perk-copy {
display: flex;
flex-direction: column;
min-width: 0;
padding: 9px 5px 0 0;
font-size: 11px; /* reward description: il_regular_white, 11 px */
line-height: 13px;
}
.octane-talent-reward__perk-copy span {
display: -webkit-box;
overflow: hidden;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.octane-talent-reward__perk-title {
font-size: 10px; /* reward title: il_heading_3, 10 px bold */
font-weight: 700;
line-height: 13px;
}
.octane-talent-reward__stripe {
position: absolute;
left: 1px;
top: 21px;
}
.octane-talent-reward__check {
position: absolute;
right: 10px;
top: 11px;
}
/* level_task: two rows of 80, each task 210 x 80 with its border 60 high from y20. */
.octane-talent-level__tasks {
display: flex;
flex-direction: column;
}
.octane-talent-level__task-row {
display: flex;
gap: 10px;
height: 80px;
}
.octane-talent-task {
position: relative;
display: block;
flex: none;
box-sizing: border-box;
width: 210px;
height: 60px;
margin-top: 20px;
padding: 0;
border: 1px solid #b6b6b6;
border-radius: 6px;
background: #ffffff;
color: #000000;
font: inherit;
text-align: left;
}
.octane-talent-task.is-ongoing {
border: 2px solid #3d7fbf;
background: #ffffff;
cursor: pointer;
}
.octane-talent-task.is-locked {
border-color: #bdbdbd;
background: #bdbdbd;
}
.octane-talent-task__badge {
position: absolute;
left: 0;
top: 0;
display: flex;
align-items: center;
justify-content: center;
width: 60px;
height: 58px;
}
.octane-talent-task.is-ongoing .octane-talent-task__badge {
top: 3px;
height: 45px;
}
.octane-talent-task__copy {
position: absolute;
left: 60px;
top: 9px;
width: 145px;
}
.octane-talent-task__title {
overflow: hidden;
font-size: 10px; /* task title: il_heading_3, 10 px bold */
font-weight: 700;
line-height: 15px;
text-overflow: ellipsis;
white-space: nowrap;
}
.octane-talent-task__description {
display: -webkit-box;
overflow: hidden;
font-size: 11px; /* task description: no text_style, il_regular 11 px */
line-height: 13px;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
.octane-talent-task__progress {
position: absolute;
left: 4px;
top: 46px;
width: 50px;
height: 6px;
background: url("@/assets/images/talent/talent_task_progress_bg.png") repeat-x;
}
.octane-talent-task__progress span {
display: block;
height: 100%;
background: url("@/assets/images/talent/talent_task_progress_fg.png") repeat-x;
}
.octane-talent-task__check {
position: absolute;
left: 182px;
top: -9px;
}
/* progress_container: 80 high under the scrollbar; the balloon hangs below it (frame is 445 high). */
.octane-talent-progress {
position: relative;
height: 80px;
margin-bottom: 46px;
}
.octane-talent-progress__title {
position: absolute;
left: 24px;
top: 18px;
font-size: 12px;
font-weight: 700;
line-height: 17px;
}
.octane-talent-progress__bar {
position: absolute;
left: 0;
right: 0;
top: 40px;
height: 16px;
background: url("@/assets/images/talent/talent_unachieved_mid.png") repeat-x;
}
.octane-talent-progress__achieved {
height: 100%;
background: url("@/assets/images/talent/talent_achieved_mid.png") repeat-x;
}
.octane-talent-progress__divider {
position: absolute;
top: 0;
width: 2px;
height: 11px;
background: url("@/assets/images/talent/talent_unachieved_div.png");
}
.octane-talent-progress__divider.is-achieved {
background-image: url("@/assets/images/talent/talent_achieved_div.png");
}
/* The needle's middle sits on the position: needle (36,27) 33 x 34, glow (25,15) 55 x 55, balloon (42,64). */
.octane-talent-progress__needle {
position: absolute;
top: -13px;
width: 33px;
height: 34px;
margin-left: -16px;
}
.octane-talent-progress__head {
position: relative;
width: 33px;
height: 34px;
overflow: hidden;
}
/* The shared .avatar-image box is 90 x 130; the needle's head fills the 33 x 34 widget instead. */
.octane-talent-progress__head .avatar-image {
width: 100%;
height: 100%;
}
.octane-talent-progress__glow {
position: absolute;
left: -11px;
top: -12px;
width: 55px;
height: 55px;
pointer-events: none;
}
.octane-talent-progress__balloon {
position: absolute;
left: 6px;
top: 37px;
padding: 6px 10px;
border-radius: 4px;
background: #a3201d;
color: #ffffff;
font-size: 10px;
font-weight: 700;
line-height: 13px;
white-space: nowrap;
}
.octane-talent-progress__balloon::before {
content: "";
position: absolute;
left: 6px;
top: -5px;
border-right: 5px solid transparent;
border-bottom: 5px solid #a3201d;
border-left: 5px solid transparent;
}
/* ---- Task dialogs ---- */
.octane-talent-dialog__box {
display: flex;
flex-direction: column;
gap: 8px;
padding: 10px;
border-radius: 6px;
background: #e2e2e2;
}
.octane-talent-dialog__top {
display: flex;
gap: 6px;
}
.octane-talent-dialog__instruction {
font-size: 12px;
font-weight: 700;
}
.octane-talent-dialog__hint {
padding-top: 8px;
border-top: 1px solid #c8c8c8;
}
.octane-talent-dialog__progress {
margin: 12px 0 0;
padding-bottom: 8px;
border-bottom: 1px solid #dddddd;
}
.octane-talent-dialog__bar {
height: 16px;
background: url("@/assets/images/talent/talent_unachieved_mid.png") repeat-x;
}
.octane-talent-dialog__bar span {
display: block;
height: 100%;
background: url("@/assets/images/talent/talent_achieved_mid.png") repeat-x;
}
.octane-talent-dialog__buttons {
display: flex;
justify-content: center;
padding-top: 10px;
}
.octane-talent-dialog__tour {
display: flex;
gap: 6px;
align-items: flex-end;
}
.octane-talent-dialog__tour img {
width: 120px;
}
.octane-talent-dialog__tour > div {
display: flex;
flex-direction: column;
gap: 4px;
}
.octane-talent-dialog__decline {
align-self: center;
margin-top: 8px;
border: 0;
background: transparent;
color: #1b79ab;
text-decoration: underline;
cursor: pointer;
}
/* ---- Level up ---- */
.octane-talent-levelup {
width: min(430px, calc(100vw - 16px));
}
.octane-talent-levelup__title {
font-size: 18px;
font-weight: 700;
}
.octane-talent-levelup__message {
color: #444444;
font-size: 12px;
font-weight: 700;
}
.octane-talent-levelup__box {
display: flex;
flex-direction: column;
gap: 4px;
padding: 12px 14px;
border-radius: 6px;
background: #e2e2e2;
}
.octane-talent-levelup__level {
font-size: 12px;
font-weight: 700;
}
.octane-talent-levelup__rewards {
margin-top: 6px;
padding-top: 10px;
border-top: 1px solid #c8c8c8;
}
.octane-talent-levelup__rewards-title {
color: #333333;
font-size: 10px; /* levelup rewards label: il_border, 10 px bold 0x333333 */
font-weight: 700;
}
.octane-talent-levelup__reward-list {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px;
margin-top: 6px;
}
.octane-talent-levelup__reward {
display: flex;
align-items: center;
gap: 4px;
color: #222222; /* vip_length / perk_name: il_heading_2, 12 px bold 0x222222 */
font-size: 12px;
font-weight: 700;
}
.octane-talent-levelup__reward img {
max-width: 35px;
max-height: 35px;
}
.octane-talent-levelup__plus {
padding: 0 6px;
font-size: 14px;
font-weight: 700;
}
.octane-talent-levelup__button {
align-self: center;
margin-top: 8px;
}
.octane-talent-levelup__decoration {
position: absolute;
right: -150px;
bottom: 0;
width: 260px;
height: 260px;
object-fit: contain;
object-position: bottom center;
pointer-events: none;
}
/* ---- Citizenship welcome ---- */
.octane-citizenship-popup__body {
display: flex;
gap: 10px;
}
.octane-citizenship-popup__copy {
display: flex;
flex: 1;
flex-direction: column;
gap: 10px;
}
.octane-citizenship-popup__heading {
font-size: 14px;
font-weight: 700;
}
.octane-citizenship-popup__actions {
display: flex;
flex-direction: column;
align-items: center;
}
.octane-citizenship-popup__image {
flex: none;
width: 140px;
height: 193px;
object-fit: contain;
}
/* ---- Toolbar promo (track_promo, 192x29) ---- */
.octane-talent-promo {
position: fixed;
right: 210px;
bottom: 62px;
z-index: 30;
display: flex;
align-items: center;
justify-content: space-between;
width: 192px;
height: 29px;
padding: 0 0 0 10px;
border: 1px solid #686661;
border-radius: 6px;
background: #4e4c47;
color: #ffffff;
font-size: 11px;
font-weight: 700;
cursor: pointer;
}
.octane-talent-promo:hover {
background: #6c6a65;
}
.octane-talent-promo img {
width: 29px;
height: 29px;
padding: 3px;
border-radius: 0 6px 6px 0;
background: #596f8d;
object-fit: none;
}
/*
* Text as AIR draws the talent windows (talent_track, task_progress_dialog, level_up, citizenship_welcome,
* track_promo): Illumina (style 100/101) frames in regular Ubuntu (our `Ubuntu` face is the condensed cut). Texts
* without a text_style are il_regular 11 px; the buttons keep the shared il_button 10 px bold. The frame's own title
* bar (the shared card header) is left alone.
*/
.octane-talent-track,
.octane-talent-dialog,
.octane-citizenship-popup,
.octane-talent-levelup,
.octane-talent-promo {
font-family: HabboAirUbuntu, UbuntuRegular, sans-serif;
}
.octane-talent-track .octane-air-modal__content,
.octane-talent-dialog .octane-air-modal__content,
.octane-citizenship-popup .octane-air-modal__content,
.octane-talent-levelup .octane-card-content-shell {
font-size: 11px;
line-height: 14px;
}
/* talent_track frame_subtitle: il_frame_modal_title with font_size 11, 0xcccccc. */
.octane-talent-track .octane-air-modal__subtitle {
color: #cccccc;
font-size: 11px;
line-height: 16px;
}
@layer base {
.octane-talent-track :where(*):not(svg, svg *, .octane-card-header-shell, .octane-card-header-shell *),
.octane-talent-dialog :where(*):not(svg, svg *, .octane-card-header-shell, .octane-card-header-shell *),
.octane-citizenship-popup :where(*):not(svg, svg *, .octane-card-header-shell, .octane-card-header-shell *),
.octane-talent-levelup .octane-card-content-shell :where(*):not(svg, svg *),
.octane-talent-promo :where(*):not(svg, svg *) {
font-family: HabboAirUbuntu, UbuntuRegular, sans-serif !important;
}
}
