@import "tailwindcss"; :root { --ink: #172321; --ink-soft: #32423f; --nav: #13201e; --nav-muted: #84938f; --green: #1f8f69; --green-deep: #187455; --green-soft: #e9f4ef; --canvas: #f4f5f2; --panel: #ffffff; --line: #e4e8e4; --muted: #77827f; --orange: #ec7d51; --orange-soft: #fff0e8; --blue: #477f91; --blue-soft: #e8f2f5; --shadow: 0 1px 2px rgb(18 31 28 / 0.03), 0 12px 34px rgb(18 31 28 / 0.045); } * { box-sizing: border-box; } html, body { min-height: 100%; } .admin-access-denied { display: grid; min-height: 100vh; place-items: center; padding: 24px; background: var(--cream); } .admin-access-denied section { width: min(440px, 100%); padding: 42px; border: 1px solid var(--line); border-radius: 22px; background: white; box-shadow: 0 22px 70px rgb(18 31 28 / 0.1); text-align: center; } .admin-access-denied p { color: var(--green); font-size: 11px; font-weight: 800; letter-spacing: 0.16em; } .admin-access-denied h1 { margin: 14px 0 8px; color: var(--green-deep); font-size: 24px; } .admin-access-denied span { display: block; color: #7f8a86; font-size: 13px; } .admin-access-denied a { display: inline-flex; height: 40px; align-items: center; margin-top: 24px; padding: 0 18px; border-radius: 10px; color: white; background: var(--green); font-size: 12px; font-weight: 700; text-decoration: none; } .login-page { display: grid; min-height: 100vh; grid-template-columns: minmax(0, 1.25fr) minmax(380px, 0.75fr); gap: 28px; align-items: stretch; padding: 42px; background: #eef2ee; } .login-brand, .login-card { border-radius: 28px; } .login-brand { display: flex; min-height: 620px; flex-direction: column; justify-content: center; padding: clamp(42px, 7vw, 96px); color: white; background: linear-gradient(135deg, #102d25, #1f6f55); box-shadow: var(--shadow); } .login-logo { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 16px; color: #15553f; background: #a9e4cc; font-size: 23px; font-weight: 800; } .login-brand p { margin: 28px 0 6px; color: #67d4aa; font-size: 12px; font-weight: 800; letter-spacing: 0.16em; } .login-brand h1 { margin: 0; font-size: clamp(42px, 6vw, 82px); font-weight: 520; letter-spacing: -0.06em; } .login-brand span { margin-top: 20px; color: rgb(255 255 255 / 0.64); font-size: 15px; } .login-card { display: flex; width: 100%; max-width: 520px; flex-direction: column; align-self: center; justify-self: center; padding: clamp(32px, 5vw, 58px); border: 1px solid #dfe6e1; background: white; box-shadow: var(--shadow); } .login-card h2 { margin: 6px 0 4px; font-size: 32px; letter-spacing: -0.04em; } .login-tip { margin-bottom: 30px; color: var(--muted); font-size: 12px; } .login-card label, .user-create-form label { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; } .login-card label > span, .user-create-form label > span { color: #61706b; font-size: 11px; font-weight: 650; } .login-card input, .user-create-form input, .user-create-form select { height: 48px; padding: 0 14px; border: 1px solid #dbe3de; border-radius: 11px; outline: none; background: #fbfcfb; } .login-card input:focus, .user-create-form input:focus, .user-create-form select:focus { border-color: #5fb28f; box-shadow: 0 0 0 3px rgb(50 153 112 / 0.1); } .login-card .primary-button { width: 100%; height: 50px; margin-top: 8px; } .login-error { margin: -2px 0 10px; color: #c45e3a; font-size: 11px; } body { margin: 0; background: var(--canvas); color: var(--ink); font-family: var(--font-geist-sans), "PingFang SC", "Microsoft YaHei", Arial, sans-serif; -webkit-font-smoothing: antialiased; } button, input, textarea, select { color: inherit; font: inherit; } button { cursor: pointer; } button:disabled { cursor: not-allowed; opacity: 0.55; } a { color: inherit; text-decoration: none; } .app-shell { min-height: 100vh; } .sidebar { position: fixed; inset: 0 auto 0 0; z-index: 50; display: flex; width: 232px; flex-direction: column; padding: 26px 16px 18px; color: white; background: radial-gradient(circle at 20% 2%, rgb(64 129 106 / 0.17), transparent 24%), var(--nav); } .brand-lockup { display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 0 10px; } .brand-symbol { display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid rgb(255 255 255 / 0.14); border-radius: 12px; background: linear-gradient(145deg, #2a9a74, #136149); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.22); font-size: 16px; font-weight: 750; } .brand-lockup > div:last-child { display: flex; flex-direction: column; } .brand-lockup strong { font-size: 14px; letter-spacing: 0.12em; } .brand-lockup > div:last-child span { margin-top: 3px; color: #8fa29e; font-size: 11px; } .main-nav { margin-top: 32px; } .nav-caption { margin: 0 12px 10px; color: #667a75; font-size: 10px; font-weight: 650; letter-spacing: 0.12em; } .nav-caption.second { margin-top: 26px; } .main-nav button { position: relative; display: flex; width: 100%; height: 44px; align-items: center; gap: 12px; margin: 2px 0; padding: 0 12px; border: 0; border-radius: 10px; color: var(--nav-muted); background: transparent; font-size: 13px; text-align: left; transition: 150ms ease; } .main-nav button:hover { color: white; background: rgb(255 255 255 / 0.045); } .main-nav button.active { color: white; background: linear-gradient(90deg, rgb(44 139 105 / 0.28), rgb(44 139 105 / 0.12)); } .main-nav button.active::before { position: absolute; left: 0; width: 2px; height: 20px; border-radius: 2px; background: #4bc091; content: ""; } .nav-mark { display: grid; width: 20px; height: 20px; place-items: center; color: #95a8a3; font-size: 15px; } .main-nav button.active .nav-mark { color: #5ec49d; } .nav-badge { display: grid; min-width: 21px; height: 21px; margin-left: auto; place-items: center; border-radius: 10px; color: #fff; background: #df744c; font-size: 10px; font-weight: 700; } .sidebar-summary { display: flex; align-items: center; gap: 10px; margin-top: auto; padding: 14px 12px; border: 1px solid rgb(255 255 255 / 0.065); border-radius: 12px; background: rgb(255 255 255 / 0.035); } .sidebar-summary > div:last-child, .sidebar-user > div:nth-child(2) { display: flex; min-width: 0; flex: 1; flex-direction: column; } .sidebar-summary strong, .sidebar-user strong { font-size: 11px; font-weight: 600; } .sidebar-summary span, .sidebar-user span { margin-top: 3px; color: #71837f; font-size: 10px; } .pulse-dot { width: 8px; height: 8px; flex: 0 0 auto; border: 2px solid #173d31; border-radius: 50%; background: #48bd8f; box-shadow: 0 0 0 3px rgb(72 189 143 / 0.12); } .sidebar-user { display: flex; align-items: center; gap: 10px; margin-top: 12px; padding: 10px 8px 0; border-top: 1px solid rgb(255 255 255 / 0.06); border-right: 0; border-bottom: 0; border-left: 0; width: 100%; color: inherit; background: transparent; text-align: left; } .sidebar-user:hover { background: rgb(255 255 255 / 0.035); } .chevron { color: #62736f !important; font-size: 16px !important; } .avatar { display: grid; width: 34px; height: 34px; flex: 0 0 auto; place-items: center; border-radius: 10px; color: #24423a; background: #d7ebe3; font-size: 12px; font-weight: 720; } .avatar.small { width: 30px; height: 30px; border-radius: 9px; font-size: 11px; } .avatar.large { width: 44px; height: 44px; border-radius: 12px; } .avatar.xlarge { width: 48px; height: 48px; border-radius: 15px; font-size: 15px; } .avatar.coral { color: #6c382a; background: #f5d9cb; } .avatar.cyan { color: #24505a; background: #d6e9ec; } .avatar.violet { color: #51436a; background: #e4dcf0; } .avatar.amber { color: #674a1f; background: #f0e1c3; } .avatar.mint { color: #235646; background: #cfe8dd; } .main-area { min-height: 100vh; margin-left: 232px; } .topbar { position: sticky; top: 0; z-index: 30; display: flex; height: 70px; align-items: center; justify-content: space-between; padding: 0 32px; border-bottom: 1px solid #e5e8e5; background: rgb(249 250 247 / 0.88); backdrop-filter: blur(18px); } .breadcrumb { display: flex; align-items: center; gap: 10px; color: #9aa39f; font-size: 12px; } .breadcrumb i { color: #c0c7c3; font-style: normal; } .breadcrumb strong { color: var(--ink-soft); font-weight: 580; } .top-actions { display: flex; align-items: center; gap: 10px; } .sync-state { display: flex; align-items: center; gap: 7px; margin-right: 6px; color: #76817e; font-size: 11px; } .sync-state i { width: 7px; height: 7px; border-radius: 50%; background: #32a875; } .primary-button, .ghost-button, .full-ghost-button { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; gap: 7px; border-radius: 9px; font-size: 12px; font-weight: 620; } .primary-button { padding: 0 15px; border: 1px solid var(--green-deep); color: white; background: var(--green); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.18); } .primary-button:hover { background: var(--green-deep); } .primary-button.soft { border-color: #b8dacd; color: var(--green-deep); background: #eff8f4; box-shadow: none; } .primary-button.light { border-color: white; color: var(--green-deep); background: white; } .ghost-button { padding: 0 14px; border: 1px solid #dce2de; color: #53615d; background: #fff; } .ghost-button:hover { border-color: #bec9c4; } .full-ghost-button { width: 100%; border: 1px solid #e2e7e4; color: #52615d; background: #fafbf9; } .text-button { padding: 3px 0; border: 0; color: var(--green-deep); background: transparent; font-size: 11px; font-weight: 650; } .content-frame { width: min(100%, 1500px); margin: 0 auto; padding: 32px 32px 56px; } .page-heading { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 26px; } .eyebrow { margin: 0 0 8px; color: var(--green); font-size: 10px; font-weight: 720; letter-spacing: 0.13em; text-transform: uppercase; } .page-heading h1 { margin: 0; font-size: clamp(26px, 3vw, 34px); font-weight: 690; letter-spacing: -0.045em; } .page-heading > div > p:last-child { margin: 8px 0 0; color: var(--muted); font-size: 13px; } .date-chip { display: flex; align-items: center; gap: 10px; color: #7b8682; font-size: 11px; } .date-chip strong { color: var(--ink); font-size: 12px; } .stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; } .stat-card { position: relative; min-height: 148px; padding: 20px 20px 17px; overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 1px 2px rgb(18 31 28 / 0.02); } .stat-icon { position: absolute; top: 17px; right: 17px; display: grid; width: 33px; height: 33px; place-items: center; border-radius: 10px; } .stat-icon span { width: 11px; height: 11px; border: 2px solid currentColor; border-radius: 3px 8px 3px 8px; transform: rotate(12deg); } .stat-icon.ink { color: #364944; background: #eef1ef; } .stat-icon.green { color: var(--green); background: var(--green-soft); } .stat-icon.blue { color: var(--blue); background: var(--blue-soft); } .stat-icon.orange { color: var(--orange); background: var(--orange-soft); } .stat-card > p { margin: 0; color: #6f7a77; font-size: 11px; } .stat-value { display: flex; align-items: baseline; gap: 5px; margin-top: 17px; } .stat-value strong { font-size: 30px; font-weight: 670; letter-spacing: -0.055em; } .stat-value span { color: #9aa39f; font-size: 10px; } .stat-card small { display: block; margin-top: 10px; color: #98a19e; font-size: 10px; } .overview-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(290px, 0.8fr); gap: 14px; margin-top: 14px; } .panel { border: 1px solid var(--line); border-radius: 16px; background: white; box-shadow: 0 1px 2px rgb(18 31 28 / 0.02); } .workflow-panel, .task-mini-panel, .table-panel { padding: 21px; } .panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 19px; } .panel-heading h2, .task-hero h2, .resource-intro h2, .batch-submit-card h2 { margin: 0; font-size: 15px; font-weight: 670; letter-spacing: -0.02em; } .panel-heading p { margin: 5px 0 0; color: #929c98; font-size: 10px; } .workflow-track { display: grid; grid-template-columns: auto 1fr auto 1fr auto 1fr auto; align-items: center; padding: 9px 0 20px; } .workflow-track > i { height: 1px; margin: 0 10px; background: #e1e7e3; } .workflow-step { display: flex; align-items: center; gap: 9px; min-width: 0; } .workflow-step > span { display: grid; width: 30px; height: 30px; flex: 0 0 auto; place-items: center; border: 1px solid #dbe2de; border-radius: 9px; color: #9aa49f; background: #fafbf9; font-size: 9px; font-weight: 700; } .workflow-step.done > span, .workflow-step.active > span { border-color: #abd1c2; color: white; background: var(--green); } .workflow-step > div { display: flex; flex-direction: column; white-space: nowrap; } .workflow-step strong { font-size: 11px; } .workflow-step small { margin-top: 4px; color: #99a29f; font-size: 9px; } .focus-callout { display: grid; grid-template-columns: auto 1fr auto; gap: 17px; align-items: center; padding: 17px 18px; border: 1px solid #dcebe5; border-radius: 13px; background: radial-gradient(circle at 90% 10%, rgb(47 157 117 / 0.08), transparent 28%), #f6faf8; } .callout-ring { display: grid; width: 58px; height: 58px; place-items: center; border: 4px solid #d8ede5; border-top-color: var(--green); border-radius: 50%; } .callout-ring strong, .callout-ring span { grid-area: 1 / 1; } .callout-ring strong { margin-top: -10px; font-size: 17px; } .callout-ring span { margin-top: 20px; color: #81908b; font-size: 8px; } .focus-callout h3 { margin: 0 0 5px; font-size: 12px; } .focus-callout p:last-child { margin: 0; color: #7c8985; font-size: 9px; line-height: 1.55; } .task-mini-list { display: flex; flex-direction: column; gap: 16px; } .task-mini-list article { padding-bottom: 15px; border-bottom: 1px solid #edf0ed; } .task-mini-list article:last-child { border-bottom: 0; } .task-mini-top { display: flex; align-items: center; gap: 9px; } .task-mini-top > div:nth-child(2) { display: flex; min-width: 0; flex: 1; flex-direction: column; } .task-mini-top strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .task-mini-top span { margin-top: 3px; color: #929c98; font-size: 9px; } .task-mini-top b { color: var(--green); font-size: 10px; } .progress { height: 4px; overflow: hidden; border-radius: 4px; background: #edf0ed; } .progress span { display: block; height: 100%; border-radius: 4px; background: var(--green); } .task-mini-list .progress { margin: 12px 0 8px 43px; } .task-mini-meta { display: flex; justify-content: space-between; margin-left: 43px; color: #9aa39f; font-size: 8px; } .task-mini-panel .full-ghost-button { margin-top: 5px; } .table-panel { margin-top: 14px; } .table-scroll { width: 100%; overflow-x: auto; } .data-table { width: 100%; border-collapse: collapse; table-layout: fixed; } .data-table th { height: 38px; padding: 0 12px; border-bottom: 1px solid #e8ece9; color: #97a09d; background: #fafbf9; font-size: 9px; font-weight: 630; text-align: left; } .data-table th:first-child { width: 28%; border-radius: 8px 0 0 8px; } .data-table th:last-child { border-radius: 0 8px 8px 0; } .data-table td { height: 66px; padding: 10px 12px; border-bottom: 1px solid #eef1ef; font-size: 10px; vertical-align: middle; } .data-table tbody tr:last-child td { border-bottom: 0; } .data-table tbody tr:hover td { background: #fbfcfa; } .content-cell, .account-cell { display: flex; min-width: 0; align-items: center; gap: 10px; } .content-cell > div, .account-cell > div:last-child { display: flex; min-width: 0; flex-direction: column; } .content-cell strong, .account-cell strong { overflow: hidden; font-size: 10px; font-weight: 630; text-overflow: ellipsis; white-space: nowrap; } .content-cell span:last-child, .account-cell span { overflow: hidden; margin-top: 4px; color: #98a19e; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; } .content-id { display: grid; min-width: 28px; height: 28px; place-items: center; border-radius: 8px; color: #61716c; background: #eef2ef; font-size: 8px; font-weight: 700; } .plain-strong { font-size: 10px; font-weight: 610; } .muted { color: #a0a8a5; font-size: 9px; } .date-value { color: #5f6d69; font-size: 9px; } .status-pill, .metric-ready, .metric-waiting { display: inline-flex; min-width: 51px; height: 23px; align-items: center; justify-content: center; border-radius: 12px; font-size: 8px; font-weight: 650; } .status-pill.claimed { color: #a15f36; background: #fff1e7; } .status-pill.published, .status-pill.collecting, .status-pill.active { color: #2e7286; background: #e9f3f6; } .status-pill.complete { color: #277a5d; background: #e6f3ee; } .metric-ready { color: #277a5d; background: #e9f5f0; } .metric-waiting { color: #927038; background: #faf1df; } .stack { display: flex; flex-direction: column; gap: 14px; } .stack > .table-panel { margin-top: 0; } .task-hero { display: flex; min-height: 170px; align-items: center; justify-content: space-between; padding: 28px 32px; overflow: hidden; border-radius: 17px; color: white; background: radial-gradient(circle at 82% 30%, rgb(83 194 151 / 0.21), transparent 30%), linear-gradient(125deg, #162a26, #205843); } .task-hero h2 { font-size: 23px; } .task-hero > div > p:last-child { max-width: 540px; margin: 10px 0 0; color: #a9c2b9; font-size: 11px; line-height: 1.7; } .task-hero .eyebrow { color: #73d1ac; } .task-list { display: flex; flex-direction: column; } .task-row { display: grid; grid-template-columns: auto minmax(220px, 1fr) 110px 82px 70px auto; gap: 16px; align-items: center; min-height: 82px; border-bottom: 1px solid #edf0ee; } .task-row:last-child { border-bottom: 0; } .task-row-main > div:first-child { display: flex; align-items: baseline; gap: 10px; } .task-row-main h3 { margin: 0; font-size: 12px; } .task-row-main > div:first-child span, .task-date span { color: #929b98; font-size: 9px; } .task-row-main > small { display: block; margin-top: 4px; color: #9aa39f; font-size: 8px; } .task-row-main .progress { margin-top: 9px; } .task-number, .task-date { display: flex; flex-direction: column; } .task-number strong { font-size: 16px; } .task-number span, .task-date strong { margin-top: 3px; color: #7e8a86; font-size: 9px; } .round-arrow { display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid #e0e5e2; border-radius: 50%; color: #71807b; background: white; } .task-share-actions { display: flex; align-items: center; gap: 7px; } .share-link-button { height: 31px; padding: 0 10px; border: 1px solid #cfe1d9; border-radius: 8px; color: var(--green-deep); background: #f2f8f5; font-size: 8px; font-weight: 650; white-space: nowrap; } .share-link-button:hover { border-color: #a9cebf; background: #eaf5f0; } .inline-summary { display: flex; min-height: 76px; align-items: center; gap: 24px; padding: 15px 21px; border: 1px solid var(--line); border-radius: 14px; background: white; } .inline-summary > div:not(.summary-note) { display: flex; align-items: baseline; gap: 10px; } .inline-summary span { color: #8b9692; font-size: 10px; } .inline-summary strong { font-size: 23px; } .inline-summary > i { width: 1px; height: 28px; background: #e5e9e6; } .summary-note { display: flex; align-items: center; gap: 8px; margin-left: auto; padding: 9px 12px; border-radius: 9px; background: #f3f8f5; } .filter-chips { display: flex; gap: 4px; padding: 3px; border-radius: 9px; background: #f3f5f3; } .filter-chips button { height: 27px; padding: 0 11px; border: 0; border-radius: 7px; color: #89938f; background: transparent; font-size: 9px; } .filter-chips button.active { color: #34443f; background: white; box-shadow: 0 1px 3px rgb(18 31 28 / 0.08); } .section-intro { display: flex; min-height: 92px; align-items: center; justify-content: space-between; gap: 30px; padding: 18px 22px; border: 1px solid var(--line); border-radius: 15px; background: white; } .section-intro h2 { margin: 0; font-size: 18px; letter-spacing: -0.03em; } .section-intro > p { max-width: 510px; margin: 0; color: #84908c; font-size: 10px; line-height: 1.7; text-align: right; } .task-scope-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; } .task-scope-card { padding: 19px; border: 1px solid var(--line); border-radius: 16px; background: white; box-shadow: 0 1px 2px rgb(18 31 28 / 0.02); transition: 160ms ease; } .task-scope-card:hover { transform: translateY(-1px); border-color: #cfdbd6; box-shadow: var(--shadow); } .task-scope-head { display: grid; grid-template-columns: auto 1fr auto; gap: 11px; align-items: center; } .task-scope-head h3 { margin: 0; font-size: 13px; } .task-scope-head > div:nth-child(2) > span { display: block; margin-top: 4px; color: #929c98; font-size: 9px; } .task-source-line { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; padding: 10px 11px; border-radius: 9px; background: #f5f7f5; font-size: 8px; } .task-source-line > span { color: #9aa39f; } .task-source-line a, .task-source-line strong { overflow: hidden; color: #4d6b61; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; } .task-scope-metrics { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 16px; padding: 14px 0; border-block: 1px solid #eef1ef; } .task-scope-metrics > div { display: flex; flex-direction: column; border-right: 1px solid #eef1ef; text-align: center; } .task-scope-metrics > div:last-child { border-right: 0; } .task-scope-metrics span { color: #99a29f; font-size: 8px; } .task-scope-metrics strong { margin-top: 5px; font-size: 17px; letter-spacing: -0.03em; } .task-scope-progress { margin-top: 13px; } .task-scope-open { display: flex; width: 100%; height: 37px; align-items: center; justify-content: space-between; margin-top: 15px; padding: 0 12px; border: 1px solid #dce5e1; border-radius: 9px; color: #345d50; background: #fbfcfb; font-size: 9px; font-weight: 650; } .task-scope-open:hover { border-color: #bcd5ca; background: #f2f8f5; } .task-scope-open b { font-size: 14px; font-weight: 500; } .task-detail-header { display: grid; grid-template-columns: auto auto 1fr auto; gap: 13px; align-items: center; min-height: 92px; padding: 17px 20px; border: 1px solid var(--line); border-radius: 15px; background: white; } .detail-back { height: 31px; padding: 0 10px; border: 1px solid #e0e6e2; border-radius: 8px; color: #697671; background: white; font-size: 8px; } .task-detail-header p { margin: 0 0 4px; color: var(--green); font-size: 8px; font-weight: 700; letter-spacing: 0.08em; } .task-detail-header h2 { margin: 0; font-size: 16px; } .task-detail-header > div:nth-child(3) > span { display: block; margin-top: 4px; color: #8e9995; font-size: 9px; } .task-detail-header > a { padding: 8px 10px; border-radius: 8px; color: var(--green-deep); background: var(--green-soft); font-size: 8px; font-weight: 650; } .resource-intro { display: grid; grid-template-columns: auto 1fr auto; gap: 24px; align-items: center; min-height: 126px; padding: 22px 26px; border-radius: 16px; color: white; background: linear-gradient(120deg, #172924, #254d40); } .resource-figure { display: flex; min-width: 115px; flex-direction: column; padding-right: 24px; border-right: 1px solid rgb(255 255 255 / 0.14); } .resource-figure strong { font-size: 34px; letter-spacing: -0.05em; } .resource-figure span { color: #94b1a7; font-size: 9px; } .resource-intro > div:nth-child(2) p { max-width: 580px; margin: 8px 0 0; color: #9db5ad; font-size: 10px; line-height: 1.6; } .resource-rule { display: flex; flex-direction: column; padding: 13px 16px; border: 1px solid rgb(255 255 255 / 0.1); border-radius: 11px; background: rgb(255 255 255 / 0.05); } .resource-rule span { color: #8aa59c; font-size: 8px; } .resource-rule strong { margin-top: 5px; font-size: 11px; } .resource-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin: -3px 0 18px; padding: 13px; border: 1px solid #e9eeeb; border-radius: 12px; background: #f8faf8; } .resource-search { display: flex; flex-direction: row; min-width: 230px; flex: 1 1 280px; align-items: center; gap: 8px; margin: 0; height: 38px; padding: 0 12px; border: 1px solid #dfe6e2; border-radius: 9px; background: white; } .resource-search:focus-within, .resource-filter-search:focus-within { border-color: #74b79f; box-shadow: 0 0 0 3px rgb(31 143 107 / 0.08); } .resource-search > span, .resource-filter-search > span { color: #83918c; font-size: 17px; font-weight: 400; } .resource-search input, .resource-filter-search input { width: 100%; height: 100%; padding: 0; border: 0; outline: 0; background: transparent; font-size: 10px; } .resource-filter-search { display: flex; flex: 0 1 180px; align-items: center; gap: 7px; height: 38px; padding: 0 11px; border: 1px solid #dfe6e2; border-radius: 9px; background: white; } .resource-clear-button { height: 38px; padding: 0 6px; border: 0; color: var(--green-deep); background: transparent; font-size: 9px; font-weight: 650; } .resource-clear-button:disabled { color: #a5aeaa; } .resource-toolbar-summary { display: flex; align-items: center; gap: 12px; margin-left: auto; color: #8c9894; font-size: 9px; white-space: nowrap; } .resource-toolbar-summary b { color: var(--ink); font-size: 11px; } .resource-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .resource-card { padding: 18px; border: 1px solid #e5e9e6; border-radius: 14px; background: #fff; transition: 150ms ease; } .resource-card:hover { transform: translateY(-1px); box-shadow: var(--shadow); } .resource-card-head { display: flex; align-items: center; gap: 11px; } .resource-card-head > div:nth-child(2) { display: flex; min-width: 0; flex: 1; flex-direction: column; } .resource-card-head h3 { margin: 0; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .resource-card-head span { margin-top: 4px; color: #8c9894; font-size: 9px; } .verified-dot { display: grid; width: 19px; height: 19px; place-items: center; border-radius: 50%; color: #fff !important; background: var(--green); font-size: 9px !important; } .resource-account-id { display: flex; min-width: 0; align-items: center; gap: 9px; margin-top: 14px; padding: 9px 10px; border-radius: 8px; color: #77847f; background: #f5f7f5; } .resource-account-id span { flex: 0 0 auto; font-size: 8px; } .resource-account-id strong { min-width: 0; overflow: hidden; color: #40534d; font-family: var(--font-geist-mono), monospace; font-size: 9px; font-weight: 600; text-overflow: ellipsis; user-select: all; white-space: nowrap; } .resource-metrics { display: grid; grid-template-columns: repeat(2, 1fr); margin-top: 12px; padding: 13px 0; border-block: 1px solid #eef1ef; } .resource-metrics > div { display: flex; flex-direction: column; border-right: 1px solid #eef1ef; text-align: center; } .resource-metrics > div:last-child { border-right: 0; } .resource-metrics span, .resource-source > span { color: #9ba4a1; font-size: 8px; } .resource-metrics strong { margin-top: 4px; font-size: 13px; } .resource-source { margin-top: 13px; } .resource-source > div { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; } .resource-source b { padding: 5px 7px; border-radius: 6px; color: #567068; background: #eef4f1; font-size: 8px; font-weight: 580; } .resource-source b.partner-managed { color: #8b603c; background: #fff3e8; } .resource-card-foot { display: flex; justify-content: space-between; margin-top: 14px; color: #9aa39f; font-size: 8px; } .resource-card-foot a { color: var(--green); font-weight: 650; } .resource-empty { display: flex; min-height: 240px; align-items: center; justify-content: center; flex-direction: column; gap: 7px; color: #939e9a; text-align: center; } .resource-empty strong { color: #354640; font-size: 13px; } .resource-empty span { margin-bottom: 8px; font-size: 9px; } .recovery-legend { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .recovery-legend > div { display: grid; grid-template-columns: auto 1fr; gap: 3px 9px; align-items: center; padding: 13px 16px; border: 1px solid var(--line); border-radius: 12px; background: white; } .recovery-legend strong { font-size: 10px; } .recovery-legend small { grid-column: 2; color: #97a09d; font-size: 8px; } .legend-dot { grid-row: 1 / span 2; width: 9px; height: 9px; border-radius: 50%; } .legend-dot.auto { background: #43a97f; } .legend-dot.upload { background: #52889a; } .legend-dot.fallback { background: #e8875d; } .recovery-table { table-layout: auto; } .recovery-table th:first-child { min-width: 280px; } .recovery-table th:nth-child(2) { min-width: 96px; } .recovery-table th, .recovery-table td { white-space: nowrap; } .recovery-content { max-width: 360px; } .recovery-content > div:last-child { min-width: 0; } .recovery-content strong { max-width: 310px; overflow: hidden; text-overflow: ellipsis; } .recovery-title-link { display: inline-flex; align-items: center; gap: 5px; max-width: 310px; color: #182822; text-decoration: none; vertical-align: top; } .recovery-title-link strong { min-width: 0; } .recovery-title-link::after { content: "↗"; flex: none; color: #2b9875; font-size: 10px; font-weight: 700; } .recovery-title-link:hover strong { color: #168565; text-decoration: underline; text-underline-offset: 3px; } .recovery-title-link:focus-visible { border-radius: 4px; outline: 2px solid rgba(43, 152, 117, 0.35); outline-offset: 3px; } .recovery-content span { color: #8d9894; } .metric-cell, .creator-metrics { display: flex; flex-direction: column; } .metric-cell strong, .creator-metrics strong { font-size: 11px; } .metric-cell span, .creator-metrics span { margin-top: 3px; color: #99a29f; font-size: 8px; } .metric-cell.total strong { color: var(--green-deep); } .metric-cell.update-time strong { font-size: 9px; font-weight: 650; } .metric-cell.publish-time strong { color: #56645f; font-size: 9px; font-weight: 650; } .collection-status-cell { display: flex; max-width: 190px; flex-direction: column; align-items: flex-start; gap: 5px; } .collection-status-cell small { max-width: 180px; overflow: hidden; color: #98a19e; font-size: 8px; text-overflow: ellipsis; } .collection-status { display: inline-flex; min-height: 24px; align-items: center; padding: 0 9px; border-radius: 999px; color: #72807a; background: #f0f3f1; font-size: 8px; font-weight: 700; } .collection-status.success { color: #237859; background: #e9f7f0; } .collection-status.scheduled, .collection-status.collecting { color: #34778c; background: #eaf4f7; } .collection-status.failed { color: #b85e3a; background: #fff0e9; } .creator-data-summary { display: flex; flex-direction: column; gap: 3px; color: #8b9692; font-size: 8px; } .creator-data-summary b { font-weight: 650; } .creator-screenshot-cell { display: flex; min-width: 104px; flex-direction: column; align-items: flex-start; gap: 6px; } .creator-screenshot-link { color: var(--green-deep); font-size: 8px; font-weight: 700; text-decoration: none; } .creator-screenshot-link:hover { text-decoration: underline; text-underline-offset: 3px; } .creator-screenshot-pending, .creator-ocr-failed { color: #9aa39f; font-size: 8px; } .creator-ocr-failed { color: #b85e3a; } .collect-button { height: 27px; padding: 0 9px; border: 1px dashed #a8c9bb; border-radius: 7px; color: var(--green-deep); background: #f7fbf9; font-size: 8px; } .upload-button { display: inline-flex; height: 28px; align-items: center; padding: 0 9px; border: 1px solid #dce3df; border-radius: 7px; color: #66746f; background: white; cursor: pointer; font-size: 8px; } .upload-button.uploaded { border-color: #b8d8cb; color: #277a5d; background: #eff8f4; } .upload-button.retry-upload { height: 24px; padding-inline: 7px; color: #8a5a44; background: #fff8f4; } .retry-failed-button { display: inline-flex; height: 34px; align-items: center; gap: 7px; padding: 0 12px; border: 1px solid #efc7b4; border-radius: 8px; color: #a95735; background: #fff8f4; font-size: 9px; font-weight: 700; } .recovery-panel-actions { display: flex; align-items: center; gap: 9px; } .export-data-button { display: inline-flex; height: 34px; align-items: center; padding: 0 13px; border: 1px solid #a9cdbc; border-radius: 8px; color: var(--green-deep); background: #f2faf6; font-size: 9px; font-weight: 700; } .export-data-button:disabled { color: #94a29c; background: #f5f7f6; cursor: wait; } .retry-failed-button b { display: grid; min-width: 18px; height: 18px; place-items: center; padding: 0 5px; border-radius: 999px; color: white; background: #df7b50; font-size: 8px; } .retry-failed-button:disabled { border-color: #e4e8e6; color: #a7afac; background: #f6f7f6; } .collection-schedule-panel { padding: 22px 24px; } .collection-schedule-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; } .collection-schedule-heading h2 { margin-top: 5px; font-size: 20px; } .collection-schedule-heading > div > span { display: block; margin-top: 7px; color: #87938f; font-size: 9px; } .schedule-save-area { display: flex; flex: 0 0 auto; align-items: center; gap: 12px; } .schedule-save-area .primary-button { height: 38px; } .schedule-grid { display: grid; grid-template-columns: 190px 1fr; gap: 14px; margin-top: 20px; } .schedule-start { display: flex; flex-direction: column; justify-content: center; gap: 9px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfb; } .schedule-start span { color: #65716d; font-size: 9px; font-weight: 700; } .schedule-start input { width: 100%; height: 42px; padding: 0 12px; border: 1px solid #d7dfdb; border-radius: 9px; color: var(--ink); background: white; font: inherit; font-size: 11px; } .schedule-days { display: grid; grid-template-columns: repeat(7, minmax(78px, 1fr)); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; } .schedule-days button { display: grid; min-height: 104px; place-items: center; align-content: center; gap: 7px; border: 0; border-right: 1px solid var(--line); color: #596762; background: white; } .schedule-days button:last-child { border-right: 0; } .schedule-days button:hover { background: #f7fbf9; } .schedule-days button.selected { color: var(--green-deep); background: #eef8f3; } .schedule-days button span { font-size: 10px; font-weight: 700; } .schedule-days button b { display: grid; width: 24px; height: 24px; place-items: center; border: 1px solid #d4dfda; border-radius: 7px; color: white; background: white; font-size: 13px; } .schedule-days button.selected b { border-color: var(--green); background: var(--green); } .schedule-days button small { color: #89948f; font-size: 8px; } .schedule-mobile-hint { display: none; } .schedule-updated { margin-top: 10px; color: #9aa39f; font-size: 8px; text-align: right; } .upload-button input { display: none; } .partner-layout { display: grid; grid-template-columns: 310px minmax(0, 1fr); gap: 20px; align-items: start; } .partner-phone { position: sticky; top: 94px; min-height: 620px; padding: 16px 14px 12px; overflow: hidden; border: 7px solid #1c2926; border-radius: 28px; background: #f2f4f1; box-shadow: 0 20px 50px rgb(18 31 28 / 0.15); } .phone-top { display: flex; align-items: center; gap: 9px; padding: 8px 5px 17px; } .phone-top > div:nth-child(2) { display: flex; min-width: 0; flex: 1; flex-direction: column; } .phone-top strong { font-size: 11px; } .phone-top span { margin-top: 3px; color: #8c9693; font-size: 8px; } .phone-top button { border: 0; color: #78837f; background: transparent; } .partner-card { padding: 22px 17px 17px; border-radius: 18px; color: white; background: radial-gradient(circle at 90% 5%, rgb(98 218 171 / 0.22), transparent 28%), linear-gradient(145deg, #18352d, #1e654d); } .micro-label { display: inline-flex; padding: 5px 8px; border-radius: 12px; color: #8ce3bd; background: rgb(255 255 255 / 0.09); font-size: 8px; font-weight: 650; } .partner-card h2 { margin: 15px 0 5px; font-size: 19px; letter-spacing: -0.035em; } .partner-card > p { margin: 0; color: #a1c0b5; font-size: 9px; } .partner-task-stats { display: grid; grid-template-columns: 1fr 1fr; margin: 19px 0; padding: 13px 0; border-block: 1px solid rgb(255 255 255 / 0.1); } .partner-task-stats div { display: flex; flex-direction: column; text-align: center; } .partner-task-stats div:first-child { border-right: 1px solid rgb(255 255 255 / 0.1); } .partner-task-stats strong { font-size: 20px; } .partner-task-stats span { margin-top: 3px; color: #94b7aa; font-size: 8px; } .quantity-picker { display: grid; grid-template-columns: 42px 1fr 42px; align-items: center; padding: 8px; border-radius: 13px; background: rgb(255 255 255 / 0.08); } .quantity-picker button { display: grid; width: 37px; height: 37px; place-items: center; border: 1px solid rgb(255 255 255 / 0.12); border-radius: 10px; color: white; background: rgb(255 255 255 / 0.06); } .quantity-picker div { display: flex; flex-direction: column; text-align: center; } .quantity-picker strong { font-size: 19px; } .quantity-picker span { color: #97b7ac; font-size: 7px; } .partner-primary { width: 100%; height: 43px; margin-top: 14px; border: 0; border-radius: 11px; color: #14553e; background: #f4fff9; font-size: 11px; font-weight: 700; } .partner-card > small { display: block; margin-top: 9px; color: #86aa9c; font-size: 7px; text-align: center; } .partner-bottom-nav { position: absolute; right: 14px; bottom: 10px; left: 14px; display: grid; grid-template-columns: repeat(3, 1fr); height: 46px; align-items: center; border-radius: 14px; background: white; box-shadow: 0 7px 20px rgb(18 31 28 / 0.08); color: #9aa39f; font-size: 8px; text-align: center; } .partner-bottom-nav .active { color: var(--green); font-weight: 700; } .partner-console { display: flex; flex-direction: column; gap: 14px; } .partner-settings, .batch-submit-card, .simple-flow { padding: 21px; border: 1px solid var(--line); border-radius: 16px; background: white; } .form-grid { display: grid; gap: 12px; } .form-grid.two { grid-template-columns: 1fr 1fr; } label { display: flex; flex-direction: column; gap: 7px; margin-bottom: 14px; } label > span { color: #66736f; font-size: 10px; font-weight: 620; } input, textarea, select { width: 100%; border: 1px solid #dce2de; border-radius: 9px; outline: none; background: white; font-size: 11px; } input, select { height: 40px; padding: 0 11px; } textarea { min-height: 110px; padding: 11px; resize: vertical; line-height: 1.7; } input:focus, textarea:focus, select:focus { border-color: #70ad95; box-shadow: 0 0 0 3px rgb(31 143 105 / 0.08); } label small { color: #9aa39f; font-size: 8px; } .partner-settings .form-grid { margin-top: 15px; } .partner-settings label { margin-bottom: 0; } .batch-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 17px; } .batch-head > div { display: flex; align-items: center; gap: 12px; } .batch-head p { margin: 5px 0 0; color: #909b97; font-size: 9px; } .step-number { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 11px; color: var(--green); background: var(--green-soft); font-size: 10px; font-weight: 750; } .pending-count { padding: 7px 10px; border-radius: 13px; color: #ad643d; background: var(--orange-soft); font-size: 9px; font-weight: 650; } .batch-submit-card textarea { min-height: 210px; border-style: dashed; background: #fbfcfa; } .batch-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 12px; } .batch-foot > div { display: flex; align-items: center; gap: 7px; color: #8c9894; font-size: 8px; } .batch-foot > div span { display: grid; width: 18px; height: 18px; place-items: center; border-radius: 50%; color: var(--green); background: var(--green-soft); } .simple-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: center; } .simple-flow div { display: grid; grid-template-columns: auto 1fr; gap: 2px 9px; align-items: center; } .simple-flow div > span { display: grid; grid-row: 1 / span 2; width: 27px; height: 27px; place-items: center; border-radius: 9px; color: var(--green); background: var(--green-soft); font-size: 9px; font-weight: 700; } .simple-flow strong { font-size: 10px; } .simple-flow small { color: #99a29f; font-size: 8px; } .simple-flow > i { width: 42px; height: 1px; margin: 0 12px; background: #dfe5e1; } .modal-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 20px; background: rgb(11 20 18 / 0.54); backdrop-filter: blur(5px); } .modal-card { width: min(620px, 100%); max-height: calc(100vh - 40px); padding: 24px; overflow-y: auto; border-radius: 17px; background: white; box-shadow: 0 24px 80px rgb(9 19 16 / 0.24); } .modal-card.compact { width: min(480px, 100%); } .modal-heading { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 20px; } .modal-heading h2 { margin: 0; font-size: 20px; letter-spacing: -0.035em; } .modal-heading > button { display: grid; width: 30px; height: 30px; place-items: center; border: 0; border-radius: 50%; color: #7c8783; background: #f1f3f1; font-size: 18px; } .source-url-row { display: grid; grid-template-columns: 1fr auto; gap: 9px; } .source-read-button { min-width: 92px; } .source-preview { margin: 2px 0 17px; padding: 14px; border: 1px solid #cfe2da; border-radius: 12px; background: #f6faf8; } .source-preview-head, .source-preview-head > div { display: flex; align-items: center; } .source-preview-head { justify-content: space-between; gap: 14px; } .source-preview-head > div { min-width: 0; gap: 9px; } .source-preview-head > div > div { display: flex; min-width: 0; flex-direction: column; } .source-check { display: grid; width: 24px; height: 24px; flex: 0 0 auto; place-items: center; border-radius: 50%; color: white; background: var(--green); font-size: 10px; } .source-preview-head strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .source-preview-head small { margin-top: 3px; color: #85928d; font-size: 8px; } .source-preview-head b { color: var(--green-deep); font-size: 15px; white-space: nowrap; } .source-columns { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 12px; } .source-columns span { padding: 4px 6px; border-radius: 5px; color: #64746e; background: white; font-size: 7px; } .source-samples { display: flex; flex-direction: column; gap: 6px; margin-top: 11px; padding-top: 10px; border-top: 1px solid #dfeae5; } .source-samples > div { display: grid; grid-template-columns: 20px 1fr; gap: 8px; align-items: center; } .source-samples span { display: grid; width: 20px; height: 20px; place-items: center; border-radius: 6px; color: #6d7d77; background: #e7f0ec; font-size: 7px; } .source-samples strong { overflow: hidden; color: #52625c; font-size: 8px; font-weight: 560; text-overflow: ellipsis; white-space: nowrap; } .modal-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 8px; } .context-strip { display: flex; flex-direction: column; gap: 4px; margin-bottom: 18px; padding: 12px 14px; border-radius: 10px; background: #f4f7f5; } .context-strip strong { font-size: 11px; } .context-strip span { color: #87928e; font-size: 9px; } .user-management-layout { display: grid; grid-template-columns: 1fr; gap: 16px; min-width: 0; } .user-create-panel, .user-list-panel { align-self: start; min-width: 0; padding: 22px; } .user-create-form { display: grid; gap: 12px; align-items: end; margin-top: 18px; } .user-create-form.with-role { grid-template-columns: minmax(190px, 1.15fr) minmax(190px, 1fr) minmax(150px, 0.72fr) 132px; } .user-create-form.without-role { grid-template-columns: minmax(190px, 1fr) minmax(190px, 1fr) 132px; } .user-create-form label { min-width: 0; margin-bottom: 0; } .user-create-form .primary-button { width: 100%; height: 40px; min-height: 40px; } .user-management-message { margin: 14px 0 0; padding: 10px 12px; border-radius: 9px; color: #27634f; background: #edf7f2; font-size: 10px; } .user-table { width: 100%; max-width: 100%; margin-top: 16px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; } .user-table-head, .user-table-row { display: grid; grid-template-columns: minmax(160px, 1.4fr) minmax(100px, 0.7fr) minmax(110px, 0.75fr) minmax(180px, auto); gap: 12px; align-items: center; padding: 14px 16px; } .user-table-head { color: #899490; background: #f5f7f5; font-size: 9px; } .user-table-row { border-top: 1px solid var(--line); font-size: 10px; } .user-table-row:hover { background: #fbfcfa; } .user-table-row > span:not(.role-pill) { color: #84908c; } .role-pill { width: fit-content; padding: 5px 8px; border-radius: 999px; color: #53625d; background: #edf1ee; font-size: 8px; font-weight: 650; } .role-pill.super_admin { color: #7d5a14; background: #fff4d9; } .role-pill.admin { color: #22614b; background: #e5f5ed; } .user-row-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; } .user-action-button { min-height: 30px; padding: 0 10px; border: 1px solid #dce5e1; border-radius: 8px; color: var(--green-deep); background: white; font-size: 9px; font-weight: 650; } .user-action-button:hover { border-color: #a8cbbd; background: #f4faf7; } .user-action-button.danger { border-color: #efd7d3; color: #a8473b; } .user-action-button.danger:hover { border-color: #dfb5ae; background: #fff7f5; } .danger-button { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; padding: 0 15px; border: 1px solid #a83f34; border-radius: 9px; color: white; background: #b94d41; font-size: 11px; font-weight: 650; } .danger-button:hover { background: #9f3e34; } .danger-button:disabled { cursor: wait; opacity: 0.62; } .eyebrow.danger { color: #b04b40; } .user-delete-warning { margin: 0; padding: 13px 14px; border: 1px solid #f0dedb; border-radius: 10px; color: #7f5049; background: #fff8f6; font-size: 10px; line-height: 1.65; } .toast { position: fixed; right: 24px; bottom: 24px; z-index: 120; display: flex; min-height: 46px; align-items: center; gap: 10px; padding: 0 16px; border: 1px solid #d4e7df; border-radius: 12px; color: #2b4a40; background: rgb(255 255 255 / 0.96); box-shadow: 0 16px 45px rgb(18 31 28 / 0.16); font-size: 11px; font-weight: 580; backdrop-filter: blur(12px); } .toast span { display: grid; width: 21px; height: 21px; place-items: center; border-radius: 50%; color: white; background: var(--green); font-size: 10px; } .working-bar { position: fixed; top: 0; right: 0; left: 232px; z-index: 200; height: 2px; background: linear-gradient(90deg, transparent, #38b483, transparent); background-size: 40% 100%; animation: working 1.2s infinite linear; } @keyframes working { from { background-position: -50% 0; } to { background-position: 150% 0; } } .loading-layout { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; } .loading-card, .loading-table { min-height: 148px; border-radius: 15px; background: linear-gradient(100deg, #e9ece9 20%, #f5f6f4 40%, #e9ece9 60%); background-size: 220% 100%; animation: shimmer 1.4s infinite linear; } .loading-table { grid-column: 1 / -1; min-height: 330px; } @keyframes shimmer { to { background-position-x: -220%; } } .empty-state, .table-empty { display: flex; align-items: center; justify-content: center; flex-direction: column; min-height: 380px; color: #87928e; text-align: center; } .table-empty.compact { min-height: 150px; font-size: 10px; } .empty-icon { display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; color: #ac603e; background: var(--orange-soft); font-weight: 800; } .empty-state h3 { margin: 15px 0 5px; color: var(--ink); } .empty-state p { margin: 0 0 18px; font-size: 11px; } .menu-button, .sidebar-scrim { display: none; } @media (max-width: 1180px) { .stat-grid { grid-template-columns: repeat(2, 1fr); } .overview-grid { grid-template-columns: 1fr; } .resource-grid { grid-template-columns: repeat(2, 1fr); } .resource-toolbar-summary { width: 100%; justify-content: flex-end; } .task-scope-grid { grid-template-columns: 1fr; } .workflow-track { overflow-x: auto; } .schedule-grid { grid-template-columns: 1fr; } .user-create-form.with-role, .user-create-form.without-role { grid-template-columns: repeat(2, minmax(0, 1fr)); } .user-create-form .primary-button { align-self: end; } } @media (max-width: 900px) { .login-page { grid-template-columns: 1fr; padding: 20px; } .login-brand { min-height: 260px; } .user-management-layout { grid-template-columns: 1fr; } .sidebar { transform: translateX(-100%); transition: transform 180ms ease; } .sidebar.open { transform: translateX(0); } .sidebar-scrim { position: fixed; inset: 0; z-index: 40; display: block; border: 0; background: rgb(8 16 14 / 0.44); } .main-area { margin-left: 0; } .menu-button { display: grid; width: 34px; height: 34px; margin-right: 10px; place-items: center; border: 1px solid #dce2de; border-radius: 9px; background: white; } .topbar { justify-content: flex-start; padding: 0 20px; } .top-actions { margin-left: auto; } .sync-state, .top-actions .ghost-button { display: none; } .content-frame { padding: 26px 20px 50px; } .partner-layout { grid-template-columns: 1fr; } .partner-phone { position: relative; top: 0; width: min(100%, 330px); margin: 0 auto; } .resource-intro { grid-template-columns: auto 1fr; } .resource-rule { display: none; } .working-bar { left: 0; } } @media (max-width: 680px) { .login-page { padding: 12px; } .login-brand { min-height: 210px; padding: 30px; } .login-brand h1 { font-size: 40px; } .login-card { padding: 28px 22px; } .user-table { overflow-x: auto; } .user-table-head, .user-table-row { min-width: 660px; } .user-create-panel, .user-list-panel { padding: 18px; } .user-create-form.with-role, .user-create-form.without-role { grid-template-columns: 1fr; } .topbar { height: 62px; } .breadcrumb span, .breadcrumb i { display: none; } .top-actions .primary-button { min-width: 38px; padding: 0 10px; font-size: 0; } .top-actions .primary-button span { font-size: 16px; } .content-frame { padding-inline: 14px; } .page-heading { align-items: flex-start; } .date-chip { display: none; } .stat-grid, .resource-grid, .recovery-legend { grid-template-columns: 1fr; } .resource-toolbar { align-items: stretch; } .resource-search, .resource-filter-search { width: 100%; flex-basis: 100%; } .resource-clear-button { padding-inline: 4px; text-align: left; } .resource-toolbar-summary { justify-content: space-between; } .collection-schedule-panel { padding: 18px; } .collection-schedule-heading { align-items: flex-start; flex-direction: column; } .schedule-save-area { width: 100%; justify-content: space-between; } .schedule-save-area .primary-button { min-width: 138px; } .schedule-days { grid-template-columns: repeat(7, minmax(76px, 1fr)); overflow-x: auto; } .schedule-mobile-hint { display: block; margin-top: -4px; color: #97a19d; font-size: 8px; text-align: center; } .stat-card { min-height: 130px; } .focus-callout { grid-template-columns: auto 1fr; } .focus-callout .primary-button { grid-column: 1 / -1; width: 100%; } .workflow-track { display: flex; gap: 16px; } .workflow-track > i { width: 24px; flex: 0 0 auto; } .task-row { grid-template-columns: auto 1fr auto; padding: 12px 0; } .task-number, .task-date, .task-row > .status-pill { display: none; } .task-hero { align-items: flex-start; flex-direction: column; gap: 22px; } .inline-summary { align-items: flex-start; flex-wrap: wrap; } .summary-note { width: 100%; margin-left: 0; } .resource-intro { grid-template-columns: 1fr; } .section-intro { align-items: flex-start; flex-direction: column; gap: 10px; } .section-intro > p { text-align: left; } .task-detail-header { grid-template-columns: auto 1fr auto; } .task-detail-header .detail-back { grid-column: 1 / -1; justify-self: start; } .source-url-row { grid-template-columns: 1fr; } .source-read-button { width: 100%; } .resource-figure { border-right: 0; } .form-grid.two { grid-template-columns: 1fr; } .batch-head, .batch-foot { align-items: flex-start; flex-direction: column; } .batch-foot .primary-button { width: 100%; } .simple-flow { grid-template-columns: 1fr; gap: 14px; } .simple-flow > i { width: 1px; height: 18px; margin-left: 13px; } .modal-card { padding: 20px 17px; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } }