:root{
  --ink:#15181f;--muted:#68707c;--line:#d8dce3;--panel:#fff;--board-bg:#f7f8fb;--brand:#11141b;--accent:#1d89b8;--green:#2d9a4a;--red:#d94747;--amber:#e0a52b;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#f4f5f7
}
*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%;height:100%}body{overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{height:100%}
.boot-screen,.fatal-screen{height:100%;display:grid;place-content:center;gap:14px;text-align:center}.logo-mark{margin:auto;width:58px;height:58px;border-radius:18px;background:#111;color:#fff;display:grid;place-items:center;font-weight:800}.fatal-screen code{padding:10px;background:#eee;border-radius:8px}
.primary-btn,.quiet-btn,.icon-btn,.tool-btn,.text-btn{border:0;border-radius:10px}.primary-btn{background:#11151d;color:#fff;padding:10px 16px;font-weight:700;box-shadow:0 5px 16px #1112}.primary-btn:hover{background:#202532}.primary-btn.big{width:100%;padding:13px 16px}.quiet-btn{background:#eef1f4;color:#242933;padding:8px 12px}.quiet-btn:hover{background:#e2e6eb}.icon-btn{background:#edf0f4;width:38px;height:38px;font-size:20px}.text-btn{background:transparent;color:#5e6875;padding:8px}.danger-quiet{border:0;background:#fff0f0;color:#b12d2d;border-radius:9px;padding:9px 12px}.action-spacer,.header-spacer{flex:1}
input,select,textarea{width:100%;border:1px solid #cfd5dc;border-radius:9px;padding:9px 10px;background:#fff;color:#181b20;outline:none}input:focus,select:focus,textarea:focus,.rich-editor:focus{border-color:#6daeca;box-shadow:0 0 0 3px #65b9df22}label{display:grid;gap:6px;font-size:13px;font-weight:650;color:#353b45}label small,.small-muted{font-weight:400;color:#7b8490}.check-row{display:flex!important;align-items:center;gap:8px}.check-row input{width:auto}

/* Authentication */
.auth-page{height:100%;display:grid;grid-template-columns:minmax(360px,1.2fr) minmax(360px,.8fr);background:#f7f8fa}.auth-brand{position:relative;overflow:hidden;background:#11151d;color:#fff;padding:9vh 8vw}.big-logo,.dash-logo{font-size:34px;font-weight:850;letter-spacing:-1.4px}.big-logo span,.dash-logo span{color:#3cb0dc}.auth-brand h1{font-size:clamp(40px,6vw,78px);letter-spacing:-3px;line-height:.98;max-width:700px;margin:16vh 0 24px}.auth-brand p{font-size:20px;line-height:1.5;max-width:620px;color:#cbd3dc}.auth-flow-art{position:absolute;left:8vw;bottom:7vh;display:flex;align-items:center;gap:70px}.auth-flow-art i{display:block;width:76px;height:42px;border:2px solid #579db8;border-radius:16px;position:relative}.auth-flow-art i:not(:last-child):after{content:"";position:absolute;left:74px;top:19px;width:72px;border-top:2px dashed #579db8}.auth-card{align-self:center;justify-self:center;width:min(430px,82%);background:#fff;border:1px solid #e2e5e9;border-radius:22px;padding:28px;box-shadow:0 20px 55px #1d273310}.auth-tabs{display:flex;background:#f1f3f5;border-radius:11px;padding:4px;margin-bottom:24px}.auth-tabs button{flex:1;border:0;background:transparent;border-radius:8px;padding:9px;color:#727b86}.auth-tabs button.active{background:#fff;color:#171b22;box-shadow:0 1px 5px #1112;font-weight:700}.auth-form,.totp-step,.totp-setup{display:grid;gap:17px}.auth-form label{font-size:14px}.totp-step h2,.totp-setup h2{margin:0}.totp-step p,.totp-setup p{margin:0;color:#68717d;line-height:1.45}.totp-input{text-align:center;font-size:28px;letter-spacing:9px;font-variant-numeric:tabular-nums}.qr-box{background:#fff;border:1px solid #e1e4e8;padding:12px;border-radius:12px;width:max-content;margin:auto}.secret-row{display:flex;align-items:center;gap:8px}.secret-row code{flex:1;padding:9px 10px;border-radius:8px;background:#f3f4f6;overflow:hidden;text-overflow:ellipsis;font-size:12px}

/* Dashboard */
.dashboard{height:100%;overflow:auto;background:#f4f5f7}.dash-header{height:68px;background:#fff;border-bottom:1px solid #e3e6ea;display:flex;align-items:center;padding:0 34px;position:sticky;top:0;z-index:5}.dash-user{margin-left:auto;display:flex;align-items:center;gap:14px;color:#555e69}.dash-main{padding:40px 44px 70px;max-width:1450px;margin:auto}.dash-heading{display:flex;align-items:end;gap:20px;margin-bottom:28px}.dash-heading h1{font-size:36px;margin:0 0 4px;letter-spacing:-1.5px}.dash-heading p{margin:0;color:#737b86}.dash-actions{margin-left:auto;display:flex;gap:10px}.plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.plan-card,.empty-plan,.loading-card{background:#fff;border:1px solid #e0e4e8;border-radius:17px;min-height:210px;padding:20px}.plan-card{cursor:pointer;transition:.18s ease;box-shadow:0 4px 16px #1f29370a}.plan-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px #1f293714;border-color:#cbd5df}.plan-card-top{display:flex;gap:8px;align-items:start}.plan-card h2{margin:0;font-size:21px;line-height:1.15}.card-menu{margin-left:auto;border:0;background:#f0f2f4;color:#8a929c;width:28px;height:28px;border-radius:9px}.plan-card p{color:#747c87;min-height:42px}.plan-progress{height:7px;background:#eef1f4;border-radius:7px;overflow:hidden}.plan-progress i{height:100%;display:block;background:#319654;border-radius:inherit}.plan-card-meta{display:flex;gap:12px;flex-wrap:wrap;color:#444d58;font-size:13px;margin-top:13px}.plan-card>small{display:block;margin-top:12px;color:#969da6}.empty-plan{text-align:left;border-style:dashed;display:grid;place-content:center;justify-items:center;color:#69727e;background:#fbfcfd}.empty-plan b{font-size:36px;font-weight:400}.empty-plan span{font-weight:750;color:#252a32}.empty-plan small{margin-top:5px}.loading-card{color:#7b8490}

/* Editor */
.editor-shell{height:100%;display:flex;flex-direction:column;background:#eef1f4}.editor-header{height:64px;display:flex;align-items:center;gap:10px;background:#fff;border-bottom:1px solid #dfe3e8;padding:0 14px 0 12px;z-index:30}.plan-title-button{border:0;background:transparent;text-align:left;min-width:220px;max-width:380px}.plan-title-button span{display:block;font-size:17px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-title-button small{color:#8b939e}.project-metrics{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.project-metrics span{background:#f3f5f7;border:1px solid #e3e6e9;border-radius:99px;padding:5px 9px;font-size:11px;color:#626b76;white-space:nowrap}.project-metrics b{color:#20252c}.project-metrics .metric-alert{background:#fff1f1;border-color:#f3c7c7;color:#b53a3a}.save-state{font-size:12px;color:#79818b;min-width:62px;text-align:right}.editor-main{min-height:0;flex:1;display:flex}.palette-panel{width:210px;background:#fff;border-right:1px solid #dfe3e8;padding:14px 12px;overflow:auto;z-index:20}.palette-title{text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:800;color:#8c95a0;margin:2px 4px 10px}.palette-item{width:100%;display:flex;align-items:center;gap:10px;border:1px solid #e1e4e8;background:#fff;border-radius:12px;padding:9px 8px;text-align:left;margin-bottom:8px;color:#303640}.palette-item:hover{background:#f7f9fa;border-color:#cdd4dc}.palette-swatch{width:30px;height:26px;border-radius:8px;box-shadow:inset 0 0 0 1px #0002}.palette-group-icon{width:30px;height:26px;border:2px solid #7d8793;border-radius:4px;position:relative}.palette-group-icon:before{content:"";position:absolute;left:-2px;right:-2px;top:-2px;height:7px;background:#7d8793}.palette-divider{height:1px;background:#e5e8eb;margin:16px 0}.palette-key strong{font-size:12px}.palette-key>div>div{display:flex;align-items:center;gap:7px;font-size:11px;color:#5e6874;margin-top:7px}.palette-key i{display:inline-block;width:14px;height:14px;border-radius:4px}.key-statuses{margin-top:11px!important;padding-top:8px;border-top:1px solid #eceef1;display:grid!important;gap:5px}.key-statuses span{display:flex;align-items:center;gap:6px}.key-statuses i{background:#fff!important;border:2px solid;width:12px;height:12px}.palette-hint{margin-top:18px;padding:10px;background:#f5f7f9;border-radius:10px;color:#7a838e;font-size:11px;line-height:1.45}.board-section{min-width:0;flex:1;display:flex;flex-direction:column}.board-toolbar{height:46px;display:flex;align-items:center;gap:6px;padding:0 10px;background:#fbfcfd;border-bottom:1px solid #dfe3e8;z-index:15}.tool-btn{height:30px;min-width:30px;background:#eef1f4;color:#3e4752;padding:0 9px}.tool-btn:hover:not(:disabled){background:#e0e5ea}.tool-btn:disabled{opacity:.38;cursor:default}.tool-btn.wide{font-size:12px}.tool-btn.zoom-label{min-width:58px}.tool-sep{height:20px;width:1px;background:#d8dde2;margin:0 2px}.toolbar-help{font-size:11px;color:#9098a2;margin-left:auto}.board-viewport{position:relative;min-height:0;flex:1;overflow:hidden;background-color:var(--board-bg);background-image:radial-gradient(circle,#c9ced5 1px,transparent 1.2px);background-size:var(--grid-size,24px) var(--grid-size,24px);background-position:var(--grid-x,0) var(--grid-y,0);touch-action:none;cursor:grab}.board-viewport:active{cursor:grabbing}.board-world{position:absolute;left:0;top:0;transform-origin:0 0;width:1px;height:1px;overflow:visible}.node-layer,.connector-layer{position:absolute;left:0;top:0;width:100000px;height:100000px;overflow:visible}.connector-layer{z-index:1;pointer-events:none}.node-layer{z-index:2;pointer-events:none}.pj-node{position:absolute;pointer-events:auto;user-select:none}.pj-node.selected{filter:drop-shadow(0 0 0.8px #111) drop-shadow(0 0 5px #1997d955)}.pj-node.dragging{opacity:.92;filter:drop-shadow(0 10px 20px #1113);z-index:10}.pj-task{border-radius:14px;overflow:visible;background:transparent}.task-main{height:calc(100% - 24px);min-height:50px;background:var(--task-fill);border:3px solid var(--status-col);border-radius:14px 14px 10px 10px;color:white;display:grid;place-items:center;text-align:center;padding:10px 22px 10px 12px;position:relative;box-shadow:0 2px 5px #1d29371d}.task-title{font-size:12px;line-height:1.25;font-weight:650}.task-meta{height:24px;display:grid;grid-template-columns:auto 1fr auto;align-items:stretch;gap:2px;font-size:9px;font-weight:700}.task-meta>span{display:flex;align-items:center;justify-content:center;background:#e5e8eb;color:#222b34;padding:0 5px;border-radius:0 0 5px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-meta .meta-owner{background:#d9dde2}.task-meta .meta-date.late{background:#ffd5d5;color:#9e2020}.cost-estimated{background:#fff0d8!important;color:#754612!important;outline:1.5px solid #e78d36;outline-offset:-1.5px}.cost-confirmed{background:#def4e3!important;color:#215e2d!important;outline:1.5px solid #4aaf61;outline-offset:-1.5px}.cost-blocked{background:#ffe0e0!important;color:#8b2626!important;outline:1.5px solid #e44343;outline-offset:-1.5px}.connector-handle{position:absolute;right:-7px;top:50%;width:13px;height:13px;border-radius:50%;transform:translateY(-50%);border:2px solid #fff;background:#1b2430;box-shadow:0 0 0 1px #2226;opacity:0;transition:.15s}.pj-node:hover .connector-handle{opacity:1}.note-callout{position:absolute;right:5px;top:4px;border:0;background:#ffffffd9;color:#29313a;width:20px;height:20px;border-radius:6px;font-size:12px}.note-preview{display:none;position:absolute;left:calc(100% + 8px);top:0;width:240px;max-height:180px;overflow:hidden;background:#fff;color:#343a42;text-align:left;padding:11px;border-radius:10px;border:1px solid #d8dde3;box-shadow:0 10px 28px #1113;z-index:30;white-space:pre-wrap;font-size:11px;line-height:1.45}.note-preview small{display:block;margin-top:8px;color:#8c949e}.note-callout:hover+.note-preview,.note-preview:hover{display:block}.pj-group{border:2px solid #7f8994;border-radius:3px;background:#ffffff22;box-shadow:0 2px 4px #10182008;z-index:0}.group-head{height:38px;background:#7f8994;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;position:relative}.group-space{height:calc(100% - 38px);background:#ffffff42}.group-handle{right:-8px}.edge-visible,.edge-chevrons,.edge-jump-arc{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:stroke .2s}.edge-visible{opacity:.82}.edge-chevrons{opacity:.96}.edge-hit{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke;cursor:pointer}.edge-hit.selected{stroke:#239fd522;stroke-width:18}.edge-jump-erase{fill:none;stroke:var(--board-bg);stroke-linecap:round}.edge-jump-arc{fill:none}.edge-visible.insert-target,.edge-chevrons.insert-target{animation:edgePulse .6s ease-in-out infinite alternate;stroke-width:5!important;filter:drop-shadow(0 0 4px currentColor)}@keyframes edgePulse{to{opacity:.35}}.temp-edge{fill:none;stroke:#3f91b5;stroke-width:2.5;stroke-dasharray:6 5;pointer-events:none}.zoom-badge{position:absolute;right:12px;bottom:10px;color:#838c97;font-size:10px}

/* Modal */
.modal-host{position:relative;z-index:100}.modal-backdrop{position:fixed;inset:0;background:#11182755;backdrop-filter:blur(3px);display:grid;place-items:center;padding:30px;z-index:100;animation:fadeIn .16s ease}.modal-card{position:relative;width:min(760px,94vw);max-height:90vh;overflow:auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 28px 90px #1118274d;animation:modalPop .18s cubic-bezier(.2,.8,.2,1)}.compact-modal{width:min(460px,94vw)}.task-editor-modal{width:min(800px,94vw)}.appearance-modal{width:min(720px,94vw)}@keyframes fadeIn{from{opacity:0}}@keyframes modalPop{from{opacity:.4;transform:scale(.93) translateY(8px)}}.modal-close{position:absolute;right:14px;top:13px;width:32px;height:32px;border:0;border-radius:10px;background:#f0f2f4;font-size:22px;color:#65707b}.modal-zoom-title{font-size:22px;font-weight:850;letter-spacing:-.5px;margin:2px 40px 20px 0}.modal-card form{display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.span2{grid-column:1/-1}.input-pair{display:grid;grid-template-columns:1fr 96px;gap:6px}.form-help{margin:0;color:#737d88;font-size:12px;line-height:1.45}.modal-actions{display:flex;align-items:center;gap:8px;margin-top:6px}.notes-label{display:flex;justify-content:space-between}.rich-toolbar{display:flex;gap:5px}.rich-toolbar button{border:1px solid #d8dde2;background:#f6f7f8;border-radius:7px;padding:5px 9px}.rich-editor{border:1px solid #cfd5dc;border-radius:10px;min-height:150px;max-height:270px;overflow:auto;padding:11px;outline:none;line-height:1.45}.rich-editor p{margin:.35em 0}.rich-editor ul,.rich-editor ol{padding-left:22px}.over{color:#c83232;font-weight:800}.note-reader{width:min(720px,94vw)}.note-full{line-height:1.6;color:#2b3139}.appearance-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px}.appearance-columns h3{margin:0 0 9px;font-size:14px}.colour-row{grid-template-columns:1fr 48px;align-items:center;margin-bottom:7px}.colour-row input{padding:2px;height:34px}.appearance-options{margin-top:18px;padding-top:16px;border-top:1px solid #e6e9ec}.appearance-options output{font-size:11px;color:#707984}
.toast-region{position:fixed;right:18px;bottom:18px;z-index:500;display:grid;gap:8px;pointer-events:none}.toast{background:#20252d;color:#fff;padding:11px 14px;border-radius:11px;box-shadow:0 10px 28px #1115;transform:translateY(10px);opacity:0;transition:.22s;max-width:360px;font-size:13px}.toast.show{transform:none;opacity:1}.toast.error{background:#a83131}.toast.warn{background:#9a6a19}

@media(max-width:900px){.auth-page{grid-template-columns:1fr}.auth-brand{display:none}.auth-card{width:min(460px,90%)}.palette-panel{width:170px}.project-metrics{display:none}.toolbar-help{display:none}.editor-header .quiet-btn{padding:8px}.plan-title-button{min-width:150px}.appearance-columns{grid-template-columns:1fr}}
@media(max-width:650px){.palette-panel{position:absolute;left:0;top:110px;bottom:0;width:155px;z-index:25;transform:translateX(-145px);transition:.2s}.palette-panel:hover{transform:translateX(0)}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.dash-main{padding:24px 18px}.dash-heading{align-items:start;flex-direction:column}.dash-actions{margin-left:0}.editor-header{gap:5px}.editor-header>#pjAppearance,.editor-header>#pjExport{display:none}}

/* PlanJot v2 — shared canvas, timeline and detailed plan */
[hidden]{display:none!important}
:root{--pj-ink:#17263a;--pj-muted:#64748b;--pj-line:#dde4eb;--pj-soft:#f2f5f8;--pj-accent:#246b67}
body{color:var(--pj-ink)}button,input,select,textarea{font:inherit}button{transition:background .16s,box-shadow .16s,transform .16s}button:focus-visible,[tabindex]:focus-visible{outline:3px solid #6bb9b4;outline-offset:3px}button:hover{filter:brightness(.98)}button:active{transform:translateY(1px)}
.v2-shell{display:flex;flex-direction:column;height:100dvh;overflow:hidden;background:#f8fafb}
.v2-shell .editor-header{flex:0 0 auto;min-height:70px;padding:12px 22px;border-bottom:1px solid var(--pj-line);background:#fff;gap:14px}
.v2-shell .plan-title-button{text-align:left;max-width:290px;min-width:160px}.v2-shell .plan-title-button>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:17px}.v2-shell .plan-title-button small{color:var(--pj-muted);font-weight:500;font-size:11px}
.v2-shell .project-metrics{gap:8px 18px;flex-wrap:wrap;font-size:11px;max-width:500px}.v2-shell .project-metrics span{white-space:nowrap}.v2-shell .project-metrics b{font-size:13px}
.v2-shell .primary-btn{background:#182f40}.v2-shell .save-state{font-size:11px;white-space:nowrap;color:#34746a}.v2-shell .save-error{color:#b63737}
.view-switcher{display:flex;align-items:center;gap:12px;padding:8px 22px;border-bottom:1px solid var(--pj-line);background:#fff;flex:0 0 auto;min-height:53px}
.view-tabs{display:flex;gap:4px;background:#eff3f6;padding:4px;border-radius:11px}.view-tabs button{background:transparent;border:0;padding:8px 16px;border-radius:8px;color:#6a7789;font-weight:650;font-size:12px;display:flex;gap:8px;align-items:center}.view-tabs button.active{background:#fff;color:#172d40;box-shadow:0 1px 5px #1b2a401c}.view-tabs button:hover{color:#1c625e}.view-note{margin-left:auto;color:#82909e;font-size:11px}
.v2-shell .editor-main{display:flex;flex:1;min-height:0}.v2-shell .palette-panel{width:200px;min-width:200px;padding:22px 14px;border-right:1px solid var(--pj-line);background:#fff;overflow:auto}.v2-shell .palette-title{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#738193;margin-bottom:15px}.v2-shell .palette-item{font-size:12px;border:1px solid #e4e9ee;background:#fcfdfe;margin:7px 0;padding:11px 9px;border-radius:10px;line-height:1.4;min-height:47px;gap:9px}.v2-shell .palette-item:hover{background:#edf5f4;box-shadow:0 2px 8px #2038480b}.v2-shell .palette-swatch{border-radius:6px;height:22px;width:22px;flex:0 0 22px}.v2-shell .palette-key{font-size:10px;line-height:1.5}.v2-shell .palette-hint{font-size:11px;line-height:1.7;color:#768296;margin-top:20px}.v2-shell .key-statuses{display:grid;grid-template-columns:1fr;gap:8px}
.v2-shell .board-section{display:flex;flex:1;min-width:0;min-height:0;position:relative;flex-direction:column}.v2-shell .board-toolbar{height:50px;flex:0 0 50px;background:#f8fafc;border-bottom:1px solid var(--pj-line);padding:7px 16px;gap:5px}.v2-shell .toolbar-help{margin-left:auto;font-size:10px;color:#8893a1}.v2-shell .tool-btn{background:#fff;border:1px solid #e0e7ed;border-radius:8px;min-height:31px}.v2-shell .tool-btn:hover{background:#eaf4f3}.v2-shell .board-viewport{flex:1;min-height:0;background-color:#f6f8fa;background-image:radial-gradient(#ccd5df .7px,transparent .7px);touch-action:none}.v2-shell .board-world{position:absolute;left:0;top:0;width:1px;height:1px;transform-origin:0 0}.v2-shell .node-layer{position:absolute;left:0;top:0;overflow:visible}.v2-shell .connector-layer{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.v2-shell .pj-task{box-sizing:border-box;display:flex;flex-direction:column;border:2px solid var(--status-col);border-radius:14px;background:var(--task-fill);color:var(--task-text,#fff);box-shadow:0 3px 9px #25374813;overflow:visible;min-height:136px;cursor:grab;user-select:none;touch-action:none}
.v2-shell .pj-task.selected{box-shadow:0 0 0 4px #74b9b326,0 7px 22px #283c4a22;outline:2px solid #28756f;outline-offset:3px}.v2-shell .pj-task.dragging{z-index:50;cursor:grabbing;box-shadow:0 12px 32px #17354a3b;opacity:.96}
.v2-shell .task-main{position:relative;display:flex;align-items:center;padding:28px 15px 5px;flex:1;min-height:59px;color:inherit;background:none;border:0;border-radius:12px 12px 0 0}
.v2-shell .task-number{position:absolute;left:11px;top:8px;font-size:9px;font-weight:750;line-height:1;padding:4px 6px;border:1px solid #ffffff35;border-radius:5px;background:#ffffff14;color:inherit;letter-spacing:.02em}
.v2-shell .task-title{display:block;text-align:left;font-size:13px;font-weight:600;line-height:1.35;max-height:36px;overflow:hidden;overflow-wrap:anywhere;width:100%;color:inherit}
.v2-shell .task-meta{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.14fr);grid-template-rows:24px 25px;gap:5px;flex:0 0 auto;margin:6px 8px 8px;padding:0;width:auto;left:auto;right:auto;top:auto;bottom:auto;font-size:10px;max-height:none;border:0;background:none;box-shadow:none}
.v2-shell .task-meta>span{position:relative;display:flex;align-items:center;justify-content:flex-start;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:3px 6px;border:1px solid #ffffff32;border-radius:5px;background:#ffffffeb;color:#26384b;font-size:10px;cursor:text;text-align:left;box-sizing:border-box;line-height:1.2}
.v2-shell .task-meta>span:hover{background:#fff;border-color:#fff}.v2-shell .task-meta .meta-cost{border-left:3px solid #d9a327}.v2-shell .task-meta .cost-confirmed{border-left-color:#2d9a4a}.v2-shell .task-meta .cost-blocked{border-left-color:#d94747}.v2-shell .task-meta .late{color:#9b2727;background:#fff0ef;border-color:#dc7777}.v2-shell .task-meta .meta-duration{font-weight:500;color:#667487}.v2-shell .task-meta .meta-owner{font-weight:500}
.v2-shell .connector-handle{position:absolute;width:12px;height:12px;right:-8px;top:42px;bottom:auto;border:2px solid #fff;border-radius:50%;background:#5c7481;box-shadow:0 0 0 1px #8b9ba6;cursor:crosshair;opacity:.7;z-index:5}.v2-shell .pj-task:hover .connector-handle,.v2-shell .pj-task:focus .connector-handle{opacity:1;background:#2a7c75}.v2-shell .note-callout{position:absolute;right:8px;top:7px;color:inherit;background:#ffffff1a;border:1px solid #ffffff25;font-size:12px;width:22px;height:22px;padding:0;border-radius:5px}.v2-shell .note-preview{display:none;position:absolute;left:calc(100% + 15px);top:0;width:240px;max-height:190px;overflow:auto;padding:13px;background:#fff;color:#283b4e;box-shadow:0 9px 30px #172b4930;border:1px solid #e0e6ed;border-radius:12px;font-size:12px;line-height:1.5;z-index:100;white-space:normal}.v2-shell .pj-task:hover .note-preview{display:block;pointer-events:none}.v2-shell .pj-task:has(.inline-input) .note-preview{display:none}.v2-shell .note-preview small{display:block;color:#7b8899;margin-top:8px;font-size:10px}
.v2-shell .pj-group{box-sizing:border-box;background:#ffffff8c;border:1.5px solid #b8c6d2;border-radius:15px;box-shadow:0 3px 15px #2c456309;overflow:visible;cursor:grab;user-select:none;touch-action:none}.v2-shell .group-head{height:48px;border:0;border-bottom:1px solid #d2dee6;background:#e7eef3;color:#41596c;border-radius:13px 13px 0 0;padding:0 15px;display:flex;gap:10px;align-items:center;font-size:13px;font-weight:650;position:relative}.v2-shell .group-head>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v2-shell .group-head>small{font-size:10px;white-space:nowrap;color:#6d8193;font-weight:500}.v2-shell .group-space{height:calc(100% - 48px);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#a5b2bd;font-size:13px;line-height:1.9;pointer-events:none}.v2-shell .group-space small{font-size:10px}.v2-shell .group-handle{top:18px;right:-7px}.v2-shell .pj-group.drop-ready{border:2px solid #39968d;background:#e9f7f1a8;box-shadow:0 0 0 7px #66b9ad26}.v2-shell .pj-group.drop-ready .group-head{background:#cce9e3}
.inline-input{border:0!important;box-shadow:none!important;background:#fff!important;color:#17263a!important;outline:none!important;width:100%!important;min-width:0!important;height:100%!important;padding:3px!important;margin:0!important;border-radius:3px!important;font-size:inherit!important;line-height:1.2!important}.inline-editing{overflow:visible!important;background:#fff!important;box-shadow:0 0 0 2px #72aaa5!important;border-radius:5px;color:#17263a!important}.task-title.inline-editing{height:30px;min-height:30px;max-height:30px}.meta-date.inline-editing{z-index:10}.meta-date .inline-input{font-size:9px!important}
.tidying .pj-node{transition:left .32s ease,top .32s ease,width .32s ease,height .32s ease}.edge-visible,.edge-chevrons,.edge-jump-arc{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.edge-jump-halo{fill:none;stroke:#f6f8fa;stroke-linecap:round;pointer-events:none}.edge-jump-erase{stroke:#f6f8fa;fill:none;stroke-linecap:butt;pointer-events:none}.edge-hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:pointer}.edge-hit:hover{stroke:#238b7814}.drop-line-pulse{fill:none;stroke:#2ba89b;stroke-width:6;stroke-linecap:round;stroke-dasharray:10 6;animation:pjPulse .8s ease infinite;pointer-events:none}@keyframes pjPulse{50%{stroke-width:10;opacity:.45}}.route-notice{position:absolute;bottom:15px;left:20px;right:20px;margin:auto;max-width:720px;padding:11px 15px;border-radius:10px;border:1px solid #edd8ad;background:#fff9e9;color:#7e632b;font-size:12px;line-height:1.5;z-index:90}
.project-page{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:24px 26px 12px;background:#fbfcfd;animation:pjPageIn .18s ease}@keyframes pjPageIn{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}.project-page-header{display:flex;justify-content:space-between;gap:22px;align-items:center;flex:0 0 auto;margin-bottom:18px}.eyebrow{color:#58817c;font-size:9px;letter-spacing:.16em;font-weight:750;margin-bottom:6px}.project-page-header h1{font-size:25px;font-weight:740;letter-spacing:-.025em;margin:0 0 6px}.project-page-header p{font-size:11px;line-height:1.6;color:#768294;margin:0}.view-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.view-actions .quiet-btn{font-size:11px;white-space:nowrap}.view-search{width:185px;padding:9px 11px;border:1px solid #dbe3ea;border-radius:9px;font-size:11px;background:#fff}.zoom-select-label{font-size:10px;color:#6b7889;display:flex;align-items:center;gap:5px}.gantt-zoom{border:1px solid #dbe3ea;border-radius:8px;padding:8px;background:#fff;font-size:11px}
.schedule-warning{display:flex;align-items:center;gap:9px;background:#edf5f1;color:#527c69;padding:9px 13px;border-radius:9px;font-size:10px;margin-bottom:15px;flex:0 0 auto;min-height:32px}.schedule-warning.has-warnings{background:#fff6e5;color:#85662c}.schedule-warning details{margin-left:auto;position:relative}.schedule-warning summary{cursor:pointer;white-space:nowrap}.schedule-warning ul{position:absolute;right:0;width:340px;max-height:260px;overflow:auto;z-index:40;background:#fff;border:1px solid #dfd5c4;box-shadow:0 8px 25px #1232;padding:15px 15px 15px 28px;border-radius:10px;line-height:1.6}.schedule-ok-dot{width:6px;height:6px;background:#6a9b7c;border-radius:50%;display:inline-block}.view-footer{font-size:10px;color:#8b96a4;display:flex;justify-content:space-between;gap:15px;margin-top:13px;flex:0 0 auto;line-height:1.6}
.detail-scroll{flex:1;min-height:0;overflow:auto;border:1px solid #dde5ec;border-radius:12px;background:#fff}.project-table{border-collapse:separate;border-spacing:0;width:100%;font-size:11px;text-align:left;min-width:1100px}.project-table thead{position:sticky;top:0;z-index:3}.project-table th{background:#f0f4f7;color:#708195;font-size:9px;text-transform:uppercase;letter-spacing:.055em;padding:14px 9px;border-bottom:1px solid #dbe3ea;white-space:nowrap}.project-table td{border-bottom:1px solid #ecf0f3;padding:10px 9px;height:68px;vertical-align:middle;min-width:80px}.project-table th:first-child,.project-table td:first-child{padding-left:15px;min-width:48px;color:#8093a7;font-size:10px}.project-table .name-col{min-width:225px}.project-table .group-row td{background:#f3f6f8;font-weight:650}.project-table tbody tr:hover td{background:#f7fbfa}.project-table .row-notice td:first-child{box-shadow:inset 3px 0 #d8aa58}.cell-edit{display:inline-block;padding:5px 4px;margin:-4px;min-width:45px;min-height:24px;cursor:text;border-radius:5px;white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.cell-edit:hover{background:#eaf3f1}.row-kind,.cost-certainty{display:block;font-weight:400;color:#95a0ad;font-size:9px;margin-top:6px}.row-kind{margin-left:16px}.cost-certainty{text-transform:capitalize}.derived-date .cell-edit{color:#8da0b0;font-style:italic}.task-type-dot{display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:8px;flex:0 0 8px}.row-status{border:1px solid #e2e8ee;color:#4c6173;background:#fff;border-radius:6px;font-size:10px;padding:6px;max-width:125px}.late-text{display:block;color:#b6574b;font-size:9px;margin-top:4px}.dependency-cell,.group-cell{background:none;border:0;color:#52797e;display:flex;flex-wrap:wrap;gap:4px;padding:3px;font-size:10px;max-width:185px;cursor:pointer;text-align:left}.dependency-pill{background:#edf3f5;color:#517584;border:1px solid #dbe6ea;border-radius:5px;padding:3px 6px;font-size:9px;display:inline-block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-value{font-size:10px;color:#9aa8b5}.row-edit{border:0;background:#eff4f7;color:#657f94;border-radius:6px;padding:5px 7px;font-size:11px}.empty-table{text-align:center;color:#94a1af;padding:50px!important}.status-pill{border-radius:5px;padding:5px;background:#eef2f5;font-size:9px}.status-pill.done{background:#e9f5ec;color:#49845c}.status-pill.blocked{background:#fbedeb;color:#a86657}
.gantt-scroll{flex:1;min-height:0;overflow:auto;border:1px solid #dde5ec;border-radius:12px;background:#fff;position:relative;overscroll-behavior:contain}.gantt-grid{display:grid;grid-template-rows:56px auto;position:relative;min-width:100%;width:max-content}.gantt-heading{grid-column:1;grid-row:1;position:sticky;left:0;top:0;z-index:8;background:#eef3f7;color:#7a8c9f;font-size:9px;font-weight:700;letter-spacing:.08em;padding:21px 16px;border-bottom:1px solid #dfe6ed;border-right:1px solid #dfe6ed}.gantt-axis{grid-column:2;grid-row:1;position:sticky;top:0;z-index:6;background:#f5f8fa;border-bottom:1px solid #dfe6ed}.gantt-tick{position:absolute;top:0;height:55px;font-size:9px;color:#738498;padding:10px 3px;text-align:center;border-left:1px solid #e1e8ee;overflow:hidden}.gantt-tick b{font-weight:550;white-space:nowrap}.gantt-tick small{display:block;font-size:8px;margin-top:8px;color:#a0abb7}.gantt-tick.weekend{background:#e8eef255}.gantt-labels{grid-column:1;grid-row:2;position:sticky;left:0;z-index:5;background:#fff;border-right:1px solid #dfe6ed}.gantt-label{padding:10px 12px;border-bottom:1px solid #eaf0f4;box-sizing:border-box;overflow:hidden}.gantt-label.is-group{background:#f1f5f8}.gantt-row-title{width:100%;padding:0;border:0;background:transparent;color:#3b5268;display:flex;align-items:center;gap:4px;text-align:left;font-size:11px}.gantt-row-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.gantt-row-meta{display:flex;align-items:center;justify-content:space-between;margin-top:6px;font-size:9px;color:#98a4af;max-height:19px}.gantt-row-meta .dependency-cell{max-width:180px;white-space:nowrap;flex-wrap:nowrap;padding:0}.gantt-row-meta .dependency-pill{padding:1px 4px;font-size:8px}.gantt-row-meta .empty-value{font-size:8px}
.gantt-chart{grid-column:2;grid-row:2;position:relative;background-image:linear-gradient(to right,#e6edf3 1px,transparent 1px),linear-gradient(to bottom,#e9eef3 1px,transparent 1px);background-size:var(--day-width) 100%,100% var(--row-height);background-color:#fff}.gantt-bar{position:absolute;height:32px;border-radius:7px;background:var(--bar-colour);color:#fff;box-shadow:0 2px 6px #23354620;border-bottom:3px solid var(--bar-status);cursor:grab;user-select:none;touch-action:none;z-index:3;min-width:8px;display:flex;align-items:center}.gantt-bar:hover{filter:brightness(1.05);box-shadow:0 3px 12px #23354630}.gantt-bar.dragging{z-index:10;box-shadow:0 7px 20px #23354655;cursor:grabbing}.gantt-bar.dragging .bar-text{overflow:visible;white-space:nowrap;min-width:max-content;background:var(--bar-colour);padding:4px 8px;border-radius:4px}.gantt-summary{height:14px;top:20px;border-radius:3px;background:#7890a07a;cursor:pointer;border-bottom:0}.gantt-summary .bar-text{color:#486473;font-size:9px;overflow:hidden}.bar-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:4px 11px;font-size:10px;pointer-events:none}.bar-resize{position:absolute;top:0;height:100%;width:9px;cursor:ew-resize;z-index:5}.bar-resize.start{left:0;border-left:2px solid #ffffff70;border-radius:7px 0 0 7px}.bar-resize.end{right:0;border-right:2px solid #ffffff70;border-radius:0 7px 7px 0}.gantt-bar.inferred-bar{background-image:repeating-linear-gradient(120deg,transparent 0,transparent 8px,#ffffff14 8px,#ffffff14 11px)}.gantt-unscheduled{position:absolute;left:14px;max-width:450px;height:34px;background:#fafbfd;border:1px dashed #c9d8e2;border-radius:7px;padding:5px 13px;font-size:10px;color:#8c9cab;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:3}.gantt-links{position:absolute;inset:0;overflow:visible;pointer-events:none;z-index:2}.gantt-dependency-line{fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.7;pointer-events:stroke;cursor:pointer}.gantt-dependency-line:hover{stroke-width:3;opacity:1}.gantt-dependency-head{fill:none;stroke-width:1.4;pointer-events:none}.gantt-today,.gantt-deadline{position:absolute;top:0;bottom:0;border-left:1.5px dashed #65a6a0;z-index:1;pointer-events:none}.gantt-deadline{border-color:#cc8f87}.gantt-today span,.gantt-deadline span{position:sticky;top:0;display:block;font-size:8px;color:#fff;background:#70a6a0;padding:3px;border-radius:3px;transform:translate(-50%,0)}.gantt-deadline span{background:#bc8d86}
.modal-card{border:1px solid #ffffffa0;box-shadow:0 25px 80px #152d4a33}.modal-card label{font-size:11px}.modal-card input,.modal-card select,.modal-card textarea{font-size:12px;border-radius:8px;border-color:#d5e0e9}.modal-backdrop{backdrop-filter:blur(7px);background:#22324866}.modal-zoom-title{font-size:20px;font-weight:700;letter-spacing:-.025em;margin:0 0 20px}.task-editor-modal{width:min(700px,calc(100vw - 40px));max-height:91dvh}.task-editor-modal .form-grid{gap:12px 16px}.task-editor-modal .form-grid label input,.task-editor-modal .form-grid label select{min-height:34px}.task-editor-modal .rich-editor{min-height:85px;max-height:150px;overflow:auto}.notes-label{display:flex;justify-content:space-between;font-size:11px;font-weight:600;margin:14px 0 7px}.notes-label small{font-size:10px;font-weight:400;color:#7d8c9b}.notes-label .over-limit{color:#bc3838}.rich-toolbar{border-radius:7px 7px 0 0}.rich-toolbar button{font-size:10px}.input-pair>span{display:flex;align-items:center;padding:0 8px;font-size:11px;color:#8593a4}.form-error{color:#b5433c;font-size:12px;line-height:1.5}.form-help{font-size:11px;line-height:1.65;color:#7a8a9b}.group-task-list{max-height:300px;overflow:auto;margin-top:15px}.group-task-list>div{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid #e7ecf0;border-radius:8px;margin-bottom:5px;font-size:11px}.group-task-list span{flex:1}.group-task-list button{padding:5px 9px;border:0;background:#edf3f5;border-radius:5px}.dependency-options{max-height:300px;overflow:auto;display:grid;gap:5px;margin-top:10px}.dependency-option{display:flex!important;flex-direction:row!important;align-items:center;padding:9px 10px;background:#f6f9fb;border:1px solid #e3eaf0;border-radius:7px;gap:10px;cursor:pointer}.dependency-option input{width:auto!important;min-height:0!important}.dependency-option b{color:#658396;font-size:10px;margin-right:5px}.successor-list{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.successor-list small{font-size:11px;color:#8b98a6}.note-full{line-height:1.7;overflow-wrap:anywhere}
@media(max-width:1250px){.v2-shell .project-metrics{max-width:340px}.v2-shell .editor-header{gap:9px;padding:10px 14px}.v2-shell .palette-panel{width:168px;min-width:168px}.project-page-header{align-items:flex-start}.view-search{width:155px}.view-actions{max-width:410px}.v2-shell .toolbar-help{display:none}.view-note{display:none}.view-switcher{flex-wrap:wrap}.view-switcher>.quiet-btn{font-size:10px}}
@media(max-width:850px){.v2-shell .project-metrics{display:none}.v2-shell .editor-header{min-height:60px}.v2-shell .editor-header .quiet-btn{font-size:10px;padding:8px}.v2-shell .plan-title-button{min-width:100px;max-width:160px}.v2-shell .palette-panel{width:145px;min-width:145px;padding:15px 8px}.v2-shell .palette-item{font-size:10px}.view-tabs button{padding:7px 11px}.project-page{padding:16px 12px 8px}.project-page-header{flex-direction:column;gap:10px}.view-actions{max-width:none}.project-page-header h1{font-size:22px}.view-footer{flex-direction:column;gap:0}.schedule-warning{align-items:flex-start;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
/* Explicitly reset v1 fixed footer geometry: all fields remain inside each card. */
.v2-shell .pj-task .task-main{height:auto;flex:1 1 auto;min-height:59px}
.v2-shell .pj-task .task-meta{height:auto;flex:0 0 auto;min-height:54px}
.v2-shell .node-layer{width:1px;height:1px;overflow:visible}

.inherited-dependencies{border:0;background:transparent;padding:3px;font-size:9px;color:#879ca9;cursor:pointer;text-align:left}.gantt-row-meta .inherited-dependencies{font-size:8px;padding:0 4px;white-space:nowrap}
