:root{color:#1c2128;--line:#d8dee4;--line-soft:#e6e9ed;--muted:#5c6772;--accent:#1f4e79;--today:#c4554e;--header:#f7f8fa;--phase:#f4f6f8;--section:#e8edf2;--selected:#e7f0f8;--weekend:#1f4e790f;background:#e8eaee;font-family:Segoe UI,system-ui,sans-serif;font-size:13px;line-height:1.35}*{box-sizing:border-box}html,body,#app{height:100%;min-height:0;margin:0}html,body{overflow:hidden}body{background:var(--line)}body.demo-mode{flex-direction:column;display:flex}.demo-banner{border-bottom:1px solid var(--line);color:var(--accent);text-align:center;background:#eef3f8;flex-wrap:wrap;flex:none;justify-content:center;align-items:center;gap:.65rem 1rem;margin:0;padding:.45rem 1rem;font-size:12px;font-weight:600;display:flex}.demo-banner-text{flex:12rem}.demo-banner-actions{flex-wrap:wrap;flex:none;justify-content:center;align-items:center;gap:.45rem;display:inline-flex}.demo-banner-back,.demo-banner-tour{box-sizing:border-box;flex:none;justify-content:center;align-items:center;height:28px;padding:0 .7rem;font-size:12px;font-weight:650;line-height:1;text-decoration:none;display:inline-flex}.demo-banner-back{color:var(--text);background:#fff;border-color:#cfd6de}.demo-banner-back:hover{color:var(--accent);border-color:var(--accent);background:#f2f5f8}.demo-banner-tour{border-color:var(--accent);color:var(--accent);background:#fff}body.demo-mode.planner-ready:not(.auth-open):not(.dashboard-open) #app{flex:auto;height:auto;min-height:0;max-height:none;display:flex}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}#app{background:#fff;flex-direction:column;min-width:0;height:100dvh;max-height:100dvh;display:none;overflow:hidden}body.planner-ready:not(.auth-open):not(.dashboard-open) #app{display:flex}#toolbar,#project-header{flex:none}#toolbar{background:var(--header);border-bottom:1px solid var(--line);flex-wrap:nowrap;align-items:center;gap:12px;padding:8px 12px;display:flex}.tb-group{flex:none;align-items:center;gap:6px;display:flex}.tb-btn{justify-content:center;align-items:center;gap:6px;display:inline-flex}.tb-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.tb-btn.icon{min-width:32px;padding:0 6px}.zoom-select{height:28px;font:inherit;background:#fff;border:1px solid #cfd6de;border-radius:4px;padding:0 6px;display:none}.menu.align-start .menu-pop{left:0;right:auto}.menu-pop{min-width:180px}#toolbar.fit-2 .lbl-project .tb-label,#toolbar.fit-4 .lbl-secondary .tb-label,#toolbar.fit-6 .lbl-primary .tb-label{display:none}#toolbar.fit-2 .lbl-project,#toolbar.fit-4 .lbl-secondary,#toolbar.fit-6 .lbl-primary{min-width:32px;padding:0 6px}#toolbar.fit-3 .zoom-seg{display:none}#toolbar.fit-3 .zoom-select{display:block}#toolbar.fit-5 .zoom-step,#toolbar .menu-pop .fold-print,#toolbar .menu-pop .fold-file{display:none}#toolbar.fit-7 .menu-pop .fold-print,#toolbar.fit-8 .menu-pop .fold-file{display:block}#toolbar.fit-7 .tb-group>.fold-print,#toolbar.fit-8 .tb-group>.fold-file,#toolbar .tb-group>.fold-today{display:none}#toolbar.fit-9{flex-wrap:wrap;row-gap:6px}#toolbar.fit-9 .spacer{order:1}#toolbar.fit-9 .tb-extra{order:2}#toolbar.fit-9 .tb-plan{flex-basis:100%;order:3;gap:4px}#toolbar.fit-9 .tb-plan .sep,#toolbar.fit-9 .tb-group>.plan-today{display:none}#toolbar.fit-9 .tb-group>.fold-today{display:inline-flex}#toolbar.fit-10 .tb-group{flex-wrap:wrap}.spacer{flex:1;min-width:8px}.sep{background:#d0d6dd;flex:none;width:1px;height:20px}.btn{white-space:nowrap;background:#fff;border:1px solid #cfd6de;border-radius:4px;height:28px;padding:0 10px}.btn:hover{background:#f2f5f8}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#1a4368}.btn.danger{color:#8d2f2f;background:#fff;border-color:#e2c8c8}.btn.active{border-color:var(--accent);color:var(--accent);background:#e6eef6}.btn.icon{min-width:32px;padding:0 6px;font-size:16px;line-height:1}.btn:disabled{opacity:.45;cursor:default;background:#fff}.zoom{display:inline-flex}.zoom .btn{border-radius:0;margin-left:-1px}.zoom .btn:first-child{border-radius:4px 0 0 4px;margin-left:0}.zoom .btn:last-child{border-radius:0 4px 4px 0}.menu{position:relative}.menu-pop{border:1px solid var(--line);z-index:30;background:#fff;border-radius:6px;min-width:140px;padding:4px;display:none;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #14181e1f}.menu.open .menu-pop{display:block}.menu-pop .btn{text-align:left;background:0 0;border:0;width:100%;display:block}.menu-pop .btn:hover{background:#f2f5f8}.save-status{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;font-size:12.5px;overflow:hidden}.save-status.saved{color:#2f7d57}.save-status.unsaved,.save-status.error{color:#8a5a12}#project-header{border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:14px;min-height:68px;padding:8px 14px;display:flex}.project-logo{object-fit:contain;max-width:132px;max-height:48px;display:block}.project-titles{min-width:0}.project-titles h1{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:650}.project-titles p{color:var(--muted);margin:1px 0 0;font-size:12.5px}.project-aside{flex-direction:column;flex:none;align-items:flex-end;gap:2px;min-width:0;max-width:min(42%,28rem);margin-left:auto;display:flex}.project-dates{color:var(--muted);white-space:nowrap;font-size:12.5px}.chrome-fold{width:28px;height:28px;color:var(--muted);background:#fff;border:1px solid #cfd6de;border-radius:4px;flex:none;padding:0}.chrome-fold:hover{color:var(--accent);background:#f2f5f8}#project-header.is-collapsed{gap:8px;min-height:0;padding:4px 10px}#project-header.is-collapsed .project-logo,#project-header.is-collapsed .company,#project-header.is-collapsed .meta,#project-header.is-collapsed .project-dates{display:none}#project-header.is-collapsed .project-aside{max-width:min(55%,22rem)}#project-header.is-collapsed h1{font-size:15px}#planner{-webkit-overflow-scrolling:touch;background:#fff;flex:auto;min-height:0;position:relative;overflow:auto}#legend{max-height:120px;padding:8px 14px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:#fff;flex-wrap:wrap;flex:none;align-items:center;gap:8px 16px;display:flex;overflow:auto}.legend-heading{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex:none;margin-right:.25rem;font-size:11px;font-weight:700}.legend-empty{color:var(--muted);margin:0;font-size:12.5px}#legend.is-collapsed{max-height:none;padding-top:6px;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px));flex-wrap:nowrap;gap:8px;overflow-x:auto}#legend.is-collapsed .legend-meta,#legend.is-collapsed .legend-empty,#legend.is-collapsed .legend-heading{display:none}#legend.is-collapsed .legend-item{flex:none;padding:0 2px}#legend.is-collapsed .legend-name{font-size:12px;font-weight:600}#demo-tour-root{z-index:200;pointer-events:none;position:fixed;inset:0}#demo-tour-root[hidden]{display:none!important}.demo-tour-scrim{z-index:200;pointer-events:auto;background:#121c2873;position:absolute;inset:0}.demo-tour-highlight{box-shadow:0 0 0 9999px #121c2873, 0 0 0 3px #fff, 0 0 0 5px var(--accent);pointer-events:none;z-index:201;border-radius:10px;transition:top .2s,left .2s,width .2s,height .2s;position:fixed}.demo-tour-card{z-index:202;color:#1c2128;pointer-events:auto;background:#fff;border-radius:12px;width:min(22rem,100vw - 2rem);padding:1rem 1.1rem 1.05rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;position:fixed;box-shadow:0 18px 40px #101c2847}.demo-tour-card h2{margin:.15rem 0 .45rem;font-size:1.15rem;line-height:1.25}.demo-tour-progress{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.75rem;font-weight:650}.demo-tour-body{color:#2a323c;margin:0 0 1rem;font-size:.95rem;line-height:1.5}.demo-tour-actions{flex-wrap:wrap;justify-content:flex-end;gap:.45rem;display:flex}.demo-tour-spot{outline:none}.legend-item,.party-chip{text-align:left;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:8px;min-width:0;padding:2px 4px;display:inline-flex}.legend-item:hover,.party-chip:hover,.party-chip.selected{border-color:var(--line);background:#f4f7fb}.legend-swatch,.party-mark{border-radius:3px;flex:none;width:14px;height:14px}.party-mark{width:8px;height:8px}.marks{flex:none;align-items:center;gap:4px;display:inline-flex}.legend-text{flex-direction:column;min-width:0;display:flex}.legend-name{font-weight:650}.legend-meta{color:var(--muted);font-size:12px}.party-list{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.color-field{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:2px solid #fff;border-radius:4px;width:22px;height:22px;padding:0;box-shadow:0 0 0 1px #cfd6de}.swatch.selected{box-shadow:0 0 0 2px var(--accent)}.color-field input[type=color]{background:#fff;border:1px solid #cfd6de;width:36px;height:28px;padding:0}.planner-canvas{min-height:100%;position:relative}.gantt-head{z-index:5;border-bottom:1px solid var(--line);background:#fff;height:52px;display:flex;position:sticky;top:0}.label-col{z-index:4;border-right:1px solid var(--line);background:#fff;flex:none;position:sticky;left:0}.gantt-head .label-col{z-index:6;background:var(--header)}.gantt-row{border-bottom:1px solid var(--line-soft);display:flex;position:relative}.gantt-row.phase,.gantt-row.phase .label-col{background:var(--phase)}.gantt-row.section,.gantt-row.section .label-col{background:var(--section)}.gantt-row.selected .label-col{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}.gantt-row:hover .label-col{background:#f7fafc}.gantt-row.selected:hover .label-col{background:var(--selected)}.cols{grid-template-columns:minmax(0,1fr) 108px 68px 68px 46px 42px;align-items:center;gap:0 6px;height:100%;padding:0 8px 0 6px;display:grid}.cols.compact{grid-template-columns:minmax(0,1fr) 64px 64px 42px}.cols.narrow{grid-template-columns:minmax(0,1fr)}.name-text{flex-direction:column;min-width:0;display:flex}.name-stack{align-items:flex-start}.name-stack .chevron{margin-top:1px}.task-sub{color:var(--muted);letter-spacing:0;text-transform:none;font-size:11px;font-weight:400;line-height:1.2}.cell{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;color:#3c4652;min-width:0;font-size:12px;overflow:hidden}.cell-head{color:var(--muted);letter-spacing:.02em;font-size:11px;font-weight:600}.cell-name{overflow:visible}.name-head{justify-content:space-between;align-items:center;gap:4px;display:flex}.fold-cols{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:4px;flex:none;padding:0}.fold-cols:hover{color:var(--accent);background:#e6eef6}.name-wrap{align-items:center;gap:6px;min-width:0;display:flex}.task-indent{padding-left:18px}.task-actions{opacity:.45;flex:none;align-items:center;gap:1px;margin-left:auto;display:inline-flex}.gantt-row:hover .task-actions,.gantt-row.selected .task-actions{opacity:1}.task-action{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0;font-size:12px;line-height:1}.task-action:hover{color:var(--accent);background:#e6eef6}.task-name{cursor:pointer}.task-name,.phase-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.phase-name{letter-spacing:.04em;text-transform:uppercase;color:#3c4652;font-size:12px;font-weight:650}.section-name{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 12px;font-size:11px;font-weight:700;line-height:34px}.prio{border-radius:50%;flex:none;width:8px;height:8px}.ms-mark{color:var(--accent);flex:none;font-size:12px}.chevron{width:18px;height:18px;color:var(--muted);background:0 0;border:0;flex:none;padding:0}.phase-input{width:100%;font:inherit;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--accent);border-radius:3px;padding:2px 4px;font-weight:650}.time-head{background:var(--header);flex:none;height:52px;position:relative}.band{height:26px;position:absolute;left:0;right:0}.band-top{top:0}.band-bottom{border-top:1px solid var(--line-soft);top:26px}.band-cell{white-space:nowrap;height:100%;color:var(--muted);border-left:1px solid var(--line-soft);align-items:center;padding:0 4px;font-size:11px;display:flex;position:absolute;top:0;overflow:hidden}.band-top .band-cell{color:#243040;font-size:12px;font-weight:650;overflow:clip}.band-label{left:var(--label-w,560px);max-width:100%;padding-right:8px;position:sticky}.band-cell.weekend{background:var(--weekend)}.band-cell.today{color:var(--today);font-weight:700}.band-cell.week-start{border-left-color:#c5ccd4}.time-col{flex:none;height:100%;position:relative}.show-grid .time-col{background-image:repeating-linear-gradient(to right, transparent, transparent calc(var(--day) - 1px), var(--line-soft) calc(var(--day) - 1px), var(--line-soft) var(--day))}.show-grid.hour-grid .time-col{background-image:repeating-linear-gradient(to right, transparent, transparent calc(var(--day) - 1px), #c5ccd4 calc(var(--day) - 1px), #c5ccd4 var(--day)), repeating-linear-gradient(to right, transparent, transparent calc(var(--day) / 24 - 1px), #f0f2f5 calc(var(--day) / 24 - 1px), #f0f2f5 calc(var(--day) / 24))}.hour-grid .band-bottom .band-cell{justify-content:center;padding:0;font-size:10.5px}.gantt-body{position:relative}.time-bg,.time-fg{pointer-events:none;position:absolute;top:0}.time-bg{z-index:0}.time-fg{z-index:2}.weekend-shade{background:var(--weekend);position:absolute;top:0;bottom:0}.month-line{background:#c5ccd4;width:1px;position:absolute;top:0;bottom:0}.today-line{background:var(--today);z-index:3;opacity:.9;width:2px;position:absolute;top:0;bottom:0}.today-flag{border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid var(--today);z-index:4;width:0;height:0;position:absolute;top:0}.bar{cursor:grab;z-index:1;border-radius:3px;height:18px;position:absolute;top:9px}.bar-progress{border-radius:inherit;height:100%}.bar-handle{cursor:ew-resize;z-index:2;width:8px;height:100%;position:absolute;top:0}.bar-handle.left{left:0}.bar-handle.right{right:0}.bar:hover .bar-handle,.gantt-row.selected .bar-handle{background:#ffffff59}.phase-bar{cursor:default;pointer-events:none;border-radius:2px;height:10px;top:12px}.milestone-hit{cursor:grab;z-index:1;width:22px;height:24px;position:absolute;top:6px;transform:translate(-50%)}.diamond{background:var(--accent);width:12px;height:12px;position:absolute;top:6px;left:5px;transform:rotate(45deg);box-shadow:0 0 0 1px #fff}.dep-layer{position:absolute;top:0;left:0;overflow:visible}.dep-layer path{fill:none;stroke:#60707e;stroke-width:1.25px}.empty-plan{color:var(--muted);padding:28px 16px}body.dragging,body.dragging *{cursor:ew-resize!important;-webkit-user-select:none!important;user-select:none!important}#drag-tip{z-index:80;color:#fff;pointer-events:none;background:#1c2128;border-radius:4px;padding:4px 8px;font-size:12px;position:fixed}#toast{z-index:70;color:#fff;background:#1c2128;border-radius:4px;max-width:360px;padding:8px 12px;font-size:12.5px;position:fixed;bottom:16px;right:16px}.log-dialog{width:min(720px,100%)}.log-view{white-space:pre-wrap;word-break:break-word;border:1px solid var(--line);background:#f7f8fa;border-radius:4px;max-height:60vh;margin:0;padding:8px;font:12px/1.4 ui-monospace,Consolas,monospace;overflow:auto}.overlay{z-index:50;background:#14181e59;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--line);background:#fff;border-radius:8px;width:min(560px,100vw - 32px);max-height:calc(100vh - 48px);padding:16px 18px 14px;overflow:auto;box-shadow:0 16px 40px #14181e2e}.dialog h2{margin:0 0 14px;font-size:16px;font-weight:650}.form{grid-template-columns:140px 1fr;align-items:center;gap:8px 12px;display:grid}.form label.top{align-self:start;margin-top:6px}.form .hint,.form .form-error{grid-column:1/-1;margin:0}.hint{color:var(--muted);font-size:12px}.form-error{color:#8d2f2f;min-height:1em;font-size:12px}.readonly{color:#243040}.dialog input,.dialog select,.dialog textarea{background:#fff;border:1px solid #cfd6de;border-radius:4px;width:100%;padding:6px 8px}.dialog textarea{resize:vertical;min-height:72px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.dialog-actions .danger{margin-right:auto}.dialog.new-project-dialog{width:min(600px,100vw - 32px);padding:20px 22px 16px}.new-project-dialog h2{margin-bottom:16px;font-size:18px}.np-form{flex-direction:column;gap:16px;display:flex}.np-field{flex-direction:column;gap:5px;min-width:0;display:flex}.np-field label,.np-scales legend{color:#243040;font-size:12.5px;font-weight:600}.new-project-dialog .np-field input{height:38px;padding:6px 10px;font-size:14px}.new-project-dialog input[aria-invalid]{border-color:#b54a4a;box-shadow:0 0 0 1px #b54a4a}.np-scales{border:0;min-width:0;margin:0;padding:0}.np-scales legend{margin-bottom:6px;padding:0}.np-scales .hint{margin:6px 0 0}.np-scale-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.np-scale{cursor:pointer;background:#fff;border:1px solid #cfd6de;border-radius:8px;flex-direction:column;gap:4px;padding:12px 12px 11px;transition:border-color .12s,background-color .12s,box-shadow .12s;display:flex;position:relative}.np-scale:hover{background:#f8fafc;border-color:#9fb0c2}.np-scale.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:#eef4fa}.np-scale.selected:after{content:"✓";background:var(--accent);color:#fff;text-align:center;border-radius:50%;width:18px;height:18px;font-size:11px;line-height:18px;position:absolute;top:8px;right:9px}.np-scale:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.new-project-dialog .np-scale input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.np-ticks{align-items:flex-end;gap:2px;height:14px;margin:0 26px 4px 0;display:flex}.np-ticks span{background:#d5dde6;border-radius:2px;flex:1;height:100%}.np-ticks span:nth-child(3n+1){height:60%}.np-scale.selected .np-ticks span{background:#9db6cf}.np-scale.selected .np-ticks span:nth-child(-n+3){background:var(--accent)}.np-scale-title{color:#1c2733;font-size:14px;font-weight:650}.np-scale.selected .np-scale-title{color:var(--accent)}.np-scale-hint{color:var(--muted);font-size:12px;line-height:1.35}.np-dates{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.np-form .form-error{margin:-6px 0 0}.logo-block{flex-direction:column;gap:8px;display:flex}.logo-preview{background:#fafbfc;border:1px dashed #cfd6de;border-radius:4px;justify-content:center;align-items:center;width:180px;height:72px;display:flex}.logo-preview img{object-fit:contain;max-width:168px;max-height:64px}.logo-actions{flex-wrap:wrap;gap:8px;display:flex}.muted{color:var(--muted);font-size:12px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dialog.export-dialog{flex-direction:column;width:min(1100px,100vw - 24px);height:min(820px,100vh - 24px);padding:14px 16px 12px;display:flex}.export-layout{flex:1;grid-template-columns:280px minmax(0,1fr);gap:14px;min-height:0;display:grid}.export-fields{padding-right:4px;overflow:auto}.export-field{color:var(--muted);flex-direction:column;gap:3px;margin-top:8px;font-size:12px;display:flex}.export-field[hidden]{display:none}.export-field select,.export-field input{height:28px}.check-row{align-items:flex-start;gap:8px;margin-top:10px;font-size:12.5px;display:flex}.check-row input{margin-top:2px}.recommend{background:#f4f7fb;border:1px solid #d5deea;border-radius:6px;padding:8px 10px}.recommend strong{margin-bottom:4px;display:block}.recommend p{color:#243040;margin:0 0 8px}.preview-heading{color:var(--muted);margin:0 0 6px;font-size:12px}.export-preview-wrap{flex-direction:column;min-width:0;min-height:0;display:flex}.export-preview{border:1px solid var(--line);background:#e8eaee;border-radius:6px;flex:1;padding:12px;overflow:auto}.preview-caption{color:#243040;margin:0 0 10px;font-size:12px}.preview-scale{position:relative}.print-pages{flex-direction:column;gap:6mm;display:flex}.print-page{background:#fff;position:relative;overflow:hidden;box-shadow:0 8px 24px #14181e1f}.pp-header,.pp-scale,.pp-body,.pp-footer,.pp-legend{position:absolute}.pp-legend{border-top:.2mm solid #d5dae0}.pp-legend-item{position:absolute;overflow:hidden}.pp-swatch{border-radius:.4mm;width:3.4mm;height:3.4mm;position:absolute;top:1.3mm;left:0}.pp-legend-item strong,.pp-legend-item span{white-space:nowrap;position:absolute;left:5mm;right:0;overflow:hidden}.pp-legend-item strong{font-size:8pt;font-weight:650;top:.6mm}.pp-legend-item span{color:var(--muted);font-size:7pt;top:4.2mm}.pp-header{align-items:center;gap:3mm;display:flex}.pp-header img{object-fit:contain;width:auto;max-width:28mm;height:12mm}.pp-header-text{min-width:0}.pp-header-text p,.pp-header-text strong{margin:0;display:block}.pp-header-text p{color:var(--muted);font-size:8pt}.pp-header-text strong{font-size:12pt}.pp-period{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:8pt}.pp-scale{background:var(--header);box-sizing:border-box;border:.2mm solid #d5dae0;display:flex}.pp-scale-label{border-right:.2mm solid #d5dae0;align-items:center;padding:0 1.5mm;font-size:8pt;font-weight:650;display:flex}.pp-scale-chart{height:100%;position:relative}.pp-band{white-space:nowrap;height:50%;color:var(--muted);padding-left:.6mm;font-size:7pt;position:absolute;overflow:hidden}.pp-band.top{color:#243040;font-weight:650}.pp-body{position:absolute}.pp-chart{position:absolute;top:0;bottom:0}.pp-row{border-bottom:.15mm solid #e6e9ed;position:absolute;left:0;right:0}.pp-name{white-space:nowrap;background:#fff;align-items:center;padding:0 1.5mm;font-size:8pt;display:flex;position:absolute;top:0;bottom:0;left:0;overflow:hidden}.pp-row.phase .pp-name{letter-spacing:.03em;background:var(--phase);font-weight:650}.pp-row.section .pp-name{background:var(--section)}.pp-time{position:absolute;top:0;bottom:0}.pp-weekend,.pp-month,.pp-grid,.pp-today,.pp-bar,.pp-phasebar,.pp-diamond{position:absolute}.pp-grid{background:#e3e7ec;width:.1mm;top:0;bottom:0}.pp-weekend{background:#1f4e790f;top:0;bottom:0}.pp-month{background:#c5ccd4;width:.15mm;top:0;bottom:0}.pp-today{background:var(--today);width:.35mm;top:0;bottom:0}.pp-bar,.pp-phasebar{border-radius:.4mm;height:3mm;top:1.6mm;overflow:hidden}.pp-phasebar{background:#8ea0b0;height:2.2mm}.pp-bar b{height:100%;display:block}.pp-diamond{background:var(--accent);width:2.6mm;height:2.6mm;top:50%;transform:translate(-50%,-50%)rotate(45deg)}.pp-footer{height:5mm;color:var(--muted);justify-content:space-between;align-items:center;font-size:8pt;display:flex}#print-root{display:none}.backup-list{flex-direction:column;gap:6px;min-width:min(480px,80vw);max-height:60vh;display:flex;overflow:auto}.backup-row{border-bottom:1px solid #e6e9ed;justify-content:space-between;align-items:center;gap:12px;padding:4px 0;display:flex}.account-section h4{margin:12px 0 4px;font-size:13px}.dash-settings .account-dialog{max-width:42rem}.dash-settings .account-section{border-top:1px solid var(--line-soft);margin-top:1.1rem;padding-top:1rem}.dash-settings .account-section:first-of-type{border-top:0;margin-top:.5rem;padding-top:0}.dash-settings .account-section h3{margin:0 0 .55rem;font-size:1.05rem}.dash-settings .dialog-actions{flex-wrap:wrap;justify-content:flex-start}.dash-settings .form{max-width:28rem}.dash-settings input,.dash-settings select{border:1px solid var(--line);font:inherit;background:#fff;border-radius:8px;padding:.45rem .55rem}.dash-settings .dash-banner{margin-bottom:.85rem}.member-list{overflow-wrap:anywhere;margin:0;padding-left:18px}.member-list li{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:2px 0;display:flex}.member-list li>span{flex:auto}.overview-list{padding-left:0;list-style:none}.overview-list li{padding:4px 0;display:block}.dialog-actions[hidden]{display:none}.account-section hr{border:0;border-top:1px solid #e6e9ed;margin:12px 0}html{overscroll-behavior:none}.admin-page{background:linear-gradient(#eef2f6 0%,#f7f9fb 32% 100%);height:100dvh;overflow:auto}.admin-inner{max-width:1280px;margin:0 auto;padding:1.25rem 1.35rem 2.75rem}.admin-header{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.55rem 1rem;margin-bottom:.25rem;padding-bottom:.85rem;display:flex}.admin-header h2{letter-spacing:-.01em;color:#1c2128;margin:0;font-size:1.15rem;font-weight:700}.admin-header .btn{align-items:center;margin-left:auto;text-decoration:none;display:inline-flex}.admin-section{border:1px solid var(--line);background:#fff;border-radius:12px;margin-top:1rem;padding:1rem 1.1rem 1.15rem;box-shadow:0 1px 2px #1c21280a}.admin-section h3{letter-spacing:-.01em;margin:0 0 .65rem;font-size:.98rem}.admin-section hr{border:0;border-top:1px solid var(--line-soft);margin:14px 0}.admin-page input,.admin-page select{width:100%;font:inherit;background:#fff;border:1px solid #cfd6de;border-radius:8px;padding:.45rem .55rem}.admin-page td select,.admin-page td input.admin-days{width:auto;min-width:4.5rem;margin-right:.35rem}.admin-page input.admin-days{max-width:5.5rem}.admin-page .form{max-width:36rem}.admin-kpi-row{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.85rem;margin-top:1rem;display:grid}.admin-kpi{border:1px solid var(--line);background:#fff;border-radius:12px;padding:.95rem 1.05rem 1.05rem;box-shadow:0 1px 2px #1c21280a}.admin-kpi h3{letter-spacing:-.01em;margin:0 0 .65rem;font-size:.98rem}.admin-kpi-stats{grid-template-columns:1fr auto;gap:.35rem .85rem;margin:0;font-size:.9rem;display:grid}.admin-kpi-stats dt{color:var(--muted);margin:0}.admin-kpi-stats dd{text-align:right;color:#1c2128;margin:0;font-weight:650}.admin-table-scroll{margin:.35rem 0 .5rem;overflow-x:auto}.admin-plan-compare th:first-child,.admin-plan-compare td:first-child{white-space:nowrap;color:var(--muted);font-weight:600}.admin-plan-compare .admin-plan-ids td{color:var(--muted);font-size:.78rem}.admin-mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.82rem}.admin-events-table{font-size:.84rem}.admin-events-table td{vertical-align:top}.admin-plan-editor-host{margin-top:.75rem}.admin-plan-editor{border:1px solid var(--line);background:#fff;border-radius:12px;padding:1rem 1.1rem 1.15rem;box-shadow:0 1px 2px #1c21280a}.admin-plan-editor h4{margin:0 0 .75rem;font-size:.98rem}.admin-plan-form{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:.75rem .9rem;max-width:none;margin-bottom:.85rem;display:grid}.admin-field{flex-direction:column;gap:.28rem;min-width:0;display:flex}.admin-field label{color:var(--muted);font-size:.82rem}.admin-field input[type=checkbox]{align-self:flex-start;width:auto;margin-top:.2rem}.admin-page .dialog-actions{flex-wrap:wrap;justify-content:flex-start;gap:.4rem}.admin-tabs{flex-wrap:wrap;gap:.4rem;margin:.85rem 0 .35rem;display:flex}.admin-mode-tabs{flex-wrap:wrap;gap:.4rem;margin:0 0 .75rem;display:flex}.admin-mode-tabs .btn{padding:.35rem .75rem;font-size:.88rem}.admin-mode-tabs .btn.active,.admin-mode-tabs .btn[aria-selected=true]{color:#fff;background:#1c2128;border-color:#1c2128}.admin-stripe-form{grid-template-columns:1fr;gap:.35rem .85rem;max-width:36rem;display:grid}.admin-stripe-form h3{margin:.85rem 0 .15rem;font-size:.92rem}.admin-stripe-mode-label{color:#1c2128;margin:0 0 .75rem;font-weight:600}.admin-stripe-status{margin-top:.15rem}.admin-tabs .btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.4rem .85rem}.admin-tabs .btn[aria-selected=true]{color:var(--accent);background:#1f4e791a;border-color:#9bb6ce;font-weight:650}.admin-reauth{background:#f4f7fb;border:1px solid #d5deea;border-radius:10px;padding:.75rem .9rem}.admin-list{overflow-wrap:anywhere;margin:.55rem 0;padding:0;list-style:none}.admin-list li{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem .75rem;padding:.55rem 0;display:flex}.admin-events li{color:#334155;font-size:.78rem;display:block}.admin-table{border-collapse:collapse;width:100%;font-size:.9rem}.admin-table th{text-align:left;border-bottom:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;padding:.55rem;font-size:.75rem;font-weight:650}.admin-table td{text-align:left;border-bottom:1px solid var(--line-soft);vertical-align:middle;overflow-wrap:anywhere;padding:.55rem}.admin-table td .btn{margin:.15rem .3rem .15rem 0}.admin-users-hub{grid-template-columns:minmax(0,1.4fr) minmax(18rem,1fr);align-items:start;gap:1rem;display:grid}.admin-users-search{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.65rem .85rem;max-width:none;display:grid}.admin-users-table tr.is-selected td{background:#eef5fb}.admin-user-detail{max-height:calc(100vh - 2rem);position:sticky;top:.75rem;overflow:auto}.admin-user-detail>.admin-section{margin-top:0}.admin-invite-body{margin-top:.75rem}.admin-message-block{border-top:1px solid var(--line-soft);margin-top:1rem;padding-top:.85rem}.admin-message-block h4{margin:0 0 .45rem;font-size:.95rem}.admin-page textarea{width:100%;font:inherit;resize:vertical;background:#fff;border:1px solid #cfd6de;border-radius:8px;min-height:6rem;padding:.45rem .55rem}@media (width<=960px){.admin-users-hub{grid-template-columns:1fr}.admin-user-detail{max-height:none;position:static}}.dash-messages-badge.has-unread{background:#fff8ef;border-color:#8a4b12}.dash-message-list{flex-direction:column;gap:.35rem;margin:.75rem 0;display:flex}.dash-message-row{text-align:left;border:1px solid var(--line-soft);width:100%;font:inherit;cursor:pointer;background:#fff;border-radius:8px;justify-content:space-between;gap:.75rem;padding:.65rem .75rem;display:flex}.dash-message-row.is-unread{background:#f3f8fc;border-color:#6b8cae;font-weight:600}.dash-message-subject{overflow-wrap:anywhere}.dash-message-detail{margin-top:.5rem}.dash-message-body{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.9rem 1rem}.dash-message-body h3{margin:0 0 .35rem;font-size:1rem}.dash-message-text{white-space:pre-wrap;font:inherit;overflow-wrap:anywhere;margin:.75rem 0}.dash-ticket-form{max-width:40rem;margin:.75rem 0 1rem}.dash-ticket-form .dialog-actions{grid-column:1/-1}.dash-ticket-form input,.dash-ticket-form textarea,.dash-message-body textarea{width:100%;font:inherit;background:#fff;border:1px solid #cfd6de;border-radius:8px;padding:.45rem .55rem}.dash-ticket-form textarea,.dash-message-body textarea{resize:vertical;min-height:6rem}.dash-ticket-thread{flex-direction:column;gap:.55rem;margin:.75rem 0;display:flex}.dash-ticket-post{border:1px solid var(--line-soft);background:#fff;border-radius:8px;padding:.65rem .75rem}.dash-ticket-post.is-staff{background:#f3f8fc;border-color:#6b8cae}.dash-ticket-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:.35rem 0 0}.admin-actions{white-space:normal;min-width:16rem}.admin-secret,.admin-uri,.admin-codes{font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.admin-secret{letter-spacing:.08em;margin:6px 0 10px;font-size:16px;display:block}.admin-uri{overflow-wrap:anywhere;color:var(--muted);margin-bottom:12px;font-size:11px;display:block}.admin-codes{columns:2;font-size:14px}.admin-page .hint{color:var(--muted);margin:0 0 .75rem;font-size:.9rem;line-height:1.45}.admin-page .overview-list{color:#334155;margin:0;padding-left:1.1rem;line-height:1.5}.admin-content{flex-direction:column;gap:.15rem;display:flex}@media (width<=1099px){.btn{min-height:40px;padding:0 12px}.tb-btn.icon,#toolbar.fit-2 .lbl-project,#toolbar.fit-4 .lbl-secondary,#toolbar.fit-6 .lbl-primary{min-width:40px;padding:0 8px}.zoom-select{height:40px}.menu-pop .btn{min-height:44px}.menu-pop{max-height:min(70vh,420px);overflow:auto}.chevron{width:32px;height:32px}.bar{height:22px;top:12px}.bar-handle{width:18px}.phase-bar{height:12px;top:16px}.milestone-hit{width:36px;height:36px;top:4px}.export-field select,.export-field input,.new-project-dialog .np-field input{height:40px}}@media (width<=719px){:root{font-size:15px}#toolbar{padding:calc(8px + env(safe-area-inset-top)) 10px 8px;gap:6px}#project-header{flex-wrap:wrap;gap:6px;min-height:0;padding:8px 12px}.project-logo{max-width:96px;max-height:36px}.project-titles h1{font-size:16px}.project-aside{flex-basis:100%;align-items:flex-start;max-width:100%;margin-left:0}.project-dates{white-space:normal}input,select,textarea{font-size:16px}.form{grid-template-columns:1fr}.form label{margin-top:4px}.dialog{padding:14px 14px 12px}.dialog.new-project-dialog{padding:16px 16px 14px}.new-project-dialog .np-field input{height:42px;font-size:16px}.np-scale-options{grid-template-columns:1fr}.np-scale{grid-template-columns:auto 1fr;column-gap:12px;padding:10px 40px 10px 12px;display:grid}.np-ticks{grid-row:1/3;align-self:center;width:44px;margin:0}.np-dates{grid-template-columns:1fr}.dialog-actions{flex-wrap:wrap}.dialog-actions .btn{min-height:40px}#toast{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));max-width:none}}@media (width<=800px){.dialog.export-dialog{width:calc(100vw - 16px);height:calc(100vh - 16px);max-height:none}.export-layout{grid-template-columns:1fr;overflow:auto}.export-preview{min-height:240px}}@media (pointer:coarse){.fold-cols,.chrome-fold{width:36px;height:36px}.bar,.bar-handle,.milestone-hit{touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.chevron{touch-action:manipulation}}#auth-root,#dashboard-root{z-index:40;position:fixed;inset:0;overflow:auto}#auth-root{z-index:45;color:#1c2128;background:#fff;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.6}#dashboard-root{background:#eef2f6}#auth-root[hidden],#dashboard-root[hidden],body.auth-open #app,body.auth-open #modal-root,body.auth-open #drag-tip,body.dashboard-open #app{display:none!important}body.auth-open,body.dashboard-open{overflow:hidden}body.dashboard-open{background:#eef2f6}body.auth-open{background:#fff}.auth-page{flex-direction:column;min-height:100%;display:flex}.auth-top{z-index:2;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;position:sticky;top:0}.auth-top-inner{justify-content:space-between;align-items:center;gap:1rem;max-width:68rem;min-height:4rem;margin:0 auto;padding:0 1.25rem;display:flex}.auth-brand{color:#1c2128;flex:none;align-items:center;gap:.6rem;font-size:1.1rem;font-weight:700;text-decoration:none;display:inline-flex}.auth-brand img{border-radius:6px;display:block}.auth-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:1.1rem;display:flex}.auth-nav a{color:var(--muted);font-weight:500;text-decoration:none}.auth-nav a:hover{color:#1c2128}.auth-nav-login,.auth-nav-cta{font:inherit;cursor:pointer;border-radius:10px}.auth-nav-login{color:var(--muted);background:0 0;border:0;padding:0;font-weight:500}.auth-nav-login:hover,.auth-nav-login.is-current{color:#1c2128}.auth-nav-cta{border:1px solid var(--accent);background:var(--accent);color:#fff;padding:.45rem .9rem;font-size:.95rem;font-weight:600}.auth-nav-cta:hover,.auth-nav-cta.is-current{color:#fff;background:#173d60;border-color:#173d60}.auth-main{background:url(/images/doodles.svg) 0 0/560px 560px,linear-gradient(#1f4e790d 1px,#0000 1px) 0 0/28px 28px,linear-gradient(90deg,#1f4e790d 1px,#0000 1px) 0 0/28px 28px,linear-gradient(#eef3f8,#fff 72%);flex:1 0 auto;padding:3.75rem 0 4.5rem}.auth-wrap{max-width:46rem;margin:0 auto;padding:0 1.25rem}.auth-content{width:100%}.auth-eyebrow{color:var(--accent);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .5rem;font-size:.82rem;font-weight:700}.auth-content>h1{letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(1.8rem,4vw,2.4rem);line-height:1.2}.auth-lead{max-width:40rem;color:var(--muted);margin:0 0 2rem;font-size:1.2rem;line-height:1.55}.auth-panel{border:1px solid var(--line);background:#fff;border-radius:10px;padding:1.5rem}.auth-muted{color:var(--muted);margin:.45rem 0 0;font-size:.92rem;line-height:1.45}.auth-callout{background:#e7f0f8;border:1px solid #c9d9e8;border-radius:10px;margin:0 0 1.15rem;padding:.9rem 1rem}.auth-callout strong{color:var(--accent);margin-bottom:.25rem;font-size:.88rem;display:block}.auth-callout p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.45}.auth-callout-action{margin-top:.55rem!important}.auth-callout a{color:var(--accent);font-weight:600;text-decoration:none}.auth-callout a:hover{text-decoration:underline}.auth-tabs{border:1px solid var(--line);background:#f4f6f8;border-radius:10px;gap:.4rem;margin-bottom:1.15rem;padding:.3rem;display:flex}.auth-tab{color:var(--muted);background:0 0;border:0;border-radius:8px;flex:1;padding:.6rem .75rem;font-size:.95rem;font-weight:600}.auth-tab:hover{color:#1c2128}.auth-tab.is-active{color:var(--accent);background:#fff;box-shadow:0 1px 3px #10263d14}.auth-status{color:#8a4b12;min-height:1.35em;margin:0 0 .85rem;font-size:.92rem}.auth-status:empty{min-height:0;margin:0;display:none}.auth-form{flex-direction:column;gap:.95rem;display:flex}.auth-field{flex-direction:column;gap:.4rem;font-size:.92rem;font-weight:600;display:flex}.auth-field input{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.75rem .85rem;font-size:1rem;font-weight:400;transition:border-color .15s,box-shadow .15s}.auth-field input:hover{border-color:#c3ccd6}.auth-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #1f4e7926}.auth-actions{gap:.65rem;margin-top:.35rem;display:flex}.auth-page .btn{white-space:normal;border-radius:10px;height:auto;min-height:2.75rem;padding:.7rem 1.3rem;font-size:1rem;font-weight:600}.auth-page .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.auth-page .btn.primary:hover{background:#173d60;border-color:#173d60}.auth-page .btn:not(.primary){border-color:var(--accent);color:var(--accent);background:#fff}.auth-page .btn:not(.primary):hover{background:#f4f6f8}.auth-actions .btn{width:100%}.subscribe-steps{color:var(--muted);gap:.75rem;margin:0 0 1rem;padding:0;font-size:.92rem;list-style:none;display:flex}.subscribe-steps .is-current{color:#1c2128;font-weight:700}.subscribe-steps .is-done{color:#1c2128}.subscribe-choices{gap:.75rem;margin:.5rem 0 1rem;display:grid}.subscribe-choice{text-align:left;border:1px solid var(--line);font:inherit;cursor:pointer;background:#fff;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.9rem 1rem;display:flex}.subscribe-choice.is-current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.subscribe-current{margin:0 0 .8rem}.auth-recovery{border-top:1px solid var(--line-soft);flex-direction:column;align-items:flex-start;gap:.55rem;margin-top:1.15rem;padding-top:1rem;display:flex}.auth-recovery .btn{min-height:0;padding:.45rem .9rem;font-size:.95rem}.auth-panel-footer{border-top:1px solid var(--line-soft);flex-direction:column;gap:.25rem;margin:1.4rem 0 0;padding-top:1.1rem;display:flex}.auth-panel-footer .auth-muted{margin:0}.auth-text-btn{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-weight:600;text-decoration:none}.auth-text-btn:hover{text-decoration:underline}.auth-site-footer{border-top:1px solid var(--line);color:var(--muted);background:#fff;flex:none;margin-top:auto;padding:2rem 0;font-size:.92rem}.auth-footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;max-width:68rem;margin:0 auto;padding:0 1.25rem;display:flex}.auth-site-footer p{margin:0}.auth-footer-links{flex-wrap:wrap;gap:1rem;display:flex}.auth-footer-links a{color:var(--muted);font-weight:400;text-decoration:none}.auth-footer-links a:hover{color:#1c2128}@media (width<=860px){.auth-nav a{display:none}.auth-main{padding:2.75rem 0 3.25rem}.auth-panel{padding:1.25rem}.auth-footer-inner{flex-direction:column;align-items:flex-start}}.dash{background:linear-gradient(#e8eef4 0%,#eef2f6 40% 100%);grid-template-columns:minmax(15rem,17rem) minmax(0,1fr);min-height:100%;display:grid}.dash-nav{border-right:1px solid var(--line);background:#fff;flex-direction:column;gap:1rem;padding:1.35rem 1rem 1.25rem;display:flex;box-shadow:1px 0 #1c212805}.dash-brand{letter-spacing:-.01em;color:var(--accent);border-bottom:1px solid var(--line-soft);margin-bottom:.25rem;padding:.35rem .65rem .85rem;font-size:1.08rem;font-weight:700}.dash-nav-list{flex-direction:column;flex:1;gap:.2rem;display:flex}.dash-nav-item{text-align:left;width:100%;color:var(--muted);background:0 0;border:0;border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;padding:.7rem .8rem;font-weight:500;transition:background .12s,color .12s;display:flex}.dash-nav-item:hover{background:var(--selected);color:var(--accent)}.dash-nav-item.is-active{color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:#1f4e791a;font-weight:650}.dash-badge{color:var(--muted);background:var(--phase);white-space:nowrap;border-radius:999px;padding:.12rem .5rem;font-size:.68rem;font-weight:650}.dash-badge.is-ok{color:#1f4e79;background:#e7f0f8}.dash-nav-actions{border-top:1px solid var(--line);padding-top:.65rem}.dash-nav-actions .btn{width:100%}.dash-main{min-width:0;max-width:74rem;padding:1.85rem 2.1rem 3rem}.dash-header{border-bottom:1px solid #1c21280f;margin-bottom:1.5rem;padding-bottom:1rem}.dash-header h1{letter-spacing:-.025em;color:#1c2128;margin:0 0 .3rem;font-size:clamp(1.5rem,2vw,1.85rem);line-height:1.2}.dash-user{color:var(--muted);margin:0;font-size:.95rem}.dash-stack{flex-direction:column;gap:1.25rem;display:flex}.dash-home-grid{grid-template-columns:minmax(0,1.55fr) minmax(15rem,.95fr);align-items:stretch;gap:1.25rem;display:grid}.dash-panel{border:1px solid var(--line);background:#fff;border-radius:16px;padding:1.35rem 1.45rem;box-shadow:0 1px 2px #1c21280a,0 8px 24px #1c212808}.dash-panel-muted{background:#f7f9fb}.dash-panel h2{letter-spacing:-.01em;margin:0 0 .45rem;font-size:1.12rem}.dash-subheading{color:#1c2128;margin:1.25rem 0 .4rem;font-size:.98rem}.dash-lead{color:var(--muted);max-width:44rem;margin:0 0 .85rem;line-height:1.45}.dash-muted{color:var(--muted);margin:.2rem 0 0;font-size:.9rem;line-height:1.4}.dash-warning{color:#8a4b12}.dash-banner{background:linear-gradient(135deg,#e7f0f8,#eef4f9);border:1px solid #c9d9e8;border-radius:14px;padding:.95rem 1.2rem}.dash-banner.is-warning{background:linear-gradient(135deg,#fff6e8,#fffaf2);border-color:#efd2a3}.dash-banner .dash-lead{margin:0}.dash-actions{flex-wrap:wrap;gap:.55rem;margin-bottom:.85rem;display:flex}.dash-actions-stack{flex-direction:column;align-items:stretch;margin-bottom:0}.dash-actions-stack .btn{justify-content:center;width:100%}.dash-stat-row{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.65rem;margin-top:.35rem;display:grid}.dash-stat{border:1px solid var(--line-soft);background:#f8fafc;border-radius:10px;flex-direction:column;gap:.25rem;padding:.75rem .85rem;display:flex}.dash-stat.is-warn{background:#fff8ef;border-color:#efd2a3}.dash-stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;font-weight:600}.dash-stat-value{color:#1c2128;overflow-wrap:anywhere;font-size:.95rem;font-weight:650}.dash-stat.is-warn .dash-stat-value{color:#8a4b12}.dash-plan-list{flex-direction:column;gap:.55rem;display:flex}.dash-plan-row{border:1px solid var(--line-soft);background:#fafbfc;border-radius:10px;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem .85rem;display:flex}.dash-plan-row-actions{flex-wrap:wrap;gap:.45rem;display:flex}.dash-share{border:1px solid var(--line-soft);background:#f4f7fa;border-radius:10px;margin-top:.65rem;padding:.85rem .9rem}.dash-share-head{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.65rem;display:flex}.dash-share-head h3{margin:0 0 .25rem;font-size:1rem}.dash-share-list{flex-direction:column;gap:.4rem;margin:.75rem 0;display:flex}.dash-share-row{border-bottom:1px solid var(--line-soft);gap:.5rem;padding:.55rem 0;display:grid}.dash-share-row:last-child{border-bottom:0}.dash-share-row-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.dash-share-form{grid-template-columns:minmax(0,1.4fr) minmax(7rem,.7fr) auto;align-items:end;gap:.5rem;display:grid}.dash-share-form>[role=status]{grid-column:1/-1;margin:0}.dash-guest-share{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:1rem}.dash-share-team{border-top:1px solid var(--line);margin-top:1rem;padding-top:.75rem}.dash-share-folders{flex-direction:column;grid-column:1/-1;gap:.25rem;margin-top:.35rem;padding:.5rem 0 0;display:flex}.dash-share-folders-title{margin:0;font-size:.85rem;font-weight:600}.dash-share-folders .dash-muted{margin:0;font-size:.82rem}.dash-share-confidential{cursor:pointer;align-items:flex-start;gap:.45rem;margin-top:.35rem;font-size:.85rem;display:flex}.dash-share-confidential input{margin-top:.15rem}.dash-share-form label{flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.dash-share-form input,.dash-share-form select{border:1px solid var(--line);font:inherit;background:#fff;border-radius:8px;padding:.45rem .55rem}@media (width<=820px){.dash-share-form{grid-template-columns:1fr}}.dash-empty{flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem 0 .25rem;display:flex}.dash-facts{grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);gap:.45rem 1rem;margin:.85rem 0 0;display:grid}.dash-facts dt{color:var(--muted);margin:0;font-size:.92rem}.dash-facts dd{margin:0;font-weight:600}.dash-feature-list{grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));gap:.75rem;margin-top:.85rem;display:grid}.dash-feature-list-soon{opacity:.95;margin-top:.65rem}.dash-feature{border:1px solid var(--line-soft);background:#fafbfc;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.5rem;min-height:8.5rem;padding:.95rem 1rem;display:flex}.dash-feature.is-soon{background:#f4f6f8;border-style:dashed}.dash-feature-head{justify-content:space-between;align-items:flex-start;gap:.5rem;width:100%;display:flex}.dash-feature .btn,.dash-actions a.btn{justify-content:center;align-items:center;margin-top:auto;text-decoration:none;display:inline-flex}.dash-plan-row{transition:border-color .12s,background .12s}.dash-plan-row:hover{background:#f4f7fa;border-color:#c9d9e8}@media (width<=960px){.dash-home-grid{grid-template-columns:1fr}}@media (width<=820px){.dash{grid-template-columns:1fr}.dash-nav{border-right:0;border-bottom:1px solid var(--line)}.dash-nav-list{flex-flow:wrap}.dash-nav-item{width:auto;box-shadow:none}.dash-nav-item.is-active{box-shadow:none}.dash-main{padding:1.15rem 1rem 2rem}.dash-brand{border-bottom:0;margin-bottom:0;padding-bottom:.25rem}}@media print{@page{margin:0}html,body{background:#fff;height:auto;overflow:visible}#app,#toast,#modal-root,#drag-tip,#dashboard-root,#auth-root{display:none!important}#print-root{display:block!important}.print-page{box-shadow:none;break-after:page}.print-page:last-child{break-after:auto}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.readonly-banner{color:#3d2e10;background:#fff8e8;border:1px solid #8a6a2f;margin:.35rem 0 0;padding:.4rem .65rem;font-size:.95rem}body.planner-readonly #planner input,body.planner-readonly #planner textarea,body.planner-readonly #planner select{pointer-events:none}.docs-picker{flex-wrap:wrap;align-items:center;gap:.55rem .85rem;margin:.75rem 0 1rem;display:flex}.docs-plan-select{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:14rem;padding:.4rem .55rem}.docs-folder-tabs{flex-wrap:wrap;gap:.35rem;margin-bottom:.55rem;display:flex}.docs-folder-tab{border:1px solid var(--line);cursor:pointer;color:var(--muted);background:#fff;border-radius:999px;padding:.35rem .85rem;font-weight:600}.docs-folder-tab.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.docs-folder-hint{color:var(--muted);margin:0 0 .75rem;font-size:.92rem}.docs-upload{flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:.85rem;display:flex}.docs-table{flex-direction:column;gap:.35rem;display:flex}.docs-row{border:1px solid var(--line-soft);background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.55rem .85rem;padding:.55rem .65rem;display:grid}.docs-name{color:var(--accent);overflow-wrap:anywhere;font-weight:600;text-decoration:none}.docs-name:hover{text-decoration:underline}.docs-meta{color:var(--muted);white-space:nowrap;font-size:.88rem}@media (width<=720px){.docs-row{grid-template-columns:1fr}.docs-meta{white-space:normal}}#toolbar .lang-switch{flex:none}#toolbar .lang-switch-summary{background:#fff;border-radius:4px;align-items:center;height:28px;padding:0 10px;font-size:13px;display:inline-flex}#toolbar .lang-switch-menu{top:calc(100% + 4px)}.lang-switch{position:relative}.lang-switch-summary{cursor:pointer;border:1px solid var(--line,#d5dde6);background:0 0;border-radius:999px;padding:.35rem .6rem;font-size:.875rem;list-style:none}.lang-switch-summary::-webkit-details-marker{display:none}.lang-switch-menu{z-index:20;border:1px solid var(--line,#d5dde6);background:var(--panel,#fff);border-radius:.6rem;min-width:9rem;margin-top:.25rem;padding:.25rem;position:absolute;right:0;box-shadow:0 8px 24px #1020301f}.lang-switch-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.4rem;width:100%;padding:.4rem .6rem;display:block}.lang-switch-item.is-current{font-weight:700}.dash-header,.admin-header{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}
