:root{--ink:#111418;--paper:#f2f2ee;--white:#fff;--acid:#d7ff35;--muted:#697078;--line:#d8dad7;--blue:#5bc7dc;--red:#ef6b61}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:"Noto Sans SC",sans-serif;letter-spacing:0}button,input,select,textarea{font:inherit}button,a{color:inherit}button{cursor:pointer}.mono-label{margin:0 0 10px;font:600 10px "IBM Plex Mono",monospace;color:var(--muted);text-transform:uppercase}.hidden{display:none!important}.auth-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:#0b0e11}.auth-brand{position:fixed;z-index:2;top:28px;left:34px;display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:13px;font-weight:600}.auth-brand span,.workspace-brand>span{display:grid;place-items:center;width:38px;height:38px;color:var(--ink);background:var(--acid);font:600 11px "IBM Plex Mono",monospace}.auth-visual{min-height:100vh;padding:80px 7vw;display:flex;align-items:flex-end;color:#fff;background:linear-gradient(0deg,rgba(5,8,10,.85),rgba(5,8,10,.1)),linear-gradient(90deg,rgba(5,8,10,.45),transparent),url("assets/hero-lab.jpg") 58% center/cover}.auth-visual p{font:600 11px "IBM Plex Mono",monospace;color:var(--acid)}.auth-visual h1{margin:18px 0 22px;font-size:clamp(38px,4.4vw,64px);line-height:1.12}.auth-visual span{color:rgba(255,255,255,.65);font-size:13px}.auth-panel{min-height:100vh;display:grid;place-items:center;padding:90px 8vw;background:var(--paper)}.auth-box{width:min(420px,100%)}.auth-box h2{margin:0;font-size:38px}.auth-description{margin:12px 0 28px;color:var(--muted);font-size:14px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;margin-bottom:24px;border-bottom:1px solid var(--line)}.auth-tabs button{padding:13px;border:0;border-bottom:3px solid transparent;background:transparent}.auth-tabs button.active{border-color:var(--ink);font-weight:700}.field{display:grid;gap:8px;margin-bottom:17px}.field>span{font-size:12px;font-weight:600}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:0;background:#fff;padding:13px 14px;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink);box-shadow:0 0 0 2px rgba(17,20,24,.08)}.field textarea{resize:vertical}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.primary-action,.header-action{min-height:48px;padding:0 18px;border:0;display:flex;align-items:center;justify-content:space-between;gap:25px;background:var(--acid);font-weight:700}.primary-action{width:100%}.primary-action:disabled{opacity:.55}.form-error{min-height:20px;margin:0 0 8px;color:#c63b32;font-size:12px}.auth-note{margin-top:20px;color:var(--muted);font-size:11px;line-height:1.6}
.workspace{min-height:100vh;background:#eceeea}.sidebar{position:fixed;z-index:10;inset:0 auto 0 0;width:236px;padding:24px 18px;display:flex;flex-direction:column;color:#fff;background:#0d1013}.workspace-brand{display:grid;grid-template-columns:38px 1fr;grid-template-rows:20px 18px;column-gap:11px;align-items:center;color:#fff;text-decoration:none}.workspace-brand>span{grid-row:1/3}.workspace-brand b{font-size:13px}.workspace-brand small{color:#858b91;font-size:10px}.workspace-nav{margin-top:65px;display:grid;gap:6px}.workspace-nav button{width:100%;padding:13px 12px;border:0;display:flex;gap:13px;align-items:center;color:#8f969d;background:transparent;text-align:left;font-size:13px}.workspace-nav button i{width:22px;font-style:normal;font-size:17px;text-align:center}.workspace-nav button.active,.workspace-nav button:hover{color:#fff;background:#20252a}.workspace-nav button.active{box-shadow:inset 3px 0 var(--acid)}.sidebar-foot{margin-top:auto;padding-top:18px;border-top:1px solid #2b3035;display:grid;grid-template-columns:36px 1fr 30px;gap:10px;align-items:center}.user-avatar{width:36px;height:36px;display:grid;place-items:center;background:var(--acid);color:var(--ink);font-weight:800}.sidebar-foot strong,.sidebar-foot small{display:block;max-width:105px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-foot strong{font-size:12px}.sidebar-foot small{margin-top:3px;color:#777f87;font:500 9px "IBM Plex Mono",monospace}.sidebar-foot button{border:0;color:#8a9197;background:transparent;font-size:18px}.workspace-main{min-height:100vh;margin-left:236px;padding:36px clamp(24px,4vw,64px) 70px}.workspace-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:42px}.workspace-header h1{margin:0;font-size:30px}.workspace-view{display:none}.workspace-view.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.metric{min-height:118px;padding:20px;background:#fff;border-top:3px solid var(--ink)}.metric:nth-child(2){border-color:var(--acid)}.metric:nth-child(3){border-color:var(--blue)}.metric:nth-child(4){border-color:#9b8ce1}.metric span{color:var(--muted);font-size:11px}.metric strong{display:block;margin-top:16px;font:600 32px "IBM Plex Mono",monospace}.workspace-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}.panel{padding:24px;background:#fff}.project-panel{grid-row:span 2}.panel-heading,.view-heading{display:flex;justify-content:space-between;align-items:flex-start}.panel-heading{margin-bottom:22px}.panel-heading p{margin:0 0 5px;font:600 9px "IBM Plex Mono",monospace;color:var(--muted)}.panel-heading h2{margin:0;font-size:20px}.panel-heading button{border:0;background:transparent;font-size:12px;font-weight:600}.project-item{padding:22px 0;border-top:1px solid var(--line)}.project-item:first-child{border-top:0}.project-item-top{display:flex;justify-content:space-between;gap:20px}.project-item h3{margin:0 0 8px;font-size:18px}.project-item p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.project-badge{height:25px;padding:5px 8px;background:#ecf1e8;font:600 9px "IBM Plex Mono",monospace;white-space:nowrap}.progress-line{height:5px;margin-top:18px;background:#e8eae7}.progress-line span{display:block;height:100%;background:var(--ink)}.project-progress{display:flex;justify-content:space-between;margin-top:7px;color:var(--muted);font-size:10px}.compact-task{padding:13px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center}.compact-task:first-child{border-top:0}.priority-dot{width:7px;height:7px;border-radius:50%;background:#aab0b5}.priority-dot.high{background:var(--red)}.priority-dot.medium{background:#e9b946}.compact-task strong{display:block;font-size:12px}.compact-task small{color:var(--muted);font-size:9px}.status-chip{padding:5px 7px;background:#eef0ed;font-size:9px}.note-preview{padding:14px 0;border-top:1px solid var(--line)}.note-preview:first-child{border-top:0}.note-preview strong{display:block;font-size:12px}.note-preview span{font-size:10px;color:var(--muted)}.view-heading{margin-bottom:28px}.view-heading h2{margin:3px 0 7px;font-size:34px}.view-heading>div>p:last-child{margin:0;color:var(--muted);font-size:13px}.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.kanban-column{min-height:520px;padding:18px;background:#e4e6e2}.kanban-title{display:flex;justify-content:space-between;margin-bottom:17px;font-size:12px;font-weight:700}.kanban-title span{font:500 10px "IBM Plex Mono",monospace;color:var(--muted)}.task-card{margin-bottom:10px;padding:16px;background:#fff;border-left:3px solid #aeb3b5}.task-card.high{border-color:var(--red)}.task-card.medium{border-color:#e8b82e}.task-card h3{margin:0 0 16px;font-size:13px}.task-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}.task-actions{display:flex;gap:5px;margin-top:12px}.task-actions button{padding:5px 7px;border:1px solid var(--line);background:#fff;font-size:9px}.notes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.note-card{min-height:220px;padding:22px;display:flex;flex-direction:column;background:#fff;border-top:4px solid var(--ink)}.note-card:nth-child(3n+2){border-color:var(--blue)}.note-card:nth-child(3n+3){border-color:var(--acid)}.note-card small{color:var(--muted);font:500 9px "IBM Plex Mono",monospace}.note-card h3{margin:23px 0 10px;font-size:18px}.note-card p{margin:0;color:#565d63;font-size:12px;line-height:1.7;white-space:pre-wrap}.note-card footer{margin-top:auto;padding-top:20px;display:flex;justify-content:space-between;color:var(--muted);font-size:9px}.note-card footer button{border:0;background:transparent;color:#a1453e}.file-table{background:#fff}.file-row{min-height:70px;padding:13px 18px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:42px 1fr 150px 100px 70px;gap:14px;align-items:center}.file-icon{width:38px;height:38px;display:grid;place-items:center;background:#e9ece8;font:600 10px "IBM Plex Mono",monospace}.file-row strong{font-size:12px}.file-row span{color:var(--muted);font-size:10px}.file-row a,.file-row button{border:0;background:transparent;font-size:11px;text-decoration:none}.file-row button{color:#a1453e}dialog{width:min(560px,calc(100% - 28px));padding:0;border:0;background:var(--paper);box-shadow:0 24px 80px rgba(0,0,0,.3)}dialog::backdrop{background:rgba(5,7,9,.68);backdrop-filter:blur(3px)}.modal-form{padding:28px}.modal-heading{margin-bottom:26px;display:flex;justify-content:space-between}.modal-heading p{margin:0 0 5px;font:600 9px "IBM Plex Mono",monospace;color:var(--muted)}.modal-heading h2{margin:0}.modal-heading button{width:36px;height:36px;border:0;background:#e1e3df;font-size:22px}.drop-zone{min-height:170px;margin-bottom:20px;border:1px dashed #a8ada9;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff}.drop-zone input{max-width:220px;margin-bottom:15px}.drop-zone strong{font-size:13px}.drop-zone span{margin-top:5px;color:var(--muted);font-size:10px}.toast{position:fixed;z-index:50;right:24px;bottom:24px;padding:13px 18px;color:#fff;background:var(--ink);font-size:12px;opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}.empty{padding:30px 10px;color:var(--muted);text-align:center;font-size:12px}
@media(max-width:980px){.metric-grid{grid-template-columns:1fr 1fr}.workspace-grid{grid-template-columns:1fr}.project-panel{grid-row:auto}.notes-grid{grid-template-columns:1fr 1fr}.kanban{grid-template-columns:1fr}.kanban-column{min-height:200px}.file-row{grid-template-columns:42px 1fr 80px 60px}.file-row .file-uploader{display:none}}
@media(max-width:700px){.auth-page{grid-template-columns:1fr}.auth-visual{display:none}.auth-panel{padding:90px 22px 50px}.auth-brand{top:22px;left:22px;color:var(--ink)}.sidebar{inset:auto 0 0;width:100%;height:66px;padding:7px 9px;display:block}.workspace-brand,.sidebar-foot{display:none}.workspace-nav{height:100%;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.workspace-nav button{padding:5px;justify-content:center;flex-direction:column;gap:2px;font-size:9px;text-align:center}.workspace-nav button i{font-size:16px}.workspace-nav button.active{box-shadow:inset 0 -3px var(--acid)}.workspace-main{margin:0;padding:22px 14px 90px}.workspace-header{margin-bottom:26px}.workspace-header h1{font-size:23px}.workspace-header .header-action{width:44px;min-height:44px;padding:0;justify-content:center;font-size:0}.workspace-header .header-action span{font-size:20px}.metric-grid{gap:8px}.metric{min-height:96px;padding:14px}.metric strong{font-size:25px}.panel{padding:18px}.view-heading{gap:14px}.view-heading h2{font-size:29px}.view-heading .header-action{font-size:0;width:46px;padding:0;justify-content:center}.view-heading .header-action::first-letter{font-size:19px}.notes-grid{grid-template-columns:1fr}.file-row{grid-template-columns:38px 1fr 54px;padding:12px 10px}.file-row .file-date,.file-row .file-uploader{display:none}.field-row{grid-template-columns:1fr}.auth-box h2{font-size:32px}}

body { font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif; }
.mono-label, .section-index, .eyebrow, .project-kicker, .project-status, .sprint small, .sprint b, .copyright, .metric strong, .panel-heading p, .kanban-title span, .member-role, .member-number-input { font-family: "Cascadia Mono", Consolas, monospace; }
.auth-visual { background-image: linear-gradient(0deg, rgba(5,8,10,.85), rgba(5,8,10,.1)), linear-gradient(90deg, rgba(5,8,10,.45), transparent), url("assets/hero-lab-v3.webp"); }
.brand-logo-image, .auth-brand-logo, .workspace-brand-logo { display: block; object-fit: contain; }
.brand-logo-image { width: 96px; height: 58px; }
.brand-footer .brand-logo-image { width: 116px; height: 72px; }
.auth-brand-logo { width: 104px; height: 64px; }
.workspace-brand { display: block; width: 118px; height: 72px; }
.workspace-brand-logo { width: 100%; height: 100%; }
.member-avatar, .chat-avatar, .online-avatar, .profile-avatar-large { background: transparent; }
.default-avatar { width: 100%; height: 100%; padding: 3%; object-fit: contain !important; background: transparent; }
@media (max-width:700px) { .auth-brand-logo { width: 88px; height: 54px; } }
