:root { --paper: #f7f3ea; --card: #fdfbf6; --ink: #5b4a36; --muted: #9a8d7d; --line: #e9e1d6; --shadow: 0 18px 48px rgba(91, 74, 54, 0.12); --accent: #b98a59; --accent-weak: rgba(185, 138, 89, 0.18); --green: #4c9f70; --peek-clip: inset(42% 0 0 0 round 0 0 18px 18px); } * { box-sizing: border-box; } body { margin: 0; padding: 20px; background: radial-gradient(circle at 20% 18%, rgba(185, 138, 89, 0.08), transparent 28%), radial-gradient(circle at 86% 12%, rgba(76, 159, 112, 0.08), transparent 30%), linear-gradient(180deg, #faf7f0, #f5f1e7); font-family: "Inter", "PingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); } .page { max-width: 1080px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; } .panel { background: var(--card); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); padding: 14px 16px; } .controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: flex-start; } button { border: 1px solid var(--line); background: #fff; color: var(--ink); border-radius: 12px; padding: 8px 12px; font-size: 13px; cursor: pointer; transition: all 150ms ease; box-shadow: 0 6px 18px rgba(91, 74, 54, 0.08); } button.primary { background: linear-gradient(135deg, #cfa976, #b98957); border-color: #c49556; color: #fffdf8; box-shadow: 0 8px 22px rgba(185, 138, 89, 0.28); } button:active { transform: translateY(1px); } button:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; } .hint { color: var(--muted); font-size: 13px; margin-top: 6px; line-height: 1.4; } .stack-wrapper { position: relative; } .stack-shell { position: relative; border: 1px solid var(--line); border-radius: 18px; background: var(--card); box-shadow: var(--shadow); overflow: hidden; transition: height 280ms cubic-bezier(0.25, 0.9, 0.3, 1), box-shadow 180ms ease; min-height: 140px; } .stack-shell.empty { display: grid; place-items: center; } .stack-shell:not(.empty) .empty-hint { display: none; } .stack-inner { width: 100%; } .empty-hint { color: var(--muted); font-size: 14px; padding: 18px 0; text-align: center; } .row { background: transparent; } .block-row { padding: 16px 22px; display: flex; flex-direction: column; gap: 8px; border-bottom: 1px solid var(--line); background: linear-gradient(180deg, rgba(255, 255, 255, 0.65), rgba(255, 255, 255, 0.48)); } .block-row:last-child { border-bottom: none; } .row-main { display: grid; grid-template-columns: 22px 40px 1fr auto; align-items: center; gap: 12px; cursor: pointer; } .arrow { width: 18px; height: 18px; display: grid; place-items: center; color: var(--muted); transition: transform 240ms ease; font-size: 18px; } .arrow.open { transform: rotate(90deg); color: var(--accent); } .row-icon { width: 36px; height: 36px; border-radius: 12px; background: #f2ede4; display: grid; place-items: center; color: var(--accent); font-size: 18px; box-shadow: inset 0 0 0 1px rgba(91, 74, 54, 0.06); } .row-text { display: flex; flex-direction: column; gap: 4px; } .row-title { font-weight: 650; color: var(--ink); } .row-sub { font-size: 13px; color: var(--muted); } .pill { padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; border: 1px solid var(--accent-weak); background: rgba(185, 138, 89, 0.12); color: var(--accent); white-space: nowrap; } .pill.green { border-color: rgba(76, 159, 112, 0.16); background: rgba(76, 159, 112, 0.12); color: var(--green); } .row-detail { padding-left: 64px; padding-right: 4px; color: var(--ink); line-height: 1.6; font-size: 14px; } .row-detail-inner { background: #fffdfa; border: 1px dashed var(--line); border-radius: 12px; padding: 10px 12px; } .progress { height: 3px; border-radius: 999px; background: rgba(185, 138, 89, 0.16); overflow: hidden; position: relative; margin-left: 64px; margin-right: 10px; } .progress::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(185, 138, 89, 0.05), rgba(185, 138, 89, 0.8), rgba(185, 138, 89, 0.05)); animation: shimmer 1.3s linear infinite; } @keyframes shimmer { from { transform: translateX(-40%); } to { transform: translateX(40%); } } .more-row { background: linear-gradient(180deg, #f0ebe1, #e6dece); color: #4a3f30; padding: 14px 18px; border-bottom: 1px solid rgba(74, 63, 48, 0.08); display: grid; grid-template-columns: 32px 1fr auto; align-items: center; gap: 10px; cursor: pointer; } .more-dot { width: 32px; height: 32px; border-radius: 12px; background: rgba(74, 63, 48, 0.12); display: grid; place-items: center; font-weight: 800; letter-spacing: 2px; } .more-tip { font-size: 13px; color: rgba(74, 63, 48, 0.75); } .more-btn { border: 1px solid rgba(74, 63, 48, 0.2); background: rgba(255, 255, 255, 0.9); color: #4a3f30; border-radius: 10px; padding: 6px 10px; font-size: 12px; cursor: pointer; transition: all 120ms ease; } .more-btn:hover { background: #fff; box-shadow: 0 6px 14px rgba(74, 63, 48, 0.12); } .flow-enter { max-height: 0; opacity: 0; transform: translateY(18px); } .flow-enter-active { max-height: 420px; opacity: 1; transform: translateY(0); transition: max-height 260ms cubic-bezier(0.25, 0.9, 0.3, 1), opacity 220ms ease, transform 260ms ease; } .peek { clip-path: var(--peek-clip); transform: translateY(18px); opacity: 0.65; transition: clip-path 260ms ease, transform 260ms ease, opacity 220ms ease; } .block-row, .more-row { transition: transform 220ms ease, opacity 220ms ease; } .footer-note { color: var(--muted); font-size: 12px; text-align: right; margin-top: 6px; }