:root{--paper: #f4f1ea;--paper-2: #fbfaf6;--surface: #ffffff;--ink: #20201d;--ink-2: #4b4943;--muted: #918c81;--line: #e3ded3;--line-2: #d6d0c2;--accent: #24405f;--accent-ink: #182e47;--accent-soft: #e9edf4;--brand: var(--accent);--brand-soft: var(--accent-soft);--brand-line: #dbe2ee;--seal: #a63a2c;--seal-soft: #f7eae7;--seal-line: #edd8d3;--ok: #1e7148;--ok-soft: #e6f1ea;--ok-line: #cfe3d7;--warn: #8a6a1c;--warn-soft: #f6efdc;--warn-line: #eadfbe;--danger: #a63a2c;--danger-soft: #f7eae7;--danger-line: #edd8d3;--info: #24405f;--info-soft: #e9edf4;--info-line: #dbe2ee;--on-accent: #ffffff;--side-bg: #fbfaf6;--side-line: var(--line);--bg: var(--paper);--card: var(--surface);--text: var(--ink);--border: var(--line);--serif: "Songti SC", "STSong", "Source Han Serif SC", "Noto Serif SC", "SimSun", Georgia, "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 2px rgba(32, 32, 29, .04);--shadow-lg: 0 24px 60px -20px rgba(32, 32, 29, .35);--dot: rgba(32, 32, 29, .028)}html[data-theme=dark]{--paper: #161613;--paper-2: #1c1c17;--surface: #22221b;--ink: #e8e5da;--ink-2: #c2bdae;--muted: #8b8678;--line: #32312a;--line-2: #403e33;--accent: #93aecf;--accent-ink: #b3c6dd;--accent-soft: rgba(147, 174, 207, .13);--brand-line: rgba(147, 174, 207, .35);--seal: #cf6f5b;--seal-soft: rgba(166, 58, 44, .17);--seal-line: rgba(207, 111, 91, .4);--ok: #63b08a;--ok-soft: rgba(30, 113, 72, .2);--ok-line: rgba(99, 176, 138, .4);--warn: #c9a45a;--warn-soft: rgba(138, 106, 28, .18);--warn-line: rgba(201, 164, 90, .4);--danger: #d47a67;--danger-soft: rgba(166, 58, 44, .2);--danger-line: rgba(212, 122, 103, .45);--info: #93aecf;--info-soft: rgba(147, 174, 207, .13);--info-line: rgba(147, 174, 207, .35);--on-accent: #141d2b;--side-bg: #1c1c17;--side-line: var(--line);--shadow: 0 1px 2px rgba(0, 0, 0, .3);--shadow-lg: 0 24px 60px -20px rgba(0, 0, 0, .6);--dot: rgba(255, 255, 255, .022)}*{box-sizing:border-box}body{margin:0;font-family:var(--sans);color:var(--ink);font-size:14px;line-height:1.65;background-color:var(--paper);background-image:radial-gradient(var(--dot) 1px,transparent 0);background-size:4px 4px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--serif)}b,strong{font-weight:700}::selection{background:var(--accent);color:#fff}a{color:var(--accent);text-decoration:none}a.btn{text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:238px;flex-shrink:0;background:var(--side-bg);border-right:1px solid var(--side-line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:22px 14px 16px}.sidebar .logo{display:flex;align-items:center;gap:11px;padding:2px 8px 18px;border-bottom:1px solid var(--line);margin-bottom:16px}.sidebar .logo .dot{width:36px;height:36px;border-radius:6px;flex-shrink:0;background:var(--seal);color:#fff;display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px #ffffff40}.logo-name{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:.1em;color:var(--ink);line-height:1.2}.logo-sub{font-size:10px;color:var(--muted);letter-spacing:.18em;margin-top:3px}.nav-group{margin-bottom:16px}.nav-group .label{font-size:10px;font-weight:600;letter-spacing:.22em;padding:0 10px 8px;color:var(--muted)}.nav-item{position:relative;display:flex;align-items:center;gap:10px;padding:9px 11px;margin-bottom:3px;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--ink-2);text-decoration:none;font-size:13.5px;letter-spacing:.03em;font-family:var(--sans);cursor:pointer;transition:background .15s,color .15s}.nav-item:hover{background:var(--paper);color:var(--ink)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:14px;background:var(--accent);border-radius:1px}.pw-warn{display:flex;align-items:center;gap:9px;width:100%;text-align:left;cursor:pointer;margin-bottom:14px;padding:9px 11px;border-radius:var(--radius-sm);font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.02em;color:var(--warn);background:var(--warn-soft);border:1px solid var(--warn-line)}.sidebar .footer{margin-top:auto;padding:14px 8px 2px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}.sidebar .avatar{width:34px;height:34px;border-radius:var(--radius-sm);flex-shrink:0;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:15px}.sidebar .footer .who{flex:1;min-width:0}.sidebar .footer .who .name{color:var(--ink);font-size:13px;font-weight:600}.sidebar .footer .who .hint{font-size:11px;color:var(--muted);margin-top:2px}.sidebar .footer .who .hint a{color:inherit;cursor:pointer}.sidebar .footer .who .hint a:hover{color:var(--accent)}.main{flex:1;padding:30px 36px 56px;max-width:1280px;min-width:0}.page-head{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--line)}.page-head:after{content:"";position:absolute;left:0;bottom:-1px;width:44px;height:2px;background:var(--accent)}.page-head h1{margin:0;font-size:22px;font-weight:700;letter-spacing:.06em;display:flex;align-items:center;gap:10px;line-height:1.3}.page-head .sub{color:var(--muted);margin-top:6px;font-size:12.5px;letter-spacing:.04em}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.page-head .actions select,.page-head .actions input{width:auto}.title-ico{width:34px;height:34px;border-radius:var(--radius-sm);flex-shrink:0;background:var(--accent-soft);border:1px solid var(--brand-line);color:var(--accent);display:grid;place-items:center}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap}.card-head h2{margin:0;font-size:15px;font-weight:700;letter-spacing:.06em;position:relative;padding-left:12px}.card-head h2:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:14px;background:var(--accent);border-radius:1px}.card-head .hint{color:var(--muted);font-size:12px}.hero{position:relative;overflow:hidden;margin-bottom:16px;background:#182e47;color:#eef1f6;border:1px solid #0f2337;border-radius:var(--radius);padding:22px 22px 20px}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.03) 0 1px,transparent 1px 7px)}.hero:after{content:"驿";position:absolute;right:-6px;bottom:-40px;font-family:var(--serif);font-size:150px;line-height:1;color:#ffffff0b;pointer-events:none;-webkit-user-select:none;user-select:none}.hero-kicker{position:relative;z-index:1;display:inline-block;font-size:10.5px;letter-spacing:.28em;color:#9fb0c8;margin-bottom:10px}.hero h2{position:relative;z-index:1;font-size:20px;font-weight:700;letter-spacing:.05em;margin-bottom:8px;color:#fff}.hero h2 em{font-style:normal;font-family:var(--mono);font-size:25px;color:#fff;padding-bottom:2px;border-bottom:2px solid #b45744}.hero p{position:relative;z-index:1;font-size:12.5px;color:#b9c6d8;letter-spacing:.03em;margin:0}.hero p b{color:#fff;font-weight:700}.hero .stats{position:relative;z-index:1;display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}.stat-box{flex:1;min-width:108px;text-align:center;padding:12px 6px;background:#ffffff0d;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-sm)}.stat-box .num{font-family:var(--mono);font-size:21px;font-weight:600;line-height:1.15;color:#fff;font-variant-numeric:tabular-nums}.stat-box .lbl{font-size:10.5px;color:#9fb0c8;margin-top:3px;letter-spacing:.12em}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.stat .label{color:var(--muted);font-size:11px;letter-spacing:.1em;margin-bottom:6px}.stat .value{font-family:var(--mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}.stat .value.ok{color:var(--ok)}.stat .value.warn{color:var(--warn)}.stat .value.danger{color:var(--danger)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:3px;font-size:11px;font-weight:600;letter-spacing:.05em;border:1px solid var(--line);white-space:nowrap}.badge .badge-dot{width:5px;height:5px;border-radius:1px;background:currentColor}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line)}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-line)}.badge.info{background:var(--info-soft);color:var(--info);border-color:var(--info-line)}.badge.muted{background:var(--paper);color:var(--muted);border-color:var(--line)}.cap-chip{display:inline-block;font-size:10.5px;font-weight:600;letter-spacing:.05em;color:var(--ink-2);background:var(--paper);border:1px solid var(--line);padding:2px 9px;border-radius:3px}.cap-chip.off{color:var(--muted);background:transparent;border-style:dashed}.plat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.plat-link{display:block;color:inherit}.plat-card{height:100%;margin-bottom:0;transition:transform .15s,border-color .18s,box-shadow .18s}.plat-link:hover .plat-card{transform:translateY(-2px);border-color:var(--line-2);box-shadow:0 6px 18px -8px #20201d2e}html[data-theme=dark] .plat-link:hover .plat-card{box-shadow:0 6px 18px -8px #00000080}.p-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.p-ico{width:40px;height:40px;border-radius:var(--radius-sm);flex-shrink:0;background:var(--accent-soft);border:1px solid var(--brand-line);color:var(--accent);display:grid;place-items:center}.p-name{font-family:var(--serif);font-size:15px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.p-id{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px}.p-arrow{color:var(--line-2);font-family:var(--serif);font-size:18px;transition:color .15s}.plat-link:hover .p-arrow{color:var(--accent)}.p-desc{color:var(--muted);font-size:12.5px;line-height:1.6;margin:0 0 12px;min-height:40px}.p-count{display:flex;gap:10px;align-items:baseline;margin-bottom:10px}.p-count .n{font-family:var(--mono);font-size:24px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.p-count .l{font-size:11px;color:var(--muted);letter-spacing:.08em}.p-badges{display:flex;gap:6px;flex-wrap:wrap}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.08em;padding:8px 10px;border-bottom:1px solid var(--line-2);white-space:nowrap}td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:13.5px}tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--paper-2)}td.mono,.mono{font-family:var(--mono);font-size:12px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.05em;cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s,color .15s,transform .12s}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover:not(:disabled){border-color:var(--accent-ink);background:var(--accent-ink);color:var(--on-accent)}.btn.danger{color:var(--danger)}.btn.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-soft)}.btn.sm{padding:4px 10px;font-size:12px;border-radius:5px}.btn.link{border:none;background:none;color:var(--accent);font-weight:500;text-decoration:underline;text-underline-offset:3px}.btn.link:hover:not(:disabled){color:var(--accent-ink)}.btn svg{flex-shrink:0}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px;letter-spacing:.03em}.field label .req{color:var(--danger);margin-left:2px}input,select,textarea{width:100%;padding:9px 12px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--paper-2);color:var(--ink);font-size:13px;font-family:var(--sans);outline:none;transition:border-color .15s,background .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);background:var(--surface)}input::placeholder,textarea::placeholder{color:#b3ada1}.form-row{display:flex;gap:12px}.form-row .field{flex:1}.alert{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:13px;line-height:1.65;background:var(--paper-2);border:1px solid var(--line);border-left:3px solid var(--line-2);color:var(--ink-2)}.alert.ok{border-left-color:var(--ok);color:var(--ok)}.alert.warn{border-left-color:var(--warn);color:var(--warn)}.alert.error{border-left-color:var(--danger);color:var(--danger)}.alert.info{border-left-color:var(--accent);color:var(--accent)}.alert a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px}.alert .close{margin-left:auto;cursor:pointer;opacity:.6;background:none;border:none;color:inherit;font-size:15px;line-height:1;padding:0 2px}.alert .close:hover{opacity:1}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#201e197a;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:grid;place-items:center;padding:24px;animation:fadeIn .15s ease}.modal{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:480px;padding:24px 22px;max-height:90vh;overflow-y:auto;animation:popIn .2s ease}.modal h3{margin:0 0 16px;font-size:16px;font-weight:700;letter-spacing:.06em;position:relative;padding-left:13px}.modal h3:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:15px;background:var(--seal);border-radius:1px}.modal .modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}@keyframes fadeIn{0%{opacity:0}}@keyframes popIn{0%{transform:scale(.97);opacity:0}}.kv{display:grid;grid-template-columns:140px 1fr;gap:9px 14px;font-size:13px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-all}.steps{display:flex;gap:8px;margin-bottom:18px}.step{flex:1;text-align:center;padding:8px 6px;border-radius:var(--radius-sm);background:var(--paper-2);border:1px solid var(--line);color:var(--muted);font-size:12.5px;letter-spacing:.05em}.step.active{background:var(--accent-soft);border-color:var(--brand-line);color:var(--accent);font-weight:700}.step.done{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}.spinner{width:13px;height:13px;border:2px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;color:var(--muted);padding:44px 0;font-size:13px;letter-spacing:.06em}.toolbar{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center}.toolbar input,.toolbar select{width:auto}.spacer{flex:1}.rel-time{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.icon-link{display:inline-flex;align-items:center;gap:4px}.m-topbar{display:none;position:sticky;top:0;z-index:60;align-items:center;gap:12px;padding:max(12px,env(safe-area-inset-top)) 16px 12px;background:var(--paper-2);border-bottom:1px solid var(--line)}.m-topbar:after{content:"";position:absolute;left:16px;bottom:-1px;width:44px;height:2px;background:var(--accent)}.m-menu-btn{width:36px;height:36px;flex-shrink:0;cursor:pointer;display:grid;place-items:center;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm)}.m-menu-btn:active{background:var(--paper)}.m-topbar .m-title{flex:1;min-width:0;font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:.08em;color:var(--ink)}.m-topbar .m-ava{width:30px;height:30px;flex-shrink:0;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:13px}.m-mask{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#201e1973}.app.m-open .m-mask{display:block}@media (max-width: 860px){.app{display:block;min-height:100vh;min-height:100dvh}.m-topbar{display:flex}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:80;width:min(78vw,300px);height:auto;padding:max(14px,env(safe-area-inset-top)) 12px 14px;box-shadow:var(--shadow-lg);transform:translate(-102%);transition:transform .24s ease;overflow-y:auto}.app.m-open .sidebar{transform:translate(0)}.main{padding:18px 14px 48px;max-width:none}.page-head{margin-bottom:16px;padding-bottom:12px}.page-head h1{font-size:19px}.page-head .sub{font-size:12px}.page-head .actions{width:100%}.page-head .actions .btn{flex:1;justify-content:center}.page-head .actions select,.page-head .actions input{flex:1;width:auto}.card{padding:15px;border-radius:var(--radius-sm)}.hero{padding:17px 16px 16px}.hero h2{font-size:17px}.hero h2 em{font-size:21px}.hero:after{font-size:110px;bottom:-32px}.hero .stats{gap:7px}.stat-box{min-width:calc(50% - 4px);padding:10px 4px}.stat-box .num{font-size:18px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -15px;padding:0 15px}.table-scroll table{min-width:640px}td{font-size:13px}.toolbar{gap:8px}.toolbar input,.toolbar select{flex:1 1 40%}.toolbar .spacer{display:none}.btn{padding:9px 14px}.btn.sm{padding:6px 10px}.form-row{flex-direction:column;gap:0}input,select,textarea{font-size:16px}.modal{padding:18px 16px}.modal-mask{padding:14px;align-items:flex-end}.modal{max-width:none;border-radius:var(--radius) var(--radius) 0 0;margin-bottom:env(safe-area-inset-bottom)}.kv{grid-template-columns:104px 1fr}.plat-grid{grid-template-columns:1fr;gap:12px}.p-count .n{font-size:21px}.steps{flex-direction:column;gap:6px}.step{display:flex;align-items:center;justify-content:center;padding:7px 6px}}@media (min-width: 861px) and (max-width: 1080px){.sidebar{width:200px}.main{padding:24px 20px 44px}}.nav-item.nav-sub{padding-left:26px;font-size:13px}.page-enter{animation:pageFadeSlide .16s ease-out}@keyframes pageFadeSlide{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.page-enter{animation:none}}.chat-box{background:var(--bg);border-radius:12px;padding:16px;max-height:480px;min-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.chat-msg{display:flex;flex-direction:column;gap:4px}.chat-msg.chat-user{align-items:flex-end}.chat-role{font-size:11px;color:var(--muted)}.chat-bubble{max-width:78%;padding:10px 14px;border-radius:14px;font-size:13.5px;line-height:1.6;background:var(--card);box-shadow:var(--shadow)}.chat-user .chat-bubble{background:var(--brand);color:#fff}.chat-bubble.chat-err{background:var(--danger-soft);color:var(--danger)}.chat-reasoning{font-size:12px;color:var(--muted);border-left:2px solid var(--border);padding-left:8px;margin-bottom:6px;white-space:pre-wrap}
