:root{color:#172033;background:#f4f7fb;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}body{background:#f4f7fb;margin:0;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer}h1,h2{margin:0}h1{font-size:30px;line-height:1.15}h2{font-size:18px}p{line-height:1.6}.app-shell{grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:20px;max-width:100vw;min-height:100vh;padding:20px;display:grid;overflow-x:hidden}.sidebar,.workspace{align-content:start;gap:16px;min-width:0;display:grid}.workspace{overflow:hidden}.sidebar,.workspace,.panel{min-width:0}.panel{background:#fff;border:1px solid #dce4f0;border-radius:10px;padding:18px;box-shadow:0 16px 32px #1f29370f}.intro-panel{color:#fff;background:#172033}.intro-panel p{color:#c9d4e5}.eyebrow{color:#64748b;margin:0 0 6px;font-size:12px;font-weight:700}.intro-panel .eyebrow{color:#93c5fd}.hint{color:#64748b;margin:8px 0 0;font-size:12px}.project-form,.filters{gap:12px;min-width:0;margin-top:16px;display:grid}label{color:#475569;gap:7px;min-width:0;font-size:13px;font-weight:700;display:grid}input,select{color:#172033;background:#fff;border:1px solid #cbd5e1;border-radius:7px;width:100%;min-width:0;padding:10px 12px}.grid2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid}.primary-button{color:#fff;background:#2563eb;border:0;border-radius:7px;padding:11px 14px;font-weight:800}.secondary-button{color:#334155;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:7px;padding:8px 10px}.secondary-button:disabled{opacity:.4;cursor:not-allowed}.date-button-wrap{position:relative}.date-button{color:#172033;background:#fff;border:1px solid #cbd5e1;border-radius:7px;justify-content:space-between;align-items:center;width:100%;min-width:0;padding:10px 12px;font-weight:800;display:flex}.date-button span{color:#64748b}.date-button.has-value span{color:#172033}.date-input-hidden{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.color-row{max-width:100%;display:block;overflow:hidden}.auto-color-button{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;width:100%;margin:2px 0 8px;padding:10px 12px;font-size:13px;font-weight:800;display:flex}.auto-swatch{border:2px solid #fff;border-radius:50%;flex:0 0 24px;width:24px;height:24px;box-shadow:0 0 0 2px #2563eb}.manual-color-label{color:#64748b;cursor:pointer;width:100%;font-size:12px;font-weight:700}.manual-colors{flex-wrap:wrap;align-items:center;gap:9px;max-height:72px;display:flex;overflow:hidden}.swatch{border:2px solid #0000;border-radius:50%;flex:0 0 28px;width:28px;height:28px}.swatch.active{border-color:#0f172a;outline:2px solid #fff}.project-card{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:12px 1fr 28px;align-items:center;gap:10px;padding:12px;display:grid}.project-card.selected{background:#eff6ff;border-color:#2563eb}.project-card p{color:#64748b;margin:4px 0 0;font-size:12px}.project-card button{color:#94a3b8;background:0 0;border:0;font-size:20px}.project-dot{border-radius:50%;width:12px;height:12px}.tag{color:#475569;background:#e2e8f0;border-radius:999px;margin-left:4px;padding:2px 7px;font-size:11px;display:inline-block}details.month{background:#fff;border:1px solid #e2e8f0;border-radius:9px;margin-top:10px;overflow:hidden}details.month>summary{cursor:pointer;background:#f8fafc;justify-content:space-between;padding:12px 14px;font-weight:800;display:flex}.projects-inner{gap:8px;padding:10px;display:grid}.calendar-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.nav{gap:8px;display:flex}.nav button{background:#fff;border:1px solid #cbd5e1;border-radius:7px;padding:8px 10px}.calendar-band{min-width:0;max-width:100%;overflow:auto}.simple-cal{min-width:320px}.mob-cal-head{padding:4px 0 8px}.mob-cal-head b{font-size:15px}.mob-cal{border-collapse:collapse;table-layout:fixed;width:100%}.mob-cal th{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;padding:6px 2px;font-size:11px;font-weight:700}.mob-cal td{vertical-align:top;border:1px solid #e2e8f0;min-height:60px;padding:4px 2px}.mob-cal td.mob-other{color:#94a3b8;background:#f8fafc}.mob-cal td.mob-today{box-shadow:inset 3px 0 #2563eb}.mob-day{margin-bottom:2px;font-size:12px;font-weight:700}.mob-ev{color:#172033;cursor:pointer;border-left:3px solid;border-radius:3px;flex-wrap:wrap;align-items:center;gap:2px 4px;margin:2px 0;padding:3px 5px;font-size:11px;line-height:1.4;text-decoration:none;display:flex}.mob-ev-name{word-break:break-all;font-weight:700}.mob-ev-label{color:#fff;white-space:nowrap;border-radius:999px;padding:1px 5px;font-size:9px;font-weight:700;display:inline-block}.fc .fc-day-today{box-shadow:inset 3px 0 #2563eb;background:0 0!important}.fc .fc-toolbar-title{font-size:18px!important}.fc .fc-button-primary{background:#172033!important;border-color:#172033!important;border-radius:6px!important}.fc .fc-button{padding:6px 12px!important;font-size:13px!important}.fc .fc-daygrid-day-frame{min-height:120px}.fc-event{color:#172033;text-align:left;white-space:normal;font-size:12px;line-height:1.25;background:0 0!important;border:none!important;border-left:6px solid #0000!important;border-radius:6px!important;margin:2px 4px!important;padding:0!important}.fc-event.fc-event-done{color:#64748b;background:#e2e8f0!important;border-left-color:#94a3b8!important}.fc-event.fc-event-done .custom-event strong{color:#64748b}.fc-event.fc-event-done .custom-event span{color:#94a3b8}.custom-event{border-radius:6px;padding:6px}.custom-event strong{font-size:12px;display:block}.custom-event span{color:#475569;font-size:11px}.custom-event.event-done{background:#e2e8f0!important;border-left-color:#94a3b8!important}.custom-event.event-done strong{color:#64748b}.custom-event.event-done span{color:#94a3b8}.stage-tags{flex-wrap:wrap;gap:3px;margin-top:4px;display:flex}.stage-tag{color:#fff;border-radius:999px;padding:1px 5px;font-size:10px;font-weight:700;display:inline-block}.stage-tag.done{position:relative;background:#94a3b8!important}.stage-tag.done:after{content:"";pointer-events:none;border-top:2px solid #475569;position:absolute;top:50%;left:4px;right:4px;transform:translateY(-50%)}.status-dot{border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.status-todo{background:#94a3b8}.status-doing{background:#f59e0b}.status-done{background:#10b981}.detail-grid{grid-template-columns:minmax(0,1fr) minmax(260px,.55fr);align-items:start;gap:16px;display:grid}.task-panel,.reminder-panel{min-width:0;min-height:0;max-height:none;overflow-y:auto}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.launch-pill{color:#1d4ed8;white-space:nowrap;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;padding:7px 10px;font-size:13px;font-weight:700}.task-list{gap:10px;display:grid}.task-row{border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:78px minmax(0,1fr);align-items:start;gap:10px;padding:12px;display:grid}.task-row--done{color:#94a3b8;background:#f1f5f9;border-color:#cbd5e1}.task-row--done .task-date,.task-row--done .task-main span{color:#94a3b8}.task-row--done .task-date .stage-dot{opacity:.55}.task-date{color:#475569;padding-top:9px;font-weight:800}.task-main{grid-template-columns:minmax(130px,1fr) minmax(110px,140px) auto;align-items:center;gap:8px;min-width:0;display:grid}.task-main span{color:#64748b;grid-column:1/-1;font-size:13px}.task-main button{white-space:nowrap}.stage-dot{border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.reminder-card,.empty-state{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-top:10px;padding:12px}.reminder-card p{color:#64748b;margin:5px 0 0;font-size:13px}.reminder-card.urgent{background:#fffbeb;border-color:#fcd34d}.reminder-label{color:#94a3b8;margin:0 0 6px;font-size:12px;font-weight:700}@media (width<=1500px){.app-shell{grid-template-columns:1fr}.workspace{overflow:visible}.detail-grid{grid-template-columns:1fr}.task-panel,.reminder-panel{max-height:none}}@media (width<=760px){.app-shell{padding:12px}.task-row,.task-main{grid-template-columns:1fr}.section-heading,.calendar-head{flex-direction:column;align-items:flex-start}.grid2{grid-template-columns:1fr}.fc .fc-toolbar{flex-wrap:wrap;gap:6px}.fc .fc-toolbar-title{font-size:15px!important}.fc .fc-button{padding:4px 8px!important;font-size:12px!important}}
