*{box-sizing:border-box;margin:0;padding:0}:root{--grad-accent: linear-gradient(135deg, #2563eb, #06b6d4);--brand-yellow: #facc15;--header-h: 52px;--c-bg: #f1f5f9;--c-surface: #ffffff;--c-surface-2: #f8fafc;--c-lv0-bg: #eef2f7;--c-lv1-bg: #f8fafc;--c-field: #ffffff;--c-field-focus: #ffffff;--c-sel: #dbeafe;--c-border: #e2e8f0;--c-border-strong: #cbd5e1;--c-grid-line: #f1f5f9;--c-text: #1e293b;--c-text-strong: #0f172a;--c-sub: #64748b;--c-faint: #94a3b8;--c-accent: #2563eb;--c-accent-soft: #eff6ff;--c-accent-border: #93c5fd;--c-hover: #eff6ff;--c-header: #0f172a;--c-header-hover: #1e293b;--c-chart-bg: #ffffff;--c-chart-head: #f8fafc;--c-chart-holiday: #f1f5f9;--c-chart-monthline: #e2e8f0;--c-chart-rowline: #f1f5f9;--c-chart-axis: #94a3b8;--c-chart-text: #334155;--c-chart-subtext: #64748b;--c-chart-sel: #dbeafe;--c-bar-track: #eff6ff;--c-bar-track-border: #93c5fd;--c-parent-track: #64748b;--c-bar-lv0: #7c3aed;--c-bar-lv1: #ea580c;--c-row-done: #d9dfe8;--c-ina-outline: #ffffff;--fz-green: #dcfce7;--fz-yellow: #fef9c3;--fz-red: #fee2e2;--shadow: rgba(15, 23, 42, .08);--accent: var(--c-accent);--border: var(--c-border);--text: var(--c-text);--sub: var(--c-sub)}:root[data-theme=dark]{--c-bg: #0b1220;--c-surface: #131c2e;--c-surface-2: #1a2436;--c-lv0-bg: #1f2a3d;--c-lv1-bg: #172033;--c-field: #0e1626;--c-field-focus: #1c2740;--c-sel: #1e3a5f;--c-border: #2b3a52;--c-border-strong: #3b4d68;--c-grid-line: #223049;--c-text: #e2e8f0;--c-text-strong: #f8fafc;--c-sub: #94a3b8;--c-faint: #64748b;--c-accent: #3b82f6;--c-accent-soft: #1e293b;--c-accent-border: #3b5a86;--c-hover: #1e293b;--c-header: #060b16;--c-header-hover: #1e293b;--c-chart-bg: #131c2e;--c-chart-head: #1a2436;--c-chart-holiday: #1a2436;--c-chart-monthline: #2b3a52;--c-chart-rowline: #223049;--c-chart-axis: #64748b;--c-chart-text: #cbd5e1;--c-chart-subtext: #94a3b8;--c-chart-sel: #1e3a5f;--c-bar-track: #17233b;--c-bar-track-border: #3b5a86;--c-parent-track: #475569;--c-bar-lv0: #8b5cf6;--c-bar-lv1: #fb923c;--c-row-done: #26324a;--c-ina-outline: #f8fafc;--fz-green: rgba(34, 197, 94, .13);--fz-yellow: rgba(250, 204, 21, .11);--fz-red: rgba(239, 68, 68, .13);--shadow: rgba(0, 0, 0, .4)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable Text,Segoe UI,Hiragino Sans,Noto Sans JP,Yu Gothic UI,Meiryo,sans-serif;color:var(--c-text);background:radial-gradient(1100px 500px at 85% -10%,rgba(37,99,235,.07),transparent 60%),radial-gradient(900px 420px at -10% 110%,rgba(6,182,212,.06),transparent 60%),var(--c-bg);background-attachment:fixed;font-size:14px;-webkit-font-smoothing:antialiased}:root[data-theme=dark] body{background:radial-gradient(1100px 500px at 85% -10%,rgba(37,99,235,.18),transparent 60%),radial-gradient(900px 420px at -10% 110%,rgba(6,182,212,.12),transparent 60%),var(--c-bg);background-attachment:fixed}*{scrollbar-width:thin;scrollbar-color:var(--c-border-strong) transparent}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:5px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}button{font:inherit;padding:4px 11px;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);cursor:pointer;color:var(--c-text);transition:background .12s,border-color .12s,box-shadow .12s}button:hover:not(:disabled){background:var(--c-hover);border-color:var(--c-accent-border);box-shadow:0 1px 4px var(--shadow)}button:disabled{opacity:.45;cursor:default}button.danger{color:#dc2626;border-color:#fca5a5}button.danger:hover:not(:disabled){background:#dc26261a}input,select,textarea{font:inherit;border:1px solid var(--c-border);border-radius:8px;padding:3px 8px;background:var(--c-field);color:var(--c-text)}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--c-accent);outline-offset:1px}:root[data-theme=dark] input[type=date],:root[data-theme=dark] input[type=number]{color-scheme:dark}.app-header{display:flex;align-items:center;gap:14px;height:var(--header-h);padding:0 16px;background:linear-gradient(90deg,#0b1220,#0f1b33 55%,#0b1220);border-bottom:1px solid rgba(56,189,248,.18);color:#fff}.brand{display:flex;align-items:center;gap:9px;white-space:nowrap;-webkit-user-select:none;user-select:none}.brand-mark{width:27px;height:27px;filter:drop-shadow(0 2px 6px rgba(37,99,235,.55));flex-shrink:0}.brand-name{font-size:17px;font-weight:800;letter-spacing:.09em;background:linear-gradient(90deg,#fff 30%,#7dd3fc);-webkit-background-clip:text;background-clip:text;color:transparent}.project-select{min-width:180px;background:#ffffff12;border-color:#ffffff24;color:#e2e8f0;border-radius:8px}.project-select option{color:#1e293b}.tabs{display:flex;gap:2px;background:#ffffff0f;border-radius:999px;padding:3px}.tabs button{background:transparent;color:#94a3b8;border:none;padding:5px 15px;border-radius:999px;font-weight:600;font-size:13px}.tabs button:hover{background:#ffffff14;color:#fff}.tabs button.active{background:var(--grad-accent);color:#fff;box-shadow:0 2px 8px #2563eb73}.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}.save-status{font-size:12px;color:#94a3b8;white-space:nowrap;display:flex;align-items:center;gap:4px}.save-status .dot{width:7px;height:7px;border-radius:50%;background:#4ade80}.save-status.saving .dot{background:#fbbf24}.local-badge{font-size:12px;color:#94a3b8;white-space:nowrap}.icon-btn{background:var(--c-header-hover);color:#cbd5e1;border:1px solid #334155;padding:4px 9px}.icon-btn:hover:not(:disabled){background:#334155;color:#fff;border-color:#475569}.md-saved{color:#4ade80;font-weight:700}.backup-banner{display:flex;align-items:center;gap:12px;padding:8px 16px;background:#fffbeb;border-bottom:1px solid #fde68a;color:#92400e;font-size:13px}:root[data-theme=dark] .backup-banner{background:#2a2410;border-color:#57430f;color:#fcd34d}.backup-banner button{padding:3px 10px}.backup-banner .close{margin-left:auto;background:transparent;border:none;color:inherit;font-size:16px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;background:transparent;border-bottom:1px solid var(--c-border);align-items:center}.tb-group{display:flex;align-items:center;gap:3px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:11px;padding:3px 7px;box-shadow:0 1px 2px var(--shadow)}.tb-group>button,.tb-menu-btn{border-color:transparent;background:transparent;padding:4px 9px;border-radius:8px}.tb-group>button:hover:not(:disabled),.tb-menu-btn:hover{background:var(--c-hover);border-color:transparent;box-shadow:none}.primary-btn,.tb-group>button.primary-btn{background:var(--grad-accent);color:#fff;font-weight:600;border:none}.primary-btn:hover:not(:disabled),.tb-group>button.primary-btn:hover:not(:disabled){background:var(--grad-accent);filter:brightness(1.1);box-shadow:0 2px 8px #2563eb66}.tb-group>button.add-lv0,.tb-group>button.add-lv1{color:#fff;font-weight:600;border:none}.tb-group>button.add-lv0{background:var(--c-bar-lv0)}.tb-group>button.add-lv1{background:var(--c-bar-lv1)}.tb-group>button.add-lv0:hover:not(:disabled),.tb-group>button.add-lv1:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 2px 8px var(--shadow);color:#fff}.tb-group>button.add-lv0:hover:not(:disabled){background:var(--c-bar-lv0)}.tb-group>button.add-lv1:hover:not(:disabled){background:var(--c-bar-lv1)}.tb-label{font-size:12px;color:var(--c-sub);display:flex;align-items:center;gap:4px;white-space:nowrap}.shift-n{width:48px;text-align:center}.tb-levels{gap:2px}.lvl-btn{padding:4px 9px;font-size:12.5px}.lvl-btn.on{background:var(--c-accent-soft);border-color:var(--c-accent-border);color:var(--c-accent);font-weight:700}.asof-group .tb-label{font-weight:700;color:var(--c-text)}.asof-group.past{background:#fffbeb;border-radius:6px;padding:2px 6px}:root[data-theme=dark] .asof-group.past{background:#2a2410}.asof-flag{font-size:11px;color:#b45309;font-weight:700;background:#fde68a;border-radius:4px;padding:0 5px}:root[data-theme=dark] .asof-flag{color:#fcd34d;background:#57430f}.asof-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--c-surface);border:1px solid var(--c-border);border-radius:10px;padding:10px 14px;margin-bottom:16px}.asof-bar.past{border-color:#fbbf24;background:#fffbeb}:root[data-theme=dark] .asof-bar.past{background:#241f10;border-color:#57430f}.asof-label{font-weight:700;color:var(--c-text-strong)}.asof-note{font-size:12px;color:var(--c-sub)}.asof-bar.past .asof-note{color:#b45309}:root[data-theme=dark] .asof-bar.past .asof-note{color:#fcd34d}.tb-menu{position:relative}.tb-menu-btn{display:flex;align-items:center;gap:4px}.tb-menu-panel{position:absolute;top:calc(100% + 6px);right:0;z-index:30;background:var(--c-surface);border:1px solid var(--c-border);border-radius:8px;box-shadow:0 8px 24px var(--shadow);padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-width:210px}.tb-menu-panel.align-left{right:auto;left:0}.tb-menu-panel .menu-row{display:flex;align-items:center;gap:6px;justify-content:space-between}.tb-menu-panel .menu-row>span{font-size:12px;color:var(--c-sub);white-space:nowrap}.menu-legend{display:flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:320px;margin-top:8px;padding-top:8px;border-top:1px solid var(--c-border);font-size:12px;color:var(--c-sub)}.menu-legend>span{display:inline-flex;align-items:center;gap:5px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:999px;padding:2px 10px}.menu-legend i{display:inline-block;vertical-align:middle}.menu-legend-hint{width:100%;font-size:11px;color:var(--c-sub)}.lg-bar{width:18px;height:10px;background:#eff6ff;border:1px solid #93c5fd;border-radius:2px}.lg-prog{width:18px;height:10px;background:#3b82f6;border-radius:2px}.lg-dl{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:8px solid #dc2626}.lg-today{width:2px;height:14px;background:#f59e0b}.lg-ina{width:18px;height:4px;background:#dc2626;border:1px solid var(--c-ina-outline);border-radius:2px}.lg-ovl{width:18px;height:0;border-top:2px dashed #8b5cf6}.lg-crit{width:18px;height:10px;background:#eff6ff;border:2px solid #dc2626;border-radius:2px}.lg-ms{width:10px;height:10px;background:#f8fafc;border:2px solid #334155;transform:rotate(45deg)}.lg-over{width:18px;height:10px;background:#ef4444;opacity:.85;border-radius:2px}.lg-early{width:18px;height:10px;background:#10b981;opacity:.85;border-radius:2px}.lg-pdl{width:2px;height:14px;background:repeating-linear-gradient(180deg,#dc2626 0 3px,transparent 3px 5px)}.lg-lv0{width:18px;height:6px;background:var(--c-bar-lv0);border-radius:2px}.lg-lv1{width:18px;height:6px;background:var(--c-bar-lv1);border-radius:2px}.lg-baseline{width:18px;height:4px;background:var(--c-chart-axis);border-radius:2px;opacity:.8}.wbs-view{display:flex;flex-direction:column;height:calc(100vh - var(--header-h))}.sheet-wrap{flex:1;min-height:0;position:relative;display:flex}.sheet{flex:1;overflow:auto;background:var(--c-surface)}.zoom-fab{position:absolute;right:18px;bottom:14px;z-index:20;display:flex;align-items:center;gap:1px;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:999px;box-shadow:0 4px 16px var(--shadow);padding:2px 4px}.zoom-fab button{border:none;background:transparent;border-radius:999px;padding:4px 10px;font-size:14px;line-height:1}.zoom-fab button:hover:not(:disabled){background:var(--c-hover);box-shadow:none}.zoom-fab .zoom-pct{min-width:48px;text-align:center;font-size:12px;color:var(--c-sub)}.zoom-fab .zoom-fit{font-size:12px;font-weight:600;color:var(--c-accent);border-left:1px solid var(--c-border);border-radius:0 999px 999px 0}.sheet-inner{display:flex;width:max-content;align-items:flex-start}.grid{position:sticky;left:0;z-index:5;background:var(--c-surface);box-shadow:2px 0 4px var(--shadow)}.grid-head{position:sticky;top:0;z-index:6;display:grid;align-items:center;background:linear-gradient(180deg,var(--c-surface-2),var(--c-surface));border-bottom:2px solid var(--c-accent);font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--c-sub)}.grid-head>div{padding:0 6px;border-right:1px solid var(--c-border);text-align:center}.grid-row{display:grid;align-items:center;border-bottom:1px solid var(--c-grid-line)}.grid-row>div{height:100%;display:flex;align-items:center;border-right:1px solid var(--c-grid-line);overflow:hidden}.grid-row input{width:100%;height:100%;border:none;border-radius:0;background:transparent;padding:0 6px;font-size:13px;color:var(--c-text)}.grid-row input:focus{outline:2px solid var(--c-accent);outline-offset:-2px;background:var(--c-field-focus)}.grid-row input[type=date]{font-size:12px;padding:0 2px}.grid-row input:disabled{color:var(--c-sub);background:transparent}.grid-row.lv0{background:var(--c-lv0-bg);font-weight:700}.grid-row.lv1{background:var(--c-lv1-bg)}.grid-row.sel{background:var(--c-sel)!important}.grid-row.late .c-name input{color:#ef4444}.grid-row.done{opacity:.62;background:var(--c-row-done)}.grid-row.done .c-name input{color:var(--c-faint);text-decoration:line-through}.grid-row.done.late .c-name input{color:var(--c-faint)}.grid-row.cur .c-wbs{box-shadow:inset 3px 0 0 var(--c-accent)}.grid-row.crit .c-wbs{box-shadow:inset 3px 0 #dc2626}.c-deps input{font-size:11px}.dep-warn{color:#d97706;font-size:11px;flex-shrink:0}.c-ms{justify-content:center}.replay-slider{width:110px}.search-box{width:140px}.sub-head{font-size:12px;color:var(--c-sub);margin:10px 0 6px}.pct-input{width:64px;text-align:right}.c-wbs{justify-content:center;gap:2px;font-size:11px;color:var(--c-sub);cursor:grab;-webkit-user-select:none;user-select:none}.c-wbs:active{cursor:grabbing}.c-wbs:hover{background:var(--c-hover)}.drag-grip{color:var(--c-faint);font-size:10px;opacity:0}.c-wbs:hover .drag-grip{opacity:1}.grid-row.dragging{opacity:.4}.grid-row.drop-target{box-shadow:inset 0 0 0 2px var(--c-accent);background:var(--c-accent-soft)!important}.c-name{gap:0;position:relative}.has-detail{color:var(--c-accent);font-size:8px;flex-shrink:0;margin:0 2px}.detail-btn{border:none;background:transparent;color:var(--c-faint);padding:0 4px;font-size:13px;flex-shrink:0;opacity:0;cursor:pointer}.c-name:hover .detail-btn,.grid-row.sel .detail-btn{opacity:1}.detail-btn:hover{color:var(--c-accent);background:transparent}.task-tooltip{position:fixed;z-index:90;width:300px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:8px;box-shadow:0 8px 26px var(--shadow);padding:10px 12px;font-size:12px;pointer-events:none}.tt-title{font-weight:700;font-size:13px;color:var(--c-text-strong);margin-bottom:6px;display:flex;gap:6px;align-items:baseline}.tt-wbs{color:var(--c-sub);font-size:11px;font-weight:400}.task-tooltip table{width:100%;border-collapse:collapse}.task-tooltip th{text-align:left;color:var(--c-sub);font-weight:400;white-space:nowrap;padding:1px 8px 1px 0;vertical-align:top;width:64px}.task-tooltip td{color:var(--c-text);padding:1px 0}.tt-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.tt-tags span{background:var(--c-accent-soft);color:var(--c-accent);border-radius:4px;padding:0 5px;font-size:11px}.tt-note{margin-top:6px;padding-top:6px;border-top:1px solid var(--c-grid-line);color:var(--c-sub);line-height:1.5;white-space:pre-wrap}.tt-links{margin-top:6px;color:var(--c-sub)}.tt-hint{margin-top:8px;color:var(--c-accent);font-size:11px}.detail-modal{background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;box-shadow:0 20px 50px #00000059;width:100%;max-width:520px;max-height:88vh;display:flex;flex-direction:column}.detail-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--c-border)}.detail-head>div{display:flex;align-items:center;gap:8px}.detail-wbs{font-size:13px;color:var(--c-sub);font-weight:700}.detail-kind{font-size:12px;color:var(--c-faint)}.detail-close{border:none;background:transparent;font-size:22px;line-height:1;color:var(--c-sub);padding:0 4px}.detail-body{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.detail-field{display:flex;flex-direction:column;gap:4px}.detail-field>span{font-size:12px;color:var(--c-sub)}.detail-field input,.detail-field textarea{width:100%}.detail-field textarea{resize:vertical;font-family:inherit}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.detail-check{flex-direction:row;align-items:center;gap:8px}.detail-check input{width:auto}.tag-list{display:flex;flex-wrap:wrap;gap:5px}.tag-chip{background:var(--c-accent-soft);color:var(--c-accent);border-radius:5px;padding:1px 7px;font-size:12px}.link-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.link-row .link-label{width:30%}.link-row .link-url{flex:1}.link-row a{color:var(--c-accent);text-decoration:none;padding:0 2px}.link-row button{border:none;background:transparent;color:var(--c-sub);padding:0 4px}.link-add{align-self:flex-start;font-size:12px}.detail-meta{display:flex;flex-wrap:wrap;gap:8px 20px;padding-top:12px;border-top:1px solid var(--c-border);font-size:12px}.detail-meta>div{display:flex;flex-direction:column;gap:2px}.detail-meta span{color:var(--c-sub)}.detail-meta b{color:var(--c-text)}.tgl{border:none;background:transparent;padding:0 2px;font-size:11px;color:var(--c-sub);width:16px;flex-shrink:0}.tgl-sp{width:16px;flex-shrink:0}.c-prog input{text-align:right}.prog-ro{width:100%;text-align:right;padding:0 6px;color:var(--c-sub);font-size:13px}.c-yobi{justify-content:flex-end;padding:0 6px;font-size:12px}.yobi-ok{color:#16a34a}.yobi-warn{color:#d97706;font-weight:700}.yobi-bad{color:#ef4444;font-weight:700}:root[data-theme=dark] .yobi-ok{color:#4ade80}.chip{font-size:11px;padding:1px 7px;border-radius:9px;margin:0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}.st-late{background:#fee2e2;color:#b91c1c}.st-ok{background:#dcfce7;color:#15803d}.st-done{background:#e2e8f0;color:#475569}.st-todo{background:#dbeafe;color:#1d4ed8}.st-none{background:#f1f5f9;color:#94a3b8}.gantt{position:relative}.gantt-head{position:sticky;top:0;z-index:4}.gantt svg{touch-action:none}.dashboard,.settings{padding:16px;overflow:auto;height:calc(100vh - var(--header-h))}.cards{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:14px;padding:16px 18px;min-width:320px;max-width:640px;box-shadow:0 1px 2px var(--shadow),0 8px 24px -18px var(--shadow)}.card h3{font-size:13.5px;font-weight:700;letter-spacing:.02em;margin-bottom:12px;color:var(--c-text-strong);display:flex;align-items:center;gap:6px}.card h3:before{content:"";width:3px;height:14px;border-radius:2px;background:var(--grad-accent)}.stat-card .big-num{font-size:44px;font-weight:800;background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent}.bar-bg{height:10px;background:var(--c-border);border-radius:5px;overflow:hidden;margin:8px 0}.bar-fg{height:100%;background:var(--c-accent)}.stat-sub{font-size:12px;color:var(--c-sub)}.fever{max-width:100%;height:auto}.fever-stats{font-size:13px;color:var(--c-sub);display:flex;flex-direction:column;gap:4px;margin-top:6px}.fever-stats b{color:var(--c-text)}.card table{border-collapse:collapse;width:100%;font-size:13px}.card th,.card td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--c-grid-line)}.card th{color:var(--c-sub);font-size:12px;font-weight:400}.empty{color:var(--c-faint);font-size:13px}.form-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.form-row label{min-width:110px;font-size:13px;color:var(--c-sub)}.hint{font-size:12px;color:var(--c-faint)}.holiday-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px}.holiday-list li{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:6px;padding:2px 4px 2px 8px;font-size:12px;display:flex;align-items:center;gap:4px}.holiday-list button{border:none;padding:0 4px;background:transparent;color:var(--c-sub)}.report-text{width:100%;font-family:Consolas,Courier New,monospace;font-size:12px;border:1px solid var(--c-border);border-radius:6px;padding:8px;resize:vertical;background:var(--c-surface-2);color:var(--c-text);margin-bottom:8px}.card-wide{max-width:900px}.heatmap-scroll{overflow-x:auto}.heatmap{border-collapse:collapse}.heatmap th{font-size:10px;color:var(--c-sub);font-weight:400;padding:0 1px 4px;text-align:left;white-space:nowrap}.heatmap td{padding:1px;border:none}.hm-name{font-size:12px;padding-right:8px!important;white-space:nowrap}.hm-cell{width:16px;height:16px;border-radius:3px}.related-apps ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px 16px}.related-apps a{color:var(--c-accent);font-size:13px}.ad-banner{width:100%;max-width:960px;margin:8px auto;text-align:center}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:16px}.dialog{background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;box-shadow:0 20px 50px #0000004d;max-width:440px;width:100%;padding:20px 22px}.dialog-title{font-size:15px;font-weight:700;color:var(--c-text-strong);margin-bottom:8px}.dialog-msg{font-size:13.5px;color:var(--c-text);white-space:pre-wrap;line-height:1.6;max-height:50vh;overflow:auto}.dialog-input{width:100%;margin-top:12px;padding:6px 10px;font-size:14px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.dialog-actions button{padding:6px 16px}.dialog-actions .primary{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.dialog-actions .primary:hover:not(:disabled){filter:brightness(1.08)}.dialog-actions .primary.danger{background:#dc2626;border-color:#dc2626}#seo-content{background:var(--c-bg);border-top:1px solid var(--c-border);padding:40px 20px 64px;color:var(--c-text)}.seo-inner{max-width:820px;margin:0 auto;line-height:1.8}.seo-inner h1{font-size:22px;margin-bottom:16px;color:var(--c-text-strong)}.seo-inner h2{font-size:18px;margin:28px 0 12px;color:var(--c-text-strong)}.seo-inner h3{font-size:15px;margin:18px 0 6px}.seo-inner p{margin-bottom:12px;color:var(--c-sub)}.seo-inner ul{margin:0 0 12px 20px;color:var(--c-sub)}.seo-inner li{margin-bottom:6px}.seo-inner strong{color:var(--c-text)}.seo-cta{margin-top:28px;font-size:12px;color:var(--c-faint)}.resched-badge{background:#dc2626;color:#fff;border-radius:999px;font-size:10.5px;font-weight:700;padding:0 6px;margin-left:5px}.help-table{border-collapse:collapse;width:100%;font-size:13px;margin-bottom:6px}.help-table th{text-align:left;white-space:nowrap;padding:4px 14px 4px 0;font-weight:400;color:var(--c-text);vertical-align:top}.help-table td{color:var(--c-sub);padding:4px 0}.help-table kbd{background:var(--c-surface-2);border:1px solid var(--c-border-strong);border-bottom-width:2px;border-radius:5px;padding:1px 7px;font-size:12px;font-family:inherit}.welcome{max-width:560px}.welcome-head{display:flex;gap:14px;align-items:center;margin-bottom:6px}.welcome-mark{width:52px;height:52px;flex-shrink:0;filter:drop-shadow(0 3px 10px rgba(37,99,235,.4))}.welcome-head h2{font-size:22px;letter-spacing:.08em;background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent}.welcome-head p{font-size:13px;color:var(--c-sub);margin-top:2px}.welcome-options{display:flex;flex-direction:column;gap:8px}.welcome-opt{display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;text-align:left;gap:0 10px;padding:10px 14px;border-radius:10px}.welcome-opt .wo-icon{grid-row:1 / span 2;font-size:22px;align-self:center}.welcome-opt b{color:var(--c-text-strong)}.welcome-opt span:last-child{font-size:12px;color:var(--c-sub)}.welcome-hint{text-align:center;margin-top:4px}.np-opt.selected{border-color:var(--c-accent);background:var(--c-accent-soft);box-shadow:inset 0 0 0 1px var(--c-accent)}.guide-toc{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.guide-toc button{border-radius:999px;font-size:12.5px;padding:4px 12px}.guide-cards{max-width:860px}.guide-card{min-width:100%;max-width:860px;scroll-margin-top:12px}.guide-intro{font-size:13px;color:var(--c-sub);line-height:1.7;margin-bottom:10px}.guide-card .help-table th{width:150px;color:var(--c-text-strong);font-weight:600}.guide-card .help-table td{line-height:1.7}.guide-foot{padding:4px 2px 24px}.crash-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.crash-card{max-width:480px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:14px;padding:28px;box-shadow:0 8px 30px var(--shadow)}.crash-card h1{font-size:18px;margin-bottom:12px;color:var(--c-text-strong)}.crash-card p{font-size:14px;line-height:1.7;color:var(--c-sub);margin-bottom:16px}.crash-card p b{color:var(--c-text)}.crash-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.crash-card details{font-size:12px;color:var(--c-faint)}.crash-card pre{margin-top:8px;padding:10px;background:var(--c-surface-2);border-radius:8px;overflow:auto;max-height:200px;font-size:11px}.risk-view{padding:16px;overflow:auto;height:calc(100vh - var(--header-h))}.risk-head{display:flex;align-items:center;gap:16px;margin-bottom:16px}.risk-head h2{font-size:18px;color:var(--c-text-strong)}.rk-low{background:#dcfce7;color:#15803d}.rk-mid{background:#fef9c3;color:#a16207}.rk-high{background:#fee2e2;color:#b91c1c}:root[data-theme=dark] .rk-low{background:#14331f;color:#4ade80}:root[data-theme=dark] .rk-mid{background:#332b0e;color:#fcd34d}:root[data-theme=dark] .rk-high{background:#3a1616;color:#fca5a5}.risk-matrix{border-collapse:collapse;width:100%}.risk-matrix th{font-size:12px;color:var(--c-sub);padding:4px 6px;font-weight:400}.rm-axis{color:var(--c-text)!important;font-weight:700!important}.rm-vert{writing-mode:vertical-rl;white-space:nowrap}.rm-row{font-weight:700!important;color:var(--c-text)!important}.rm-cell{border:2px solid var(--c-surface);vertical-align:top;padding:4px;min-width:92px;height:58px}.rm-chip{display:block;width:100%;text-align:left;border:none;background:#ffffff8c;border-radius:4px;padding:2px 6px;margin-bottom:3px;font-size:11px;color:#1e293b;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rm-chip:hover{background:#ffffffe6}.risk-table{border-collapse:collapse;width:100%;font-size:13px}.risk-table th,.risk-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--c-grid-line)}.risk-table th{color:var(--c-sub);font-size:12px;font-weight:400}.risk-row{cursor:pointer}.risk-row:hover{background:var(--c-hover)}.rk-title{font-weight:700}.rk-task{color:var(--c-sub);font-size:12px}.rk-del{border:none;background:transparent;color:var(--c-sub);padding:0 4px}.sev-badge{border-radius:6px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}.rk-watch{background:#dbeafe;color:#1d4ed8}.rk-acting{background:#fef9c3;color:#a16207}.rk-open{background:#fee2e2;color:#b91c1c}.rk-closed{background:#e2e8f0;color:#475569}.risk-linked{font-size:12px;color:var(--c-sub);background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:6px;padding:6px 10px}.risk-linked b{color:var(--c-text)}.rk-crit{color:#dc2626;font-weight:700}.period-pick{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--c-sub);white-space:nowrap}.period-pick input[type=date]{font-size:11px;padding:1px 2px;width:118px}.period-pick.on{background:var(--c-accent-soft);border:1px solid var(--c-accent-border);border-radius:6px;padding:1px 4px}.period-clear{border:none;background:transparent;color:var(--c-sub);padding:0 2px;cursor:pointer}.load-card{max-width:1200px}.load-help{margin-bottom:8px;font-size:12px;color:var(--c-sub)}.load-help summary{cursor:pointer;color:var(--c-accent);-webkit-user-select:none;user-select:none}.load-help ul{margin:6px 0 2px 18px;line-height:1.8}.load-opts{align-items:center;gap:14px;flex-wrap:wrap}.load-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--c-sub)}.ld-scale{display:inline-flex;gap:2px}.load-table.scale-week,.load-table.scale-month{width:100%}.load-table.scale-week .ld-cell{min-width:34px}.load-table.scale-month .ld-cell{min-width:52px}.ld-lg{display:inline-block;width:12px;height:12px;border-radius:3px}.load-table{border-collapse:separate;border-spacing:1px}.load-table th{text-align:center}.ld-name,.ld-sum{position:sticky;background:var(--c-surface);z-index:2;box-sizing:border-box}.ld-name{left:0;width:190px;min-width:190px;max-width:190px}.ld-sum{left:192px;min-width:84px;padding-right:8px!important}.ld-head{z-index:3}.ld-name-line{display:flex;align-items:center;gap:3px;font-size:12px;white-space:nowrap}.ld-name-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.ld-del{border:none;background:transparent;color:var(--c-sub);padding:0 4px;cursor:pointer}.ld-headcount{display:inline-flex;align-items:center;gap:2px}.ld-headcount input{width:36px;font-size:11px;padding:1px 2px}.ld-headcount input,.ld-step input{background:transparent;border-color:transparent}.ld-headcount input:hover,.ld-headcount input:focus,.ld-step input:hover,.ld-step input:focus{background:var(--c-field);border-color:var(--c-border-strong)}.ld-unit{font-size:11px;color:var(--c-sub);align-self:center}.ld-toggle{border:none;background:transparent;color:var(--c-sub);cursor:pointer;padding:0 2px;font-size:10px}.ld-step{display:flex;gap:3px;align-items:center;margin:2px 0 0 8px}.ld-step input[type=date]{font-size:10px;padding:0 2px;width:104px}.ld-step input[type=number]{width:36px;font-size:11px;padding:1px 2px}.ld-add-step{border:1px solid transparent;border-radius:4px;background:transparent;color:var(--c-faint);font-size:11px;line-height:1.2;padding:0 4px;cursor:pointer}.ld-add-step:hover{border-color:var(--c-accent-border);color:var(--c-accent)}.ld-subrow .ld-cell{height:15px}.ld-cell.ld-task{background:transparent}.ld-sub-name .ld-sub-label{display:block;padding-left:16px;font-size:11px;color:var(--c-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ld-sub-sum{font-size:10px;color:var(--c-sub);white-space:nowrap}.ld-sum .chip{display:inline-block;margin:1px 2px 1px 0;white-space:nowrap}.ld-total{font-size:10px;color:var(--c-sub);white-space:nowrap}.ld-grand{margin-left:auto;font-size:12px;font-weight:600;color:var(--c-text);white-space:nowrap}.ld-graph-row td{vertical-align:bottom;border-bottom:6px solid transparent}.ld-graph-cell{padding:0 1px}.ld-gwrap{position:relative;display:flex;flex-direction:column-reverse;justify-content:flex-start}.ld-gseg{width:100%;border-radius:1px 1px 0 0;opacity:.85}.ld-gcap{position:absolute;left:-1px;right:-1px;border-top:2px dashed #dc2626}.ld-graph-axis{vertical-align:bottom}.ld-graph-ylabel{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;height:132px;padding-right:6px;font-size:10px;color:var(--c-faint)}.ld-graph-note{font-size:10px;color:var(--c-faint)}.ld-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.ld-footer td{border-top:6px solid transparent;font-weight:600}.ld-footer .ld-name{font-size:12px}.ld-footer .ld-sum{font-size:11px;white-space:nowrap}.ld-footer .ld-cell.ld-fcell{background:var(--c-surface-2);color:var(--c-text)}.ld-chip-under{background:var(--c-ld-under);color:var(--c-ld-under-text)}.ld-main td{border-top:6px solid transparent}.ld-cell{min-width:22px;height:20px;text-align:center;font-size:10px;border-radius:3px;color:var(--c-ld-cell-text);background:var(--c-ld-free)}.ld-cell.ld-over,.ld-lg.ld-over{background:var(--c-ld-over);color:var(--c-ld-over-text);font-weight:700}.ld-cell.ld-part{background:var(--c-ld-part)}.ld-cell.ld-under,.ld-lg.ld-under{background:var(--c-ld-under);color:var(--c-ld-under-text)}.ld-cell.ld-free{color:transparent}.ld-cell.ld-past{background:var(--c-ld-free);color:var(--c-faint)}.ld-subrow .ld-cell.ld-editable{cursor:pointer}.ld-subrow .ld-cell.ld-editable.in,.ld-subrow:hover .ld-cell.ld-editable{box-shadow:inset 0 0 0 1px var(--c-border)}.ld-subrow .ld-cell.ld-editable.in{background:var(--c-field)}.ld-subrow .ld-cell.ld-editable:hover{box-shadow:inset 0 0 0 1px var(--c-accent)}.ld-subrow .ld-cell.ld-task.auto{color:var(--c-faint)}.ld-subrow .ld-cell.ld-task.on{background:var(--c-accent-soft);color:var(--c-accent)}.ld-subrow .ld-cell.ld-task.out{background:var(--fz-red);color:var(--c-ld-alert-over-text)}.ld-lg.ld-on{background:var(--c-accent-soft);border:1px solid var(--c-accent-border)}.ld-lg.ld-out{background:var(--fz-red);border:1px solid var(--c-border-strong)}.ld-cell-input{width:30px;font-size:10px;padding:0 1px;border:1px solid var(--c-accent);border-radius:2px}th.ld-today{color:var(--c-accent);font-weight:700}td.ld-today{outline:2px solid var(--c-accent);outline-offset:-2px}:root{--c-ld-over: #ef4444;--c-ld-over-text: #ffffff;--c-ld-part: #eef2f7;--c-ld-under: #fde68a;--c-ld-under-text: #92400e;--c-ld-free: var(--c-grid-line);--c-ld-cell-text: #334155;--c-ld-alert-over-text: #b91c1c}:root[data-theme=dark]{--c-ld-over: #dc2626;--c-ld-over-text: #fee2e2;--c-ld-part: #2a3650;--c-ld-under: #4a3a10;--c-ld-under-text: #fcd34d;--c-ld-free: var(--c-grid-line);--c-ld-cell-text: #cbd5e1;--c-ld-alert-over-text: #fca5a5}@media(max-width:768px){.app-header{flex-wrap:wrap;height:auto;min-height:var(--header-h);padding:8px 10px;gap:6px 10px}.brand-name{font-size:15px}.project-select{min-width:0;flex:1}.tabs{order:5;width:100%;justify-content:space-between}.tabs button{padding:5px 10px;font-size:12px;flex:1}.header-right{gap:6px}.local-badge,.save-status{display:none}.wbs-view,.dashboard,.settings,.risk-view{height:auto;min-height:calc(100vh - var(--header-h))}.sheet-wrap{flex:none;height:68vh}.toolbar{padding:8px;gap:6px}.search-box{width:110px}.card{min-width:100%;max-width:100%}.fever{height:auto}.dialog,.detail-modal{max-width:96vw}.asof-bar{padding:8px 10px;gap:6px}.ld-name{width:128px;min-width:128px;max-width:128px}.ld-sum{left:130px;min-width:58px;padding-right:4px!important}.ld-name-line{font-size:11px;gap:2px}.ld-headcount input{width:30px}.ld-step{flex-wrap:wrap;margin-left:2px}.ld-step input[type=date]{width:92px;font-size:9px}.ld-sub-name .ld-sub-label{padding-left:8px;font-size:10px}.ld-sum .chip{font-size:10px;padding:0 4px}.load-opts{gap:8px}.load-legend{display:flex;flex-wrap:wrap;row-gap:2px}}.print-header{display:none}@media print{@page{size:A3 landscape;margin:8mm}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{background:#fff}.app-header,.toolbar,.tabs,.zoom-fab,.ad-banner,.backup-banner,.asof-bar,.dialog-backdrop,.task-tooltip{display:none!important}.print-header{display:flex;justify-content:space-between;align-items:baseline;padding:0 0 6px;border-bottom:2px solid #0f172a;margin-bottom:6px;font-size:15px}.print-header span{font-size:11px;color:#64748b}.wbs-view,.dashboard,.risk-view{height:auto!important}.sheet-wrap,.sheet{display:block!important;overflow:visible!important;height:auto!important}.grid{position:static!important}.card{break-inside:avoid;box-shadow:none}}.board{display:flex;gap:14px;padding:14px 16px;align-items:flex-start;overflow:auto;flex:1;min-height:0}.board-col{flex:1;min-width:250px;max-width:360px;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px}.board-col.drag-over{border-color:var(--c-accent);background:var(--c-accent-soft)}.board-col-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;color:var(--c-text-strong);padding:2px 4px}.board-col-head .cnt{margin-left:auto;font-size:12px;font-weight:600;color:var(--c-sub);background:var(--c-surface);border:1px solid var(--c-border);border-radius:999px;padding:0 8px}.board-card{background:var(--c-surface);border:1px solid var(--c-border);border-left:3px solid var(--c-accent-border);border-radius:10px;padding:8px 10px;cursor:grab;box-shadow:0 1px 2px var(--shadow);font-size:12.5px}.board-card:active{cursor:grabbing}.board-card.late{border-left-color:#dc2626}.board-card.done-card{opacity:.65;border-left-color:var(--c-border-strong)}.board-card .bc-title{display:flex;align-items:flex-start;gap:6px;font-weight:600;color:var(--c-text-strong)}.board-card .bc-wbs{color:var(--c-faint);font-weight:500;white-space:nowrap}.board-card .bc-open{margin-left:auto;border:none;background:none;color:var(--c-faint);cursor:pointer;font-size:13px;padding:0 2px}.board-card .bc-open:hover{color:var(--c-accent)}.board-card .bc-meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:4px;color:var(--c-sub);font-size:11.5px;align-items:center}.board-card .bc-root{color:var(--c-faint);font-size:10.5px;margin-top:2px}.board-card .bc-prog{display:flex;align-items:center;gap:6px;margin-top:6px}.board-card .bc-prog input[type=range]{flex:1;height:4px;accent-color:var(--c-accent)}.board-card .bc-pct{font-size:11px;color:var(--c-sub);width:34px;text-align:right}.board-empty{color:var(--c-faint);font-size:12px;text-align:center;padding:14px 0;border:1px dashed var(--c-border);border-radius:10px}.board-bar{display:flex;gap:8px;align-items:center;padding:10px 16px 0;flex-wrap:wrap}.today-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}.today-date{font-size:15px;font-weight:700;color:var(--c-text-strong)}.today-digest ul{list-style:none;display:flex;flex-direction:column;gap:6px}.today-digest li{display:flex;gap:8px;align-items:baseline;font-size:13px}.today-digest .dg-names{color:var(--c-sub);font-size:12px}.today-list{list-style:none;display:flex;flex-direction:column}.today-list li{display:flex;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid var(--c-grid-line);font-size:13px}.today-list li:last-child{border-bottom:none}.today-list .td-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.today-list .td-name .wbs{color:var(--c-faint);margin-right:4px}.today-list .td-assignee,.today-list .td-date{color:var(--c-sub);font-size:12px;white-space:nowrap}.today-list input[type=number]{width:52px;text-align:right;border:1px solid var(--c-border);border-radius:6px;padding:2px 4px;background:var(--c-field);color:var(--c-text)}.today-done-btn{border:1px solid var(--c-border);background:var(--c-surface);border-radius:6px;padding:2px 8px;cursor:pointer;color:#16a34a;font-weight:700}.today-done-btn:hover{background:#f0fdf4;border-color:#86efac}:root[data-theme=dark] .today-done-btn:hover{background:#14532d33;border-color:#166534}.pf-table td.pf-name{cursor:pointer;font-weight:600;color:var(--c-accent)}.pf-table td.pf-name:hover{text-decoration:underline}.pf-bar{display:inline-block;width:72px;height:8px;background:var(--c-bar-track);border-radius:999px;overflow:hidden;margin-right:6px;vertical-align:middle}.pf-bar i{display:block;height:100%;background:var(--grad-accent)}.paste-hint{color:var(--c-accent);background:var(--c-accent-soft);border:1px dashed var(--c-accent-border);border-radius:999px;padding:3px 12px;font-size:12px;align-self:center}
