.app-header[data-v-a3c3f8d3]{position:sticky;top:0;z-index:99;min-height:var(--header-h);padding:10px var(--page-pad-x);display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(180px,1fr);align-items:center;gap:16px;background:#ffffffe0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.title-block[data-v-a3c3f8d3]{min-width:0;display:flex;flex-direction:column;gap:3px}.page-title[data-v-a3c3f8d3]{color:var(--text);font-size:var(--text-lg);font-weight:800;line-height:1.25}.page-subtitle[data-v-a3c3f8d3]{max-width:520px;color:var(--text3);font-size:var(--text-xs);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-nav[data-v-a3c3f8d3]{justify-self:center;display:inline-flex;align-items:center;gap:4px;padding:4px;background:var(--bg-alt);border:1px solid var(--border-light);border-radius:var(--radius)}.nav-tab[data-v-a3c3f8d3]{min-width:58px;height:34px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text2);font-size:var(--text-sm);font-weight:700;text-decoration:none;transition:color var(--transition),background var(--transition),box-shadow var(--transition)}.nav-tab[data-v-a3c3f8d3]:hover{color:var(--primary-dark)}.nav-tab.active[data-v-a3c3f8d3]{color:var(--primary-dark);background:var(--card-solid);box-shadow:var(--shadow)}.header-right[data-v-a3c3f8d3]{min-width:0;justify-self:end;display:flex;align-items:center;gap:10px}.auth-badge[data-v-a3c3f8d3]{padding:5px 9px;border-radius:6px;background:var(--success-light);color:var(--success);font-size:var(--text-xs);font-weight:800;white-space:nowrap}.badge-teacher[data-v-a3c3f8d3]{background:var(--info-light);color:var(--info)}.greeting[data-v-a3c3f8d3]{min-width:0;color:var(--text2);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-avatar[data-v-a3c3f8d3]{width:32px;height:32px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #fff}@media(max-width:1120px){.app-header[data-v-a3c3f8d3]{grid-template-columns:1fr auto}.header-nav[data-v-a3c3f8d3]{grid-row:2;grid-column:1 / -1;justify-self:start}}@media(max-width:768px){.app-header[data-v-a3c3f8d3]{gap:10px}.page-subtitle[data-v-a3c3f8d3],.greeting[data-v-a3c3f8d3],.auth-badge[data-v-a3c3f8d3]{display:none}.header-avatar[data-v-a3c3f8d3]{width:30px;height:30px}.header-nav[data-v-a3c3f8d3]{width:100%;overflow-x:auto}.nav-tab[data-v-a3c3f8d3]{flex:1 0 72px}}.loading-screen,.login-screen{min-height:100vh;min-height:100dvh}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--bg);color:var(--text2)}.loading-mark{width:34px;height:34px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 18% 18%,rgba(251,188,4,.26),transparent 26%),linear-gradient(135deg,#eaf2ff,#f8fbff 48%,#edf3fb)}.login-card{width:min(440px,100%);padding:34px;background:var(--card);border:1px solid rgba(255,255,255,.72);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.login-kicker{display:inline-flex;margin-bottom:14px;padding:5px 9px;border:1px solid var(--border);border-radius:6px;color:var(--primary-dark);background:var(--primary-light);font-size:var(--text-xs);font-weight:800;text-transform:uppercase}.login-card h1{margin-bottom:10px;color:var(--text);font-size:var(--text-2xl);font-weight:800}.login-desc{color:var(--text2);line-height:1.7;margin-bottom:24px}.login-btn{width:100%;height:42px;border-radius:var(--radius-sm);background:var(--primary);color:#fff;font-size:var(--text-base);font-weight:800;transition:background var(--transition),transform var(--transition),box-shadow var(--transition)}.login-btn:hover{background:var(--primary-hover);box-shadow:0 10px 24px #4285f447;transform:translateY(-1px)}.login-error{margin-top:12px;color:var(--danger);font-size:var(--text-sm)}.login-hint{margin-top:14px;color:var(--text3);font-size:var(--text-xs);line-height:1.6}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.content{flex:1;width:100%;padding:var(--page-pad-y) var(--page-pad-x);background:transparent}.content>*{width:min(100%,var(--page-max));margin-inline:auto}.route-loading{display:grid;place-items:center;min-height:calc(100vh - var(--header-h) - 80px);padding:48px 20px;color:var(--text2);text-align:center}.route-loading-mark{width:38px;height:38px;margin-bottom:16px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.route-loading h2{margin-bottom:8px;color:var(--text);font-size:var(--text-xl)}.route-loading p{color:var(--text3)}@media(min-width:1440px){.content{padding-top:28px}}.ledger[data-v-423f86be]{background:#fff;border:1px solid #dce6ef;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px #193b6110}.ledger-heading[data-v-423f86be]{display:flex;justify-content:space-between;gap:24px;padding:26px 30px;background:linear-gradient(118deg,#13273d,#1d3a51 72%,#245469);color:#fff}.ledger-kicker[data-v-423f86be],.detail-label[data-v-423f86be],.report-label[data-v-423f86be]{font:700 11px/1.2 var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.ledger-kicker[data-v-423f86be]{color:#8fe4d5;display:flex;align-items:center;gap:9px}.pulse[data-v-423f86be]{width:8px;height:8px;background:#57dec4;border-radius:50%;box-shadow:0 0 0 5px #57dec42c}.ledger-heading h2[data-v-423f86be]{font-size:23px;letter-spacing:-.02em;margin:8px 0 5px}.ledger-heading p[data-v-423f86be]:not(.ledger-kicker){color:#bdd0dd;font-size:13px}.ledger-controls[data-v-423f86be]{display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:14px}.fetch-time[data-v-423f86be]{color:#aac1ce;font-size:12px}.ledger-controls button[data-v-423f86be]{background:#d5f3eb;color:#143a3b;border-radius:7px;padding:9px 15px;font-size:12px;font-weight:700}.ledger-controls button[data-v-423f86be]:disabled{opacity:.6}.ledger-stats[data-v-423f86be]{display:flex;gap:35px;align-items:center;padding:16px 30px;border-bottom:1px solid #e5edf3;background:#f6fafb}.ledger-stats div[data-v-423f86be]{display:flex;align-items:baseline;gap:8px}.ledger-stats strong[data-v-423f86be]{font:700 23px var(--font-mono);color:#183950}.ledger-stats span[data-v-423f86be]{color:#637a89;font-size:12px}.ledger-filters[data-v-423f86be]{display:flex;align-items:center;gap:8px;padding:11px 30px;border-bottom:1px solid #e5edf3;background:#fff;color:#78909d;font-size:11px}.ledger-filters button[data-v-423f86be]{border:1px solid #d8e4e9;border-radius:999px;background:#fff;color:#587180;padding:5px 12px;font-size:11px}.ledger-filters button.active[data-v-423f86be]{background:#183c51;border-color:#183c51;color:#fff}.filtered-empty[data-v-423f86be]{grid-column:1/-1;min-height:280px}.member-filters[data-v-423f86be]{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 30px;border-bottom:1px solid #e5edf3;background:#f7fbfc}.member-filter-label[data-v-423f86be]{font:700 11px var(--font-mono);letter-spacing:.08em;color:#4b8290;margin-right:4px}.member-filters button[data-v-423f86be]{border:0;border-radius:6px;background:#e5eff2;color:#426473;padding:5px 9px;font-size:11px}.member-filters button.active[data-v-423f86be]{background:#1b7775;color:#fff}.member-filters b[data-v-423f86be]{font:700 10px var(--font-mono);opacity:.8;margin-left:3px}.stale-warning[data-v-423f86be]{margin-left:auto;font-size:12px;color:#b05c20}.ledger-body[data-v-423f86be]{display:grid;grid-template-columns:minmax(270px,32%) minmax(0,1fr);height:590px}.ledger-list[data-v-423f86be]{border-right:1px solid #e5edf3;overflow-y:auto;background:#fafdff;scrollbar-color:#b5c7cf transparent}.ledger-item[data-v-423f86be]{width:100%;display:flex;flex-direction:column;gap:9px;text-align:left;padding:18px 22px;border-bottom:1px solid #e8eef4;border-left:3px solid transparent;transition:background .2s,border-color .2s}.ledger-item[data-v-423f86be]:hover{background:#edf7f8}.ledger-item.active[data-v-423f86be]{background:#e8f5f4;border-left-color:#19aa9c}.item-top[data-v-423f86be],.item-bottom[data-v-423f86be]{display:flex;justify-content:space-between;gap:12px;align-items:center}.item-top strong[data-v-423f86be]{font-size:14px;color:#1d3444}.item-top i[data-v-423f86be]{font-style:normal;font-size:11px;color:#477084;white-space:nowrap}.item-title[data-v-423f86be]{display:flex;align-items:center;gap:9px;min-width:0}.item-title strong[data-v-423f86be]{min-width:0;overflow:hidden;text-overflow:ellipsis}.group-avatar[data-v-423f86be]{width:34px;height:34px;flex:none;object-fit:cover;border-radius:9px;background:#e4f2f0}.group-fallback[data-v-423f86be]{display:grid;place-items:center;color:#197e76;font-size:12px;font-weight:700}.group-entry[data-v-423f86be]{display:flex;align-items:center;gap:10px;margin:0 0 18px;padding:11px 13px;border:1px solid #d4e8e4;border-radius:9px;background:#f2faf8;color:#176e67;text-decoration:none;min-height:58px}.group-entry[data-v-423f86be]:hover,.group-entry[data-v-423f86be]:focus-visible{background:#e4f5f0;outline-color:#187d73}.group-entry-text[data-v-423f86be]{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}.group-entry-text small[data-v-423f86be]{font-size:10px;color:#678d89}.group-entry-text strong[data-v-423f86be]{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-entry>span[data-v-423f86be]:last-child{font-size:11px;font-weight:700;white-space:nowrap}.ledger-item[data-v-423f86be]{cursor:pointer}.ledger-item[data-v-423f86be]:focus-visible,.item-group-link[data-v-423f86be]:focus-visible{outline:2px solid #197e76;outline-offset:-2px}.item-group-link[data-v-423f86be]{display:inline-flex;border-radius:9px}.item-meta[data-v-423f86be],.item-bottom time[data-v-423f86be]{font-size:12px;color:#738795}.freshness[data-v-423f86be]{font-size:11px;border-radius:999px;padding:4px 8px;white-space:nowrap;background:#e3f5ee;color:#21805e}.freshness.stale[data-v-423f86be]{background:#fff1dd;color:#a76613}.freshness.never[data-v-423f86be]{background:#eef1f5;color:#738092}.member-role[data-v-423f86be]{font-size:11px;line-height:1.5;color:#428181;background:#e9f6f3;border-radius:5px;padding:5px 7px}.ledger-detail[data-v-423f86be]{padding:27px 31px 25px;overflow-y:auto;scrollbar-color:#b5c7cf transparent}.detail-head[data-v-423f86be]{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.detail-label[data-v-423f86be]{color:#488896}.detail-head h3[data-v-423f86be]{font-size:21px;color:#172e3d;margin:7px 0 0}.project-goal[data-v-423f86be]{font-size:13px;color:#607887;line-height:1.6;margin:9px 0 16px}.member-focus[data-v-423f86be]{display:flex;flex-direction:column;gap:5px;margin:0 0 18px;padding:10px 13px;background:#edf8f7;border:1px solid #d1eae5;border-radius:8px}.member-focus span[data-v-423f86be]{font:700 10px var(--font-mono);letter-spacing:.08em;color:#2a817b}.member-focus strong[data-v-423f86be]{font-size:12px;line-height:1.6;color:#325b62}.detail-facts[data-v-423f86be]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 22px;margin-bottom:20px}.detail-facts div[data-v-423f86be]{padding:10px 0;border-top:1px solid #e4edf1}.detail-facts dt[data-v-423f86be]{color:#8295a0;font-size:11px;margin-bottom:6px}.detail-facts dd[data-v-423f86be]{color:#274052;font-size:13px;font-weight:600;margin:0}.ai-report[data-v-423f86be]{border-left:3px solid #20ad9d;background:#f0f9f7;padding:14px 16px;margin-bottom:12px}.report-label[data-v-423f86be]{color:#198d80}.ai-report p[data-v-423f86be]{margin-top:8px;color:#264452;font-size:13px;line-height:1.75}.report-columns[data-v-423f86be]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.report-columns>div[data-v-423f86be],.risk-note[data-v-423f86be]{padding:13px 15px;border:1px solid #e4edf1;border-radius:8px}.report-columns span[data-v-423f86be],.risk-note span[data-v-423f86be]{font-size:11px;font-weight:700;color:#607e89}.report-columns p[data-v-423f86be],.risk-note p[data-v-423f86be]{margin-top:7px;font-size:12px;line-height:1.65;color:#36505e}.risk-note[data-v-423f86be]{margin-top:12px;background:#fffaf3;border-color:#f2e6cf}.source-link[data-v-423f86be],.no-source[data-v-423f86be]{display:inline-block;margin-top:17px;font-size:12px}.source-link[data-v-423f86be]{color:#117f78;font-weight:700}.no-source[data-v-423f86be]{color:#97a8ad}.ledger-empty[data-v-423f86be]{padding:45px 30px;display:flex;flex-direction:column;gap:8px;color:#718593}.ledger-empty strong[data-v-423f86be]{font-size:16px;color:#2b4554}@media(max-width:900px){.ledger-body[data-v-423f86be]{grid-template-columns:1fr;height:auto}.ledger-list[data-v-423f86be]{display:flex;overflow-x:auto;overflow-y:hidden;max-height:none;border-right:0;border-bottom:1px solid #e5edf3}.ledger-item[data-v-423f86be]{min-width:240px;border-bottom:0;border-right:1px solid #e8eef4}.ledger-heading[data-v-423f86be]{padding:22px;flex-wrap:wrap}.ledger-detail[data-v-423f86be]{padding:22px;max-height:560px}.ledger-stats[data-v-423f86be]{padding:14px 22px;gap:18px;flex-wrap:wrap}.ledger-filters[data-v-423f86be],.member-filters[data-v-423f86be]{padding-left:22px;padding-right:22px}}@media(max-width:560px){.ledger-controls[data-v-423f86be]{align-items:flex-start}.report-columns[data-v-423f86be],.detail-facts[data-v-423f86be]{grid-template-columns:1fr}.ledger-heading h2[data-v-423f86be]{font-size:20px}}.projects-page[data-v-ffe95cc3]{max-width:1500px;margin:0 auto;padding:20px 24px 50px;display:grid;gap:20px;color:#1a3448}.page-header[data-v-ffe95cc3]{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;padding:12px 2px 6px}.eyebrow[data-v-ffe95cc3]{color:#0b928d;font:700 11px/1.3 var(--font-mono);letter-spacing:.16em;margin:0 0 8px}h1[data-v-ffe95cc3]{font-size:34px;line-height:1.2;letter-spacing:-.03em;margin:0 0 9px}.intro[data-v-ffe95cc3]{color:#5b7283;font-size:14px;margin:0}.header-actions[data-v-ffe95cc3]{display:flex;align-items:center;gap:15px;color:#758b9a;font-size:12px}.header-actions button[data-v-ffe95cc3]{background:#173c52;color:#fff;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:700;white-space:nowrap}.header-actions button[data-v-ffe95cc3]:disabled{opacity:.6}.metrics[data-v-ffe95cc3]{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.metric[data-v-ffe95cc3]{min-height:118px;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:17px 20px;background:#fff;border:1px solid #dce7ed;border-radius:12px;border-top:3px solid #314f61;box-shadow:0 6px 18px #183b4b0a}.metric span[data-v-ffe95cc3]{color:#607887;font-size:12px;font-weight:600}.metric strong[data-v-ffe95cc3]{font:700 30px/1.1 var(--font-mono);color:#1c3e54}.metric small[data-v-ffe95cc3]{color:#8aa0ac;font-size:11px}.metric.blue[data-v-ffe95cc3]{border-top-color:#3e8acb}.metric.green[data-v-ffe95cc3]{border-top-color:#30ad82}.metric.amber[data-v-ffe95cc3]{border-top-color:#e5a94b}.metric.teal[data-v-ffe95cc3]{border-top-color:#26aaa3}.insights[data-v-ffe95cc3]{display:grid;grid-template-columns:1fr 1fr .85fr;gap:12px}.insight-card[data-v-ffe95cc3]{background:#fff;border:1px solid #dce7ed;border-radius:12px;padding:20px 23px;min-height:215px}.card-heading[data-v-ffe95cc3]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}.card-heading h2[data-v-ffe95cc3]{font-size:15px;margin:0}.card-heading span[data-v-ffe95cc3]{font-size:11px;color:#8aa0ac;white-space:nowrap}.distribution-row[data-v-ffe95cc3]{display:grid;grid-template-columns:90px 1fr 20px;align-items:center;gap:10px;margin:11px 0;font-size:12px;color:#506a7b}.distribution-row b[data-v-ffe95cc3]{text-align:right;color:#263f50}.track[data-v-ffe95cc3]{height:7px;background:#edf2f5;border-radius:10px;overflow:hidden}.track i[data-v-ffe95cc3]{display:block;height:100%;border-radius:10px;background:#a7bdc6}.track i.blue[data-v-ffe95cc3]{background:#4a94c9}.track i.green[data-v-ffe95cc3]{background:#35ac83}.track i.amber[data-v-ffe95cc3]{background:#dba551}.track i.stage[data-v-ffe95cc3]{background:#5a9eaa}.attention[data-v-ffe95cc3]{background:#f8faf9}.attention-line[data-v-ffe95cc3]{display:flex;align-items:baseline;gap:13px;padding:5px 0;color:#657d8a;font-size:12px}.attention-line strong[data-v-ffe95cc3]{font:700 23px var(--font-mono);color:#23495a}.empty-insight[data-v-ffe95cc3]{color:#91a1aa;font-size:12px}.page-footnote[data-v-ffe95cc3]{font-size:11px;color:#879da9;margin:0 2px}@media(max-width:1100px){.metrics[data-v-ffe95cc3]{grid-template-columns:repeat(3,minmax(0,1fr))}.insights[data-v-ffe95cc3]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.projects-page[data-v-ffe95cc3]{padding:12px;gap:14px}.page-header[data-v-ffe95cc3]{align-items:flex-start;flex-direction:column}h1[data-v-ffe95cc3]{font-size:27px}.header-actions[data-v-ffe95cc3]{width:100%;justify-content:space-between}.metrics[data-v-ffe95cc3]{grid-template-columns:repeat(2,minmax(0,1fr))}.insights[data-v-ffe95cc3]{grid-template-columns:1fr}}:root{--header-h: 60px;--page-max: 1280px;--page-pad-x: 24px;--page-pad-y: 22px;--bg: #f5f7fb;--bg-alt: #eef3fb;--bg-surface: #f9fbff;--card: rgba(255, 255, 255, .92);--card-solid: #ffffff;--text: #172033;--text2: #5f6b7c;--text3: #94a0b2;--primary: #4285f4;--primary-light: #eaf2ff;--primary-hover: #1f6feb;--primary-dark: #1557c0;--accent: #fbbc04;--accent-light: #fff7d7;--success: #12b981;--success-light: #e8fbf3;--warning: #f59e0b;--warning-light: #fff7e6;--danger: #ef4444;--danger-light: #fff1f1;--info: #5b6ee1;--info-light: #eef1ff;--radius: 8px;--radius-sm: 6px;--radius-lg: 10px;--radius-full: 9999px;--shadow: 0 1px 2px rgba(19, 31, 55, .06);--shadow-md: 0 8px 24px rgba(28, 43, 76, .08);--shadow-lg: 0 18px 50px rgba(28, 43, 76, .14);--border: #e3e8f1;--border-light: #edf1f7;--focus-ring: 0 0 0 3px rgba(66, 133, 244, .18);--font: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "Cascadia Code", "SF Mono", "Consolas", "Menlo", monospace;--text-xs: 11px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--transition: .18s cubic-bezier(.4, 0, .2, 1);--transition-slow: .32s cubic-bezier(.4, 0, .2, 1)}@media(max-width:960px){:root{--header-h: auto;--page-pad-x: 14px;--page-pad-y: 14px;--text-2xl: 21px;--text-xl: 18px}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-family:var(--font);font-size:var(--text-base);color:var(--text);background:linear-gradient(180deg,#4285f414,#4285f400 220px),var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;min-height:100dvh;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(66,133,244,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(66,133,244,.055) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:linear-gradient(180deg,#000 0,transparent 58%);mask-image:linear-gradient(180deg,#000 0,transparent 58%)}a{color:var(--primary);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;outline:none;background:none}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:#4285f4b8}input,textarea,select{font-family:inherit;font-size:inherit}img{max-width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cfd8e6;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#9aa8bd}::selection{background:var(--primary-light);color:var(--primary-dark)}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}@supports (padding-bottom: env(safe-area-inset-bottom)){.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}}@media(max-width:960px){html{background:var(--bg)}body:before{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
