:root { --page-bg: #f6f7f7; --card-bg: rgba(255, 255, 255, 0.96); --text: #25282e; --muted: #8f9196; --line: #eef0f2; --mint: #43e7d8; --green: #25d878; --shadow: 0 8px 22px rgba(36, 46, 60, 0.055); } * { box-sizing: border-box; } html, body { width: 100%; min-height: 100%; margin: 0; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; } body { display: flex; justify-content: center; background: #111; color: var(--text); font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } button { border: 0; padding: 0; background: transparent; color: inherit; font: inherit; } [hidden] { display: none !important; } .bd-center { position: relative; width: 100%; max-width: 430px; min-height: 100vh; overflow: hidden; background: var(--page-bg); } .bd-center[data-loading="true"] .title-bar, .bd-center[data-loading="true"] .content, .bd-center[data-loading="true"] .home-indicator { visibility: hidden; } .hero-bg { position: absolute; inset: 0 0 auto; height: 215px; background: radial-gradient(circle at 72% 4%, rgba(209, 255, 248, 0.98) 0, rgba(209, 255, 248, 0.88) 23%, rgba(209, 255, 248, 0) 48%), radial-gradient(circle at 14% 20%, rgba(185, 250, 244, 0.78) 0, rgba(185, 250, 244, 0) 35%), linear-gradient(151deg, #ccf7ef 0%, #ebfffa 58%, rgba(242, 255, 252, 0.7) 100%); clip-path: polygon(0 0, 100% 0, 100% 76%, 70% 47%, 40% 58%, 0 78%); } .title-bar, .content, .home-indicator { position: relative; z-index: 1; } .title-bar { display: grid; grid-template-columns: 44px minmax(0, 1fr) 56px; align-items: center; z-index: 12; min-height: 56px; padding: 8px 14px 6px; } .back-button, .language-button { display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; color: #2c3036; } .back-button svg { width: 30px; height: 30px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.4; } .title-bar h1 { min-width: 0; margin: 0; overflow: hidden; color: #24282e; font-size: 19px; font-weight: 900; line-height: 1.2; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .language-switcher { position: relative; display: flex; justify-content: flex-end; } .language-button { width: auto; min-width: 42px; height: 32px; padding: 0 10px; border-radius: 999px; background: rgba(255, 255, 255, 0.55); font-size: 12px; font-weight: 900; } .language-menu { position: absolute; top: 38px; right: 0; z-index: 30; display: grid; gap: 4px; min-width: 74px; padding: 8px; border: 1px solid rgba(34, 196, 180, 0.18); border-radius: 8px; background: #fff; box-shadow: 0 12px 24px rgba(22, 31, 42, 0.12); } .language-menu button { min-height: 30px; border-radius: 6px; font-size: 12px; font-weight: 850; } .language-menu button.is-active { background: #e7fbf8; color: #0aa397; } .content { display: grid; gap: 12px; padding: 8px 14px 32px; } .card { border-radius: 8px; background: var(--card-bg); box-shadow: var(--shadow); } .profile-card { display: flex; align-items: center; min-height: 104px; padding: 16px; } .avatar-shell, .member-avatar { display: flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 50%; background: linear-gradient(145deg, #d9fff5, #43e7d8); } .avatar-shell { width: 70px; height: 70px; flex: 0 0 70px; } .avatar-image, .member-avatar img { display: block; width: 100%; height: 100%; object-fit: cover; } .avatar-fallback, .member-fallback { color: #0b5f56; font-size: 26px; font-weight: 950; } .profile-copy { min-width: 0; flex: 1; margin-left: 16px; } .role-pill { display: inline-flex; align-items: center; min-height: 22px; padding: 0 9px; border-radius: 999px; background: #e7fbf8; color: #0b958a; font-size: 11px; font-weight: 900; } .name { margin-top: 7px; overflow: hidden; color: #25282e; font-size: 20px; font-weight: 900; line-height: 1.15; text-overflow: ellipsis; white-space: nowrap; } .meta { margin-top: 6px; overflow: hidden; color: var(--muted); font-size: 13px; font-weight: 750; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .salary-card { min-height: 113px; padding: 18px 20px; } .salary-head, .section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .salary-label, .section-title { color: #24282e; font-size: 16px; font-weight: 900; line-height: 1.2; } .section-subtitle { margin-top: 6px; color: #93959a; font-size: 12px; font-weight: 800; line-height: 1.2; } .text-link { flex: 0 0 auto; color: #10bcb0; font-size: 13px; font-weight: 900; text-decoration: none; } .salary-value { display: flex; align-items: baseline; gap: 6px; margin-top: 16px; color: #1f242b; } .salary-value span, .metric-money span { color: #21b66a; font-weight: 950; } .salary-value strong { min-width: 0; overflow-wrap: anywhere; font-size: 31px; font-weight: 950; line-height: 1.08; } .menu-card { overflow: hidden; } .menu-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; min-height: 58px; padding: 0 16px; border-bottom: 1px solid var(--line); } .menu-row:last-child { border-bottom: 0; } .menu-left { display: flex; align-items: center; min-width: 0; gap: 14px; } .menu-icon { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; flex: 0 0 30px; border-radius: 8px; background: #e9fbf4; color: #1f9d66; } .menu-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.1; } .menu-left span:last-child { min-width: 0; overflow: hidden; color: #464951; font-size: 15px; font-weight: 850; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .chevron { color: #8b8d92; font-size: 24px; line-height: 1; } .team-list-card { display: grid; gap: 12px; padding: 14px; } .team-list-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 4px; border-radius: 8px; background: #f2f6f6; } .team-list-tabs.is-single { grid-template-columns: minmax(0, 1fr); } .team-list-tab { min-width: 0; min-height: 38px; padding: 0 10px; border-radius: 7px; color: #697078; font-size: 13px; font-weight: 950; line-height: 1.1; } .team-list-tab.is-active { background: linear-gradient(135deg, #30dfb4, #15bda9); color: #fff; box-shadow: 0 8px 18px rgba(21, 189, 169, 0.24); } .team-list-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; } .team-list-summary > div { min-width: 0; padding: 10px; border-radius: 8px; background: #f7fbfa; } .team-list-summary span { display: block; overflow: hidden; color: #8b8d92; font-size: 11px; font-weight: 850; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .team-list-summary strong { display: block; margin-top: 4px; overflow-wrap: anywhere; color: #24282e; font-size: 15px; font-weight: 950; line-height: 1.15; } .team-list-content { display: grid; gap: 10px; max-height: 360px; overflow-y: auto; -webkit-overflow-scrolling: touch; } .member-card { padding: 16px; } .member-list { display: grid; gap: 10px; margin-top: 14px; } .member-row, .history-row, .details-row { display: grid; gap: 10px; padding: 12px; border: 1px solid #eef0f2; border-radius: 8px; background: #fbfcfc; } .member-row { grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; } .member-avatar { width: 44px; height: 44px; } .member-fallback { font-size: 18px; } .member-main { min-width: 0; } .member-name { overflow: hidden; color: #25282e; font-size: 15px; font-weight: 900; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .member-meta { margin-top: 4px; overflow: hidden; color: #8b8d92; font-size: 12px; font-weight: 800; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .member-side { display: grid; gap: 3px; color: #555b64; font-size: 12px; font-weight: 850; line-height: 1.2; text-align: right; } .empty-state { display: flex; align-items: center; justify-content: center; min-height: 80px; border: 1px dashed #e5e8ea; border-radius: 8px; color: #8b8d92; font-size: 14px; font-weight: 850; text-align: center; } .history-modal[hidden], .details-modal[hidden], .invite-modal[hidden] { display: none; } .history-modal, .details-modal, .invite-modal { position: fixed; z-index: 24; inset: 0; display: flex; align-items: center; justify-content: center; padding: 18px; } .history-backdrop, .invite-backdrop { position: absolute; inset: 0; background: rgba(15, 21, 28, 0.38); } .history-dialog, .invite-dialog { position: relative; display: flex; flex-direction: column; width: min(394px, 100%); max-height: 78vh; max-height: 78dvh; overflow: hidden; border-radius: 14px; background: #fff; box-shadow: 0 18px 44px rgba(23, 31, 42, 0.2); } .history-head, .invite-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 58px; padding: 16px 18px 12px; border-bottom: 1px solid #eef0f2; } .history-head h2, .invite-head h2 { min-width: 0; margin: 0; overflow: hidden; color: #24282e; font-size: 18px; font-weight: 950; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .history-close, .invite-close { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: #f4f6f7; color: #50545b; font-size: 25px; font-weight: 500; line-height: 1; } .invite-dialog { max-height: 80vh; max-height: 80dvh; } .invite-body { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; gap: 12px; overflow-y: auto; padding: 14px 18px max(18px, env(safe-area-inset-bottom)); -webkit-overflow-scrolling: touch; } .invite-search-form { margin: 0; } .invite-field { display: grid; gap: 8px; } .invite-field > span { color: #555b64; font-size: 13px; font-weight: 900; line-height: 1.2; } .invite-search-control { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; } .invite-search-control input { width: 100%; min-width: 0; height: 42px; padding: 0 12px; border: 1px solid #e4e8eb; border-radius: 8px; outline: none; background: #fbfcfc; color: #25282e; font: inherit; font-size: 14px; font-weight: 800; } .invite-search-control input:focus { border-color: rgba(16, 188, 176, 0.72); box-shadow: 0 0 0 3px rgba(67, 231, 216, 0.16); } .invite-search-control button, .invite-action, .invite-cancel { min-height: 34px; border-radius: 8px; font-size: 12px; font-weight: 950; } .invite-search-control button { min-width: 76px; height: 42px; padding: 0 12px; background: linear-gradient(135deg, #30dfb4, #15bda9); color: #fff; } .invite-search-control button:disabled, .invite-action:disabled, .invite-cancel:disabled { opacity: 0.55; } .invite-status { padding: 10px 12px; border-radius: 8px; background: #eafbf7; color: #078d80; font-size: 12px; font-weight: 850; line-height: 1.35; } .invite-status.is-error { background: #fff0f0; color: #c43f3f; } .invite-status.is-success { background: #ebfbf2; color: #128946; } .invite-list { display: grid; gap: 10px; } .invite-empty { display: flex; align-items: center; justify-content: center; min-height: 86px; border: 1px dashed #e5e8ea; border-radius: 8px; color: #8b8d92; font-size: 14px; font-weight: 850; text-align: center; } .invite-user-card { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 12px; border: 1px solid #eef0f2; border-radius: 8px; background: #fbfcfc; } .invite-user-card.is-selected { border-color: rgba(16, 188, 176, 0.7); box-shadow: 0 0 0 3px rgba(67, 231, 216, 0.14); } .invite-user-avatar { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; overflow: hidden; border-radius: 50%; background: linear-gradient(145deg, #d9fff5, #43e7d8); } .invite-user-avatar img { display: block; width: 100%; height: 100%; object-fit: cover; } .invite-avatar-fallback { color: #0b5f56; font-size: 18px; font-weight: 950; } .invite-user-main { min-width: 0; } .invite-user-name { overflow: hidden; color: #25282e; font-size: 15px; font-weight: 900; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .invite-user-meta { margin-top: 4px; overflow: hidden; color: #8b8d92; font-size: 12px; font-weight: 800; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .invite-user-side { display: grid; justify-items: end; gap: 6px; } .invite-action { min-width: 68px; padding: 0 12px; background: #1fcf7a; color: #fff; } .invite-cancel { min-width: 68px; padding: 0 12px; border: 1px solid #ffd6d6; background: #fff2f2; color: #c74444; } .invite-badge { min-width: 72px; padding: 5px 8px; border-radius: 999px; font-size: 11px; font-weight: 950; line-height: 1; text-align: center; } .invite-badge.pending { background: #fff4dc; color: #bd7a10; } .invite-badge.success { background: #e9fbf1; color: #15914f; } .history-summary { display: grid; gap: 8px; padding: 13px 18px; border-bottom: 1px solid #f0f2f3; } .history-summary.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } .history-summary span { display: block; color: #8b8d92; font-size: 12px; font-weight: 800; line-height: 1.2; } .history-summary strong { display: block; margin-top: 4px; overflow-wrap: anywhere; color: #24282e; font-size: 18px; font-weight: 950; line-height: 1.2; } .history-list { display: grid; flex: 1 1 auto; gap: 10px; min-height: 0; overflow-y: auto; padding: 14px 18px max(18px, env(safe-area-inset-bottom)); -webkit-overflow-scrolling: touch; } .history-row { position: relative; padding-top: 35px; } .status-tag { position: absolute; top: 0; left: 0; min-width: 92px; padding: 4px 9px; border-radius: 8px 0 8px 0; background: #3d73ff; color: #fff; font-size: 12px; font-weight: 900; text-align: center; } .history-row.is-completed .status-tag { background: #25c05c; } .history-row.is-pending .status-tag { background: #f0a92e; } .history-row.is-out .status-tag { background: #9ea1a7; } .history-title { color: #24282e; font-size: 15px; font-weight: 950; line-height: 1.2; } .history-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .history-cell span, .details-cell span { display: block; color: #96989d; font-size: 11px; font-weight: 800; line-height: 1.2; } .history-cell strong, .details-cell strong { display: block; margin-top: 4px; overflow-wrap: anywhere; color: #292d33; font-size: 14px; font-weight: 950; line-height: 1.2; } .more-button { justify-self: end; color: #10bcb0; font-size: 13px; font-weight: 900; } .details-row { grid-template-columns: 44px minmax(0, 1fr); align-items: center; } .loading-mask { position: absolute; z-index: 30; inset: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 18px; min-height: 100vh; background: radial-gradient(circle at 50% 35%, rgba(230, 255, 243, 0.98), rgba(246, 247, 247, 0.98) 44%, rgba(246, 247, 247, 0.96) 100%); } .runner-stick { position: relative; width: 92px; height: 82px; color: #1ecf70; filter: drop-shadow(0 8px 14px rgba(30, 207, 112, 0.22)); animation: runner-bob 0.42s ease-in-out infinite; } .runner-head, .runner-body, .runner-arm, .runner-leg, .runner-ground { position: absolute; display: block; } .runner-head { top: 5px; left: 39px; width: 18px; height: 18px; border: 4px solid currentColor; border-radius: 50%; } .runner-body { top: 26px; left: 47px; width: 5px; height: 28px; border-radius: 999px; background: currentColor; transform-origin: 50% 3px; animation: runner-body 0.42s ease-in-out infinite; } .runner-arm, .runner-leg { left: 47px; width: 5px; border-radius: 999px; background: currentColor; transform-origin: 50% 2px; } .runner-arm { top: 31px; height: 27px; } .runner-arm-front { animation: runner-arm-front 0.42s ease-in-out infinite; } .runner-arm-back { animation: runner-arm-back 0.42s ease-in-out infinite; } .runner-leg { top: 51px; height: 33px; } .runner-leg-front { animation: runner-leg-front 0.42s ease-in-out infinite; } .runner-leg-back { animation: runner-leg-back 0.42s ease-in-out infinite; } .runner-ground { right: 6px; bottom: 2px; width: 70px; height: 4px; overflow: hidden; border-radius: 999px; background: rgba(30, 207, 112, 0.18); } .runner-ground::before, .runner-ground::after { content: ""; position: absolute; top: 0; width: 24px; height: 4px; border-radius: 999px; background: currentColor; animation: runner-ground 0.6s linear infinite; } .runner-ground::after { animation-delay: 0.3s; } .loading-copy { color: #139a55; font-size: 15px; font-weight: 900; letter-spacing: 0; } .toast { position: fixed; left: 50%; bottom: calc(28px + env(safe-area-inset-bottom)); z-index: 50; max-width: 86vw; transform: translateX(-50%); padding: 10px 14px; border-radius: 8px; color: #fff; background: rgba(0, 0, 0, 0.75); font-size: 13px; font-weight: 700; text-align: center; } .home-indicator { position: absolute; left: 50%; bottom: 8px; width: 154px; height: 5px; border-radius: 999px; background: #050506; transform: translateX(-50%); } .modal-open { overflow: hidden; } [dir="rtl"] .content { direction: rtl; } [dir="rtl"] .profile-copy { margin-right: 16px; margin-left: 0; text-align: right; } [dir="rtl"] .member-side { text-align: left; } [dir="rtl"] .status-tag { right: 0; left: auto; border-radius: 0 8px 0 8px; } [dir="rtl"] .language-menu { right: auto; left: 0; } @keyframes runner-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } @keyframes runner-body { 0%, 100% { transform: rotate(-7deg); } 50% { transform: rotate(7deg); } } @keyframes runner-arm-front { 0%, 100% { transform: rotate(62deg); } 50% { transform: rotate(-58deg); } } @keyframes runner-arm-back { 0%, 100% { transform: rotate(-58deg); } 50% { transform: rotate(62deg); } } @keyframes runner-leg-front { 0%, 100% { transform: rotate(-58deg); } 50% { transform: rotate(54deg); } } @keyframes runner-leg-back { 0%, 100% { transform: rotate(54deg); } 50% { transform: rotate(-58deg); } } @keyframes runner-ground { 0% { transform: translateX(78px); } 100% { transform: translateX(-30px); } } @media (max-width: 360px) { .content { padding-right: 12px; padding-left: 12px; } .member-row { grid-template-columns: 40px minmax(0, 1fr); } .member-side { grid-column: 2; text-align: left; } }