:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;--border-radius-sm:3px;--border-radius-md:5px;--border-radius-lg:8px;--color-text-primary:#1a1a1a;--color-text-secondary:#4a4a4a;--color-text-tertiary:#8a8a8a;--color-text-info:#185fa5;--color-text-success:#3b6d11;--color-text-warning:#854f0b;--color-text-danger:#a32d2d;--color-background-primary:#ffffff;--color-background-secondary:#f4f4f4;--color-background-tertiary:#ececec;--color-background-info:#e8f0fb;--color-background-success:#eaf3de;--color-background-warning:#faeeda;--color-background-danger:#fcebeb;--color-border-primary:#c0c0c0;--color-border-secondary:#d8d8d8;--color-border-tertiary:#e8e8e8;--color-border-info:#b3ceef;--color-border-danger:#f0c8c8}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:12px;color:var(--color-text-primary);background:var(--color-background-tertiary);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}#root{width:100%;max-width:1200px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.shell{display:grid;grid-template-columns:168px 1fr;height:680px;overflow:hidden;border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);background:var(--color-background-primary)}.sb{background:var(--color-background-primary);border-right:.5px solid var(--color-border-tertiary);display:flex;flex-direction:column}.sb-logo{padding:11px 12px;border-bottom:.5px solid var(--color-border-tertiary);display:flex;align-items:center;gap:8px;flex-shrink:0}.logo-sq{width:24px;height:24px;border-radius:5px;background:var(--color-background-info);display:flex;align-items:center;justify-content:center;color:var(--color-text-info);font-size:12px;flex-shrink:0}.logo-t{font-size:11px;font-weight:500;line-height:1.2}.logo-s{font-size:10px;color:var(--color-text-tertiary)}.nav-grp{padding:6px 0}.nav-lbl{padding:3px 10px;font-size:9px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-tertiary)}.ni{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;color:var(--color-text-secondary);font-size:11px;border-left:2px solid transparent;transition:all .1s;-webkit-user-select:none;user-select:none;background:none;border-top:none;border-right:none;border-bottom:none;width:100%;text-align:left;font-family:inherit}.ni svg{width:13px;height:13px;flex-shrink:0}.ni:hover{background:var(--color-background-secondary);color:var(--color-text-primary)}.ni.on{background:var(--color-background-info);color:var(--color-text-info);border-left-color:var(--color-border-info)}.nb{margin-left:auto;font-size:9px;padding:1px 4px;border-radius:7px;font-weight:500}.nb-a{background:var(--color-background-warning);color:var(--color-text-warning)}.nb-b{background:var(--color-background-info);color:var(--color-text-info)}.nb-g{background:var(--color-background-success);color:var(--color-text-success)}.sb-upcoming{padding:6px 0;border-top:.5px solid var(--color-border-tertiary);flex:1;overflow:hidden;display:flex;flex-direction:column}.sb-up-scroll{overflow-y:auto;flex:1;padding:2px 6px}.sb-up-item{padding:4px 6px;border-radius:var(--border-radius-md);cursor:pointer;transition:background .1s;margin-bottom:2px}.sb-up-item:hover{background:var(--color-background-secondary)}.sb-up-title{font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:4px}.sb-up-meta{font-size:9px;color:var(--color-text-tertiary);padding-left:7px;margin-top:1px}.main{display:flex;flex-direction:column;background:var(--color-background-tertiary);min-width:0;overflow:hidden}.topbar{height:40px;background:var(--color-background-primary);border-bottom:.5px solid var(--color-border-tertiary);display:flex;align-items:center;padding:0 12px;gap:6px;flex-shrink:0}.tb-title{font-size:13px;font-weight:500;flex:1}.btn{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:var(--border-radius-md);border:.5px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-secondary);cursor:pointer;font-size:11px;font-family:var(--font-sans);transition:all .1s;white-space:nowrap}.btn:hover{background:var(--color-background-secondary);color:var(--color-text-primary)}.btn.pr{background:var(--color-text-info);border-color:var(--color-text-info);color:#fff}.btn.pr:hover{opacity:.85}.btn.danger{background:var(--color-background-danger);border-color:var(--color-border-danger);color:var(--color-text-danger)}.view-toggle{display:flex;border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);overflow:hidden}.vt{padding:4px 8px;font-size:11px;cursor:pointer;color:var(--color-text-secondary);background:var(--color-background-primary);border:none;font-family:var(--font-sans);display:flex;align-items:center;gap:3px}.vt:hover{background:var(--color-background-secondary)}.vt.on{background:var(--color-background-info);color:var(--color-text-info)}.update-banner{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--color-background-warning);border-bottom:.5px solid var(--color-border-secondary);font-size:11px;color:var(--color-text-warning);flex-shrink:0}.update-banner span{flex:1}.content{flex:1;overflow:hidden;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:0}.page{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}.card{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);overflow:hidden}.ch{padding:8px 12px;border-bottom:.5px solid var(--color-border-tertiary);display:flex;align-items:center;gap:6px;flex-shrink:0}.ch-t{font-size:12px;font-weight:500;flex:1}.ch-a{font-size:10px;color:var(--color-text-info);cursor:pointer;background:none;border:none;font-family:var(--font-sans)}.ch-a:hover{text-decoration:underline}.tag{display:inline-flex;align-items:center;font-size:9px;padding:1px 5px;border-radius:3px;font-weight:500;white-space:nowrap}.tg{background:var(--color-background-success);color:var(--color-text-success)}.tr{background:var(--color-background-danger);color:var(--color-text-danger)}.ta{background:var(--color-background-warning);color:var(--color-text-warning)}.tb{background:var(--color-background-info);color:var(--color-text-info)}.tgr{background:var(--color-background-secondary);color:var(--color-text-secondary)}.stats{display:grid;gap:6px}.sc{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:8px 10px;flex-shrink:0}.scv{font-size:17px;font-weight:500}.scv.g{color:var(--color-text-success)}.scv.r{color:var(--color-text-danger)}.scv.a{color:var(--color-text-warning)}.scv.b{color:var(--color-text-info)}.scl{font-size:10px;color:var(--color-text-tertiary);margin-top:1px}.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.pr-row{padding:8px 12px;border-bottom:.5px solid var(--color-border-tertiary);cursor:pointer;transition:background .1s}.pr-row:last-child{border-bottom:none}.pr-row:hover{background:var(--color-background-secondary)}.pr-row.sel{background:var(--color-background-info)}.pr-hd{display:flex;align-items:center;gap:6px;margin-bottom:5px}.pr-ic{width:22px;height:22px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}.ic-b{background:var(--color-background-info);color:var(--color-text-info)}.ic-g{background:var(--color-background-success);color:var(--color-text-success)}.ic-a{background:var(--color-background-warning);color:var(--color-text-warning)}.ic-p{background:#eeedfe;color:#534ab7}.pr-name{font-size:11px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pr-desc{font-size:10px;color:var(--color-text-tertiary);margin-bottom:5px;padding-left:28px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progr{display:flex;align-items:center;gap:6px;padding-left:28px}.prog{flex:1;height:3px;background:var(--color-background-tertiary);border-radius:2px;overflow:hidden}.pf{height:100%;border-radius:2px}.prog-n{font-size:10px;color:var(--color-text-tertiary);min-width:24px;text-align:right}.titem{display:flex;align-items:flex-start;gap:6px;padding:6px 12px;border-bottom:.5px solid var(--color-border-tertiary);transition:background .1s}.titem:last-child{border-bottom:none}.titem:hover{background:var(--color-background-secondary)}.titem:hover .task-acts{opacity:1}.t-status{flex-shrink:0;margin-top:1px;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;cursor:pointer}.task-acts{opacity:0;display:flex;gap:2px;flex-shrink:0;transition:opacity .15s}.icon-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:4px;border:none;cursor:pointer;background:none;color:var(--color-text-tertiary);transition:all .1s}.icon-btn.edit:hover{background:var(--color-background-info);color:var(--color-text-info)}.icon-btn.del:hover{background:var(--color-background-danger);color:var(--color-text-danger)}.pr-row{position:relative}.pr-acts{position:absolute;top:8px;right:8px;display:flex;gap:6px;opacity:0;transition:opacity .15s}.pr-row:hover .pr-acts{opacity:1}.pr-act{font-size:10px;cursor:pointer;-webkit-user-select:none;user-select:none;background:none;border:none;padding:0;font-family:inherit}.pr-act.edit{color:var(--color-text-info)}.pr-act.del{color:var(--color-text-danger)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:300}.modal{background:var(--color-background-primary);border:.5px solid var(--color-border-secondary);border-radius:var(--border-radius-lg);width:360px;max-height:88vh;overflow-y:auto;padding:16px}.modal.wide{width:400px}.modal-t{font-size:13px;font-weight:500;margin-bottom:13px;display:flex;align-items:center;gap:7px}.field{margin-bottom:9px}.field label{font-size:10px;font-weight:500;color:var(--color-text-secondary);display:block;margin-bottom:3px;text-transform:uppercase;letter-spacing:.05em}.field input,.field select,.field textarea{width:100%;background:var(--color-background-secondary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);color:var(--color-text-primary);font-size:12px;padding:5px 8px;font-family:var(--font-sans);outline:none;transition:border-color .1s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--color-border-info)}.field textarea{resize:none;line-height:1.5}.field-r2{display:grid;grid-template-columns:1fr 1fr;gap:7px}.field-r3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}.modal-acts{display:flex;gap:6px;justify-content:flex-end;margin-top:13px}.t-status.todo{color:var(--color-border-secondary)}.t-status.inprogress{color:var(--color-text-info)}.t-status.done{color:var(--color-text-success)}.ttxt{font-size:11px;flex:1;line-height:1.4}.ttxt.dn{text-decoration:line-through;color:var(--color-text-tertiary)}.tmeta{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px;align-items:center}.chip{display:inline-flex;align-items:center;gap:2px;font-size:10px;color:var(--color-text-tertiary)}.chip.b{color:var(--color-text-info)}.chip.a{color:var(--color-text-warning)}.chip.r{color:var(--color-text-danger)}.tpri{font-size:9px;padding:1px 4px;border-radius:3px}.tpri.h{background:#fcebeb;color:#a32d2d}.tpri.m{background:#faeeda;color:#854f0b}.tpri.l{background:#eaf3de;color:#3b6d11}.t-note{font-size:10px;color:var(--color-text-tertiary);margin-top:3px;line-height:1.5;display:flex;align-items:flex-start;gap:4px;padding:3px 6px;background:var(--color-background-secondary);border-radius:3px;border-left:2px solid var(--color-border-secondary);white-space:pre-wrap;word-break:break-all}.sec-lbl{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary);padding:8px 12px 4px;display:flex;align-items:center;gap:6px}.cal-header{display:flex;align-items:center;gap:6px;flex-shrink:0}.cal-select{background:var(--color-background-secondary);border:.5px solid var(--color-border-secondary);border-radius:var(--border-radius-md);color:var(--color-text-primary);font-size:11px;padding:3px 6px;font-family:var(--font-sans);cursor:pointer;outline:none}.cal-select:focus{border-color:var(--color-border-info)}.cal-week-range{font-size:11px;color:var(--color-text-tertiary);white-space:nowrap}.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:.5px solid var(--color-border-tertiary);flex-shrink:0}.cal-dow-cell{padding:5px 0;text-align:center;font-size:9px;font-weight:500;text-transform:uppercase;color:var(--color-text-tertiary);letter-spacing:.05em}.cal-body{flex:1;min-height:0;display:flex;flex-direction:column}.cal-week{display:grid;grid-template-columns:repeat(7,1fr);flex:1;min-height:0;border-bottom:.5px solid var(--color-border-tertiary)}.cal-week:last-child{border-bottom:none}.cal-day{border-right:.5px solid var(--color-border-tertiary);padding:4px 5px;overflow:hidden;display:flex;flex-direction:column;gap:2px}.cal-day:last-child{border-right:none}.cal-day-empty{background:var(--color-background-secondary)}.cal-day-num{font-size:10px;font-weight:500;flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:50%}.cal-day-num.today{background:var(--color-text-info);color:#fff}.cal-ev{display:block;width:100%;text-align:left;padding:1px 4px;border-radius:3px;border:none;cursor:pointer;font-size:9px;font-family:var(--font-sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;flex-shrink:0}.cal-ev:hover{filter:brightness(.92)}.cal-more{font-size:9px;color:var(--color-text-tertiary);padding-left:2px}.cal-week-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;min-height:0;overflow:hidden}.cal-week-col{border-right:.5px solid var(--color-border-tertiary);display:flex;flex-direction:column;min-height:0;overflow:hidden}.cal-week-col:last-child{border-right:none}.cal-week-col-hd{padding:6px 4px 5px;border-bottom:.5px solid var(--color-border-tertiary);text-align:center;flex-shrink:0}.cal-wdow{font-size:9px;font-weight:500;text-transform:uppercase;color:var(--color-text-tertiary);letter-spacing:.05em}.cal-wdate{font-size:16px;font-weight:300;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;margin:2px auto 0;line-height:1}.cal-wdate.today{background:var(--color-text-info);color:#fff}.cal-week-events{flex:1;padding:4px 3px;display:flex;flex-direction:column;gap:3px;overflow-y:auto}.cal-week-empty{flex:1}.cal-year-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;flex:1;min-height:0;overflow-y:auto}.cal-mini-month{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:7px;cursor:pointer;transition:background .1s}.cal-mini-month:hover{background:var(--color-background-secondary)}.cal-mini-title{font-size:11px;font-weight:500;text-align:center;color:var(--color-text-secondary);margin-bottom:5px}.cal-mini-dow{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}.cal-mini-dow-cell{font-size:7px;text-align:center;color:var(--color-text-tertiary)}.cal-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.cal-mini-day{display:flex;flex-direction:column;align-items:center;padding:1px 0;gap:1px}.cal-mini-day-num{font-size:8px;width:14px;height:14px;display:flex;align-items:center;justify-content:center;border-radius:50%;line-height:1}.cal-mini-day-num.today{background:var(--color-text-info);color:#fff}.cal-mini-dots{display:flex;gap:1px;flex-wrap:wrap;justify-content:center;max-width:14px}.cal-mini-dot{width:3px;height:3px;border-radius:50%;flex-shrink:0}.ms-wrap{position:relative;display:inline-flex}.ms-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;background:var(--color-background-secondary);border:.5px solid var(--color-border-secondary);border-radius:var(--border-radius-md);color:var(--color-text-primary);font-size:11px;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;outline:none}.ms-btn:hover{background:var(--color-background-tertiary)}.ms-menu{position:absolute;top:calc(100% + 3px);left:0;z-index:200;min-width:130px;max-height:220px;overflow-y:auto;background:var(--color-background-primary);border:.5px solid var(--color-border-secondary);border-radius:var(--border-radius-md);box-shadow:0 4px 12px #0000001a;padding:3px 0}.ms-clear{width:100%;text-align:left;font-size:10px;padding:4px 10px;color:var(--color-text-tertiary);background:none;border:none;border-bottom:.5px solid var(--color-border-tertiary);cursor:pointer;font-family:var(--font-sans)}.ms-clear:hover{color:var(--color-text-primary)}.ms-item{display:flex;align-items:center;gap:7px;padding:5px 10px;cursor:pointer}.ms-item:hover{background:var(--color-background-secondary)}.ms-item input[type=checkbox]{margin:0;cursor:pointer;flex-shrink:0}.cal-day-num-lg{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:var(--color-text-secondary);flex-shrink:0}.cal-day-num-lg.today{background:var(--color-text-info);color:#fff}.cal-day-ev-card{display:flex;flex-direction:column;gap:5px;padding:8px 10px;border-radius:var(--border-radius-md);text-align:left;width:100%;border:none;cursor:pointer;transition:opacity .15s}.cal-day-ev-card:hover{opacity:.85}.placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--color-text-tertiary);text-align:center;padding:24px}.placeholder svg{width:32px;height:32px;opacity:.25}.placeholder-title{font-size:13px;color:var(--color-text-secondary);font-weight:500}.placeholder-sub{font-size:11px;line-height:1.5}.meet-date-badge{display:flex;flex-direction:column;align-items:center;width:28px;flex-shrink:0;line-height:1.1}.meet-date-m{font-size:8px;color:var(--color-text-tertiary);text-transform:uppercase}.meet-date-d{font-size:15px;font-weight:500;color:var(--color-text-primary)}.meet-decision{font-size:11px;color:var(--color-text-secondary);line-height:1.5;padding:4px 8px 4px 10px;border-left:2px solid var(--color-border-tertiary);border-radius:0 3px 3px 0}.meet-action{display:flex;align-items:center;gap:6px;font-size:11px;padding:4px 8px;border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.meet-action-txt{flex:1}.persons-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--color-background-secondary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:6px;max-height:110px;overflow-y:auto}.person-cb{display:flex;align-items:center;gap:4px;font-size:11px;cursor:pointer;padding:2px 4px;border-radius:3px;-webkit-user-select:none;user-select:none}.person-cb:hover{background:var(--color-background-tertiary)}.person-cb input{accent-color:var(--color-text-info);cursor:pointer;width:12px;height:12px;flex-shrink:0}.cli-guide{display:flex;flex-direction:column;gap:6px}.cli-guide-title{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:500;color:var(--color-text-secondary)}.cli-steps{display:flex;flex-direction:column;gap:4px}.cli-step{display:flex;gap:6px;font-size:9px;color:var(--color-text-secondary);align-items:flex-start;line-height:1.5}.cli-step-n{width:14px;height:14px;background:var(--color-background-info);color:var(--color-text-info);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:600;flex-shrink:0;margin-top:1px}.cli-code{display:block;background:var(--color-background-tertiary);border-radius:3px;padding:3px 5px;font-size:8px;font-family:monospace;color:var(--color-text-secondary);margin-top:2px;white-space:normal;word-break:break-all}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-thumb{background:var(--color-border-secondary);border-radius:3px}::-webkit-scrollbar-track{background:transparent}@keyframes fu{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fu{animation:fu .15s ease}.stg-person-row{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--color-background-secondary);border-radius:4px}
