:root { --ink: #12233d; --ink-soft: #3a4a63; --paper: #f3eee4; --card: #fffdf8; --line: #d8cfbf; --teal: #1c6f63; --teal-2: #2a9a86; --amber: #c47b17; --rose: #b44a4a; --good: #2f7d4a; --shadow: 0 18px 40px rgba(18, 35, 61, 0.08); --font: "Avenir Next", "Segoe UI", "PingFang SC", "Hiragino Sans GB", sans-serif; } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { font-family: var(--font); color: var(--ink); background: radial-gradient(1200px 500px at -10% -20%, #e7f3ee 0%, transparent 50%), radial-gradient(900px 400px at 110% 0%, #f8e9d2 0%, transparent 46%), var(--paper); min-height: 100vh; } a { color: var(--teal); } .topbar { display: flex; align-items: center; justify-content: space-between; padding: 16px 28px; border-bottom: 1px solid var(--line); background: rgba(255,253,248,0.86); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 10; } .brand { display: flex; gap: 12px; align-items: center; text-decoration: none; color: var(--ink); } .mark { width: 36px; height: 36px; border-radius: 50%; border: 2px solid var(--ink); display: grid; place-items: center; font-size: 11px; letter-spacing: 0.08em; } .brand b { display: block; font-size: 16px; } .brand span { display: block; font-size: 12px; color: var(--ink-soft); font-weight: 400; } .topbar form { margin: 0; } .ghost, .btn, .primary { border: 1px solid var(--ink); background: transparent; color: var(--ink); padding: 8px 14px; border-radius: 999px; cursor: pointer; font: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 8px; } .primary { background: var(--ink); color: var(--paper); } .btn.teal { background: var(--teal); border-color: var(--teal); color: white; } .wrap { width: min(1180px, calc(100% - 40px)); margin: 28px auto 64px; } .hero, .card, .login-card { background: var(--card); border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow); } .hero { padding: 28px; display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; } .hero h1 { margin: 0 0 8px; font-size: 30px; letter-spacing: 0.02em; } .hero p { margin: 0; color: var(--ink-soft); line-height: 1.7; } .drop { border: 1.5px dashed var(--teal); border-radius: 18px; padding: 22px; background: #f4fbf8; } .drop h3 { margin: 0 0 8px; } .muted { color: var(--ink-soft); font-size: 13px; line-height: 1.6; } .list { margin-top: 22px; display: grid; gap: 10px; } .item { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; display: flex; justify-content: space-between; align-items: center; } .login-wrap { min-height: 100vh; display: grid; place-items: center; padding: 24px; } .login-card { width: min(440px, 100%); padding: 32px; } .login-card h1 { margin: 8px 0 4px; } label { display: block; font-size: 13px; margin: 14px 0 6px; color: var(--ink-soft); } input[type=text], input[type=password], input[type=number], select { width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); font: inherit; background: white; } .err { color: var(--rose); font-size: 13px; margin-top: 8px; } .layout { display: grid; grid-template-columns: 250px 1fr; gap: 22px; } .rail { background: var(--ink); color: #e8e2d6; border-radius: 22px; padding: 20px 16px; height: fit-content; position: sticky; top: 88px; } .rail h2 { font-size: 14px; margin: 0 0 16px; font-weight: 600; } .step { display: grid; grid-template-columns: 28px 1fr; gap: 10px; padding: 10px 8px; border-radius: 12px; color: #c9c1b3; text-decoration: none; } .step b { display: block; color: inherit; font-size: 14px; } .step span { display: block; font-size: 12px; opacity: 0.8; } .dot { width: 28px; height: 28px; border-radius: 50%; border: 1px solid #7d8796; display: grid; place-items: center; font-size: 12px; } .step.on { background: rgba(255,255,255,0.06); color: white; } .step.on .dot { background: var(--teal-2); border-color: var(--teal-2); color: white; } .panel { padding: 24px 26px 30px; } .panel h1 { margin: 0 0 6px; font-size: 26px; } .kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 18px 0; } .kpi { border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; background: #fbfaf6; } .kpi em { display: block; font-style: normal; font-size: 12px; color: var(--ink-soft); } .kpi strong { font-size: 22px; } .table { width: 100%; border-collapse: collapse; font-size: 14px; } .table th { text-align: left; font-size: 12px; color: var(--ink-soft); font-weight: 600; padding: 8px 6px; border-bottom: 1px solid var(--line); } .table td { padding: 9px 6px; border-bottom: 1px solid #eee6d8; } .chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; } .chip { background: #efe8da; border-radius: 999px; padding: 4px 10px; font-size: 12px; } .warn { background: #fff4e6; border: 1px solid #f1d2a3; color: #8a5a12; padding: 10px 12px; border-radius: 12px; margin: 8px 0; font-size: 13px; } .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .check { display: flex; gap: 8px; align-items: flex-start; margin: 8px 0; font-size: 14px; } .check input { margin-top: 3px; } .actions { display: flex; gap: 10px; margin-top: 22px; } .explain { background: linear-gradient(180deg, #f7fbf9, #fff); border: 1px solid #cfe3dc; border-radius: 16px; padding: 16px 18px; line-height: 1.7; } .route { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0 4px; } .route i { font-style: normal; background: var(--ink); color: var(--paper); border-radius: 999px; padding: 6px 10px; font-size: 12px; } .route i.alt { background: var(--teal); } .bar-wrap { height: 10px; background: #efe8da; border-radius: 99px; overflow: hidden; } .bar { height: 100%; background: var(--teal); } .delta-up { color: var(--good); } .delta-down { color: var(--rose); } .tag { font-size: 11px; padding: 2px 7px; border-radius: 99px; background: #efe8da; } .tag.mid { background: #f8e3bf; color: #8a5a12; } .tag.high { background: #d8f0e5; color: #1c6f63; } .drawer-bg { position: fixed; inset: 0; background: rgba(18,35,61,0.35); display: none; align-items: stretch; justify-content: flex-end; z-index: 20; } .drawer-bg.show { display: flex; } .drawer { width: min(560px, 100%); background: var(--card); padding: 22px; overflow: auto; box-shadow: -20px 0 40px rgba(18,35,61,0.15); } .spark { width: 100%; height: 220px; } .tiny { font-size: 12px; color: var(--ink-soft); } .clickable { cursor: pointer; } .clickable:hover { background: #f7f3ea; } @media (max-width: 900px) { .hero, .layout, .grid-2, .kpis { grid-template-columns: 1fr; } .rail { position: static; } }