:root{--ink:#0f172a;--ink-soft:#334155;--muted:#64748b;--muted-light:#94a3b8;--line:#e2e8f0;--line-soft:#eef2f7;--surface:#ffffff;--page:#f8fafc;--brand:#d80813;--red-bg:#fee2e2;--red-fg:#991b1b;--red-dot:#ef4444;--amber-bg:#fef3c7;--amber-fg:#92400e;--amber-dot:#f59e0b;--blue-bg:#dbeafe;--blue-fg:#1e40af;--blue-dot:#3b82f6;--slate-bg:#e2e8f0;--slate-fg:#334155;--slate-dot:#64748b;--green-bg:#dcfce7;--green-fg:#166534;--green-dot:#22c55e}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Noto Sans SC,Roboto,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.wrap{max-width:1640px;margin:0 auto;padding:26px 28px 60px}.masthead{padding-bottom:20px;border-bottom:1px solid var(--line)}.masthead-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.session-box{display:flex;align-items:center;gap:12px;flex:none}.session-who{color:var(--muted);font-size:12.5px;font-weight:600;white-space:nowrap;max-width:34vw;overflow:hidden;text-overflow:ellipsis}.signout{padding:7px 15px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}.signout:hover{border-color:#cbd5e1;color:var(--ink)}.masthead h1{display:flex;align-items:center;gap:12px;margin:0;font-size:30px;font-weight:800;letter-spacing:-.025em}.masthead h1 .glyph{font-size:27px;line-height:1}.subline{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:8px}.subline .who{color:var(--muted);font-size:14.5px}.datechip{display:inline-flex;align-items:center;gap:8px;padding:5px 14px;border-radius:999px;background:#eff6ff;color:#1e3a8a;font-size:13px;font-weight:600;white-space:nowrap}.datechip .sep{color:#93b4f0}.parties{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:22px 0 26px;padding:16px 20px;background:var(--surface);border:1px solid var(--line);border-radius:16px}.parties-label{padding-right:6px;color:var(--ink-soft);font-size:11.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.parties-label,.party{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}.party{padding:9px 18px;border:2px solid var(--tone,var(--line));border-radius:999px;background:var(--surface);font-size:15px;font-weight:700}.party[data-tone=red]{--tone:#ef4444}.party[data-tone=amber]{--tone:#f59e0b}.party[data-tone=blue]{--tone:#3b82f6}.party[data-tone=green]{--tone:#22c55e}.party .badge{padding:3px 10px;border-radius:999px;background:var(--ink);color:#fff;font-size:11.5px;font-weight:700}.party .note{color:var(--muted);font-size:12.5px;font-weight:500}.board{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.scroller{overflow-x:auto}table{width:100%;min-width:1280px;border-collapse:collapse}thead th{padding:15px 18px;background:#f1f5f9;border-bottom:1px solid var(--line);color:var(--ink-soft);font-size:12.5px;font-weight:800;text-align:left;vertical-align:middle;white-space:nowrap}thead th .zh{color:var(--muted);font-weight:600}tbody td{padding:20px 18px;border-bottom:1px solid var(--line-soft);vertical-align:top}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfdff}.col-id{width:108px}.col-activity{width:232px}.col-owner{width:172px}.col-dep{width:190px}.col-deadline{width:150px}.col-status{width:168px}.col-next{width:210px}.zh{color:var(--muted);font-size:12.5px;line-height:1.55}.en{font-size:13.5px;line-height:1.5}.task-id{font-size:14px;font-weight:800;letter-spacing:-.01em}.activity-en{display:flex;align-items:flex-start;gap:8px;font-size:14.5px;font-weight:700;line-height:1.35}.activity-en .glyph{flex:none;font-size:14px;line-height:1.4}.activity .zh{margin-top:4px}.owner-name{color:#1d4ed8;font-size:14.5px;font-weight:700}.owner-role{color:var(--muted);font-size:13px;font-weight:500;white-space:nowrap}.dep{color:var(--ink-soft)}.dep+.dep{margin-top:10px}.deadline-date{font-size:14px;font-weight:700}.deadline-note{margin-top:3px;color:var(--muted-light);font-size:12.5px}.deadline-warn{margin-top:4px;font-size:14px}.countdown{margin-top:3px;font-size:12.5px;font-weight:600}.countdown[data-urgency=past],.countdown[data-urgency=today]{color:#dc2626}.countdown[data-urgency=soon]{color:#b45309}.countdown[data-urgency=ok]{color:var(--muted-light);font-weight:500}.status{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap;background:var(--pill-bg,var(--slate-bg));color:var(--pill-fg,var(--slate-fg))}.status .dot{width:9px;height:9px;border-radius:50%;background:var(--pill-dot,var(--slate-dot));flex:none}.status .clock{font-size:11px;line-height:1}.status[data-status=notStarted]{--pill-bg:var(--red-bg);--pill-fg:var(--red-fg);--pill-dot:var(--red-dot)}.status[data-status=inProgress],.status[data-status=pending]{--pill-bg:var(--amber-bg);--pill-fg:var(--amber-fg);--pill-dot:var(--amber-dot)}.status[data-status=waiting]{--pill-bg:#eef2f7;--pill-fg:var(--slate-fg);--pill-dot:var(--slate-dot)}.status[data-status=planned]{--pill-bg:var(--blue-bg);--pill-fg:var(--blue-fg);--pill-dot:var(--blue-dot)}.status[data-status=done]{--pill-bg:var(--green-bg);--pill-fg:var(--green-fg);--pill-dot:var(--green-dot)}.status[data-status=blocked]{--pill-bg:var(--red-bg);--pill-fg:var(--red-fg);--pill-dot:var(--red-dot)}.criteria+.criteria{margin-top:12px}.criteria .lead{font-weight:800}.criteria[data-kind=go] .lead{color:#15803d}.criteria[data-kind=noGo] .lead{color:#b91c1c}.foot{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:space-between;margin-top:16px;color:var(--muted-light);font-size:12px}.login{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:radial-gradient(1100px 520px at 50% -10%,#e7effb 0,transparent 70%),var(--page)}.login-card{width:100%;max-width:400px;padding:34px 32px 28px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 40px -24px rgba(15,23,42,.35);text-align:center}.login-mark{font-size:32px;line-height:1}.login-card h1{margin:14px 0 0;font-size:20px;font-weight:800;letter-spacing:-.02em}.login-sub{margin:8px 0 26px;color:var(--muted);font-size:13px;line-height:1.7}.login-label{display:block;margin-bottom:7px;color:var(--ink-soft);font-size:11.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;text-align:left}.login-label-spaced{margin-top:16px}.login-input{width:100%;padding:11px 14px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-size:15px}.login-input[type=password]{letter-spacing:.08em}.login-input::placeholder{color:var(--muted-light);letter-spacing:normal}.login-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(216,8,19,.12)}.login-error{margin:12px 0 0;padding:9px 12px;border-radius:8px;background:var(--red-bg);color:var(--red-fg);font-size:12.5px;font-weight:600;text-align:left}.login-button{width:100%;margin-top:18px;padding:12px;border:0;border-radius:9px;background:var(--brand);color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.login-button:hover{background:#c00711}.login-foot{margin:20px 0 0;color:var(--muted-light);font-size:11.5px}@media (max-width:900px){.wrap{padding:20px 16px 48px}.masthead h1{font-size:21px}.masthead h1 .glyph{font-size:19px}.masthead-row{align-items:center}.parties{gap:10px;padding:14px}.party{font-size:13.5px;padding:7px 14px}.board{border-radius:12px}.scroller{overflow-x:visible}table,tbody,td,thead,tr{display:block;width:auto}table{min-width:0}thead{display:none}tbody tr{padding:4px 0 10px;border-bottom:8px solid var(--page)}tbody td,tbody tr:last-child{border-bottom:0}tbody td{display:grid;grid-template-columns:96px 1fr;grid-gap:12px;gap:12px;padding:9px 16px}tbody td:before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding-top:2px}tbody td.col-id{background:#f1f5f9;padding-top:12px;padding-bottom:12px}}@media (max-width:620px){tbody td{grid-template-columns:1fr;gap:4px}tbody td.col-id{grid-template-columns:96px 1fr;gap:12px;align-items:baseline}}@media print{body{background:#fff}.wrap{max-width:none;padding:0}.board,.parties{border-color:#cbd5e1}.scroller{overflow:visible}table{min-width:0;font-size:11px}tbody td{padding:10px 8px}tbody tr{page-break-inside:avoid;break-inside:avoid}}