/* V6.8: shared motion tokens. Decorative layers never intercept input. */
@property --workspace-accent { syntax: '<color>'; inherits: true; initial-value: #0e67b3; }
:root{--motion-fast:140ms;--motion-med:220ms;--motion-slow:360ms;--motion-ease:cubic-bezier(.2,.75,.25,1);--polish-blue:#0e67b3;--glow-alpha:18%;--lift:3px}
html[data-motion="off"]{--motion-fast:0ms;--motion-med:0ms;--motion-slow:0ms}
html[data-glow="minimal"]{--glow-alpha:8%}html[data-glow="strong"]{--glow-alpha:25%}
button,a,input,select,textarea,summary,[tabindex]{outline-offset:4px}
:focus-visible{outline:3px solid #1684cf!important}
.btn,.nav-btn,.fav,.person-card,.project-card,.note-card,.command-card,.future-project,.rel-chip,.tag,.colour-swatch,.search-result{transition:transform var(--motion-fast) var(--motion-ease),box-shadow var(--motion-med),border-color var(--motion-med),background-color var(--motion-med),color var(--motion-med),opacity var(--motion-med)}
.btn:not(.danger):hover,.btn:not(.danger):focus-visible{transform:translateY(-1px);box-shadow:0 3px 9px #12355312}
.btn:active{transform:translateY(0)}
.project-card:hover,.project-card:focus-within,.person-card:hover,.person-card:focus-within,.note-card:hover,.note-card:focus-within,.command-card:hover,.command-card:focus-within{transform:translateY(calc(-1 * var(--lift)));box-shadow:0 9px 22px #16324d12;border-color:color-mix(in srgb,var(--card-accent,var(--nhs)) 35%,var(--line))}
.future-project:hover,.future-project:focus-within{transform:translateY(-1px);box-shadow:0 4px 12px #16324d09}
.polish-completed{opacity:.86}.polish-completed:hover{transform:translateY(-1px)}
.nav-btn:hover,.nav-btn:focus-visible,.fav:hover,.fav:focus-visible{transform:translateX(2px)}
.nav-btn{position:relative}.polish-nav-marker{position:absolute;left:0;top:0;width:3px;background:var(--nhs);border-radius:3px;pointer-events:none;transition:transform var(--motion-med) var(--motion-ease),height var(--motion-med)}
.fav .dot{transition:box-shadow var(--motion-med)}.fav:hover .dot,.fav:focus-visible .dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--polish-color,var(--nhs)) 12%,transparent)}
body .global-search:focus-within{border-color:var(--polish-blue);box-shadow:0 0 0 4px #0e67b314;background:var(--surface,#fff);transform:translateY(-1px)}
.global-search{transition:transform var(--motion-med),box-shadow var(--motion-med),border-color var(--motion-med)}
.kbd{opacity:.55;transition:opacity var(--motion-fast)}.global-search:hover .kbd,.global-search:focus-within .kbd{opacity:1}
.search-pop.show,.context-menu,details[open]>.dropdown-menu,details[open]>.action-menu-pop{animation:polish-enter var(--motion-med) var(--motion-ease)}
.search-result{animation:polish-enter var(--motion-fast) var(--motion-ease) backwards;animation-delay:var(--stagger,0ms)}
.modal-backdrop.show{animation:polish-fade var(--motion-fast)}.modal-backdrop.show .modal{animation:polish-modal var(--motion-med) var(--motion-ease)}
.meeting-mode{animation:polish-enter var(--motion-slow) var(--motion-ease)}
.colour-swatch:hover,.colour-swatch:focus-visible{transform:scale(1.12);box-shadow:0 0 0 3px color-mix(in srgb,var(--swatch) 25%,transparent)}
.colour-swatch.active{outline:2px solid var(--swatch,var(--nhs));outline-offset:3px}
.tag,.rel-chip{animation:polish-enter var(--motion-fast)}.rel-chip:hover,.focus-people .btn:hover{transform:translateY(-2px)}
.pill,.stage-chip,.priority-badge,.health-pill{transition:color var(--motion-med),background-color var(--motion-med),border-color var(--motion-med)}
.overdue:hover{text-decoration:underline;text-decoration-color:#ca845b;text-underline-offset:4px}
.progress-fill{transition:width var(--motion-slow) var(--motion-ease),background-color var(--motion-med)}
.progress-value{transition:stroke-dasharray var(--motion-slow) var(--motion-ease),stroke var(--motion-med)}
.project-workspace{transition:--workspace-accent var(--motion-med),border-color var(--motion-med);scrollbar-color:var(--workspace-accent) transparent}
.project-accent-bar{animation:polish-fade var(--motion-med)}
.detail-tabs{position:relative}.polish-tab-marker{position:absolute;bottom:0;left:0;height:3px;background:var(--accent,var(--nhs));border-radius:4px;pointer-events:none}
.detail-tabs:has(.polish-tab-marker) .detail-tab.active{border-bottom-color:transparent}
.polish-tab-enter{animation:polish-enter var(--motion-med) var(--motion-ease)}
.polish-profile .avatar-lg,.polish-profile h1,.polish-profile .meta{animation:polish-enter var(--motion-med) var(--motion-ease) backwards}.polish-profile h1{animation-delay:30ms}.polish-profile .meta{animation-delay:60ms}
.task-check{transition:background-color var(--motion-fast),border-color var(--motion-fast),transform var(--motion-fast);accent-color:var(--accent,var(--nhs))}.task-check:checked{animation:polish-check var(--motion-med)}
.task-done{opacity:.65}.milestone-row:has(:checked){background:color-mix(in srgb,var(--accent,var(--nhs)) 5%,var(--surface,#fff))}
.waiting-card.resolved{border-top-color:#43865a;background:color-mix(in srgb,#43865a 4%,var(--surface,#fff))}.waiting-card.resolved .wait-icon{color:#43865a}
.waiting-badge,.waiting-card:not(.resolved) .wait-icon{animation:polish-breathe 8s ease-in-out infinite}
.save-status{transition:color var(--motion-med),background-color var(--motion-med)}.save-status.saving .save-dot{animation:polish-breathe 1.8s ease-in-out infinite}.save-status.saved.polish-neutral{color:var(--muted)}.save-status.saved.polish-neutral .save-dot{background:#8a9bab}.save-status.polish-failure{animation:polish-shake 240ms ease-out}
.graph-node{will-change:auto;transition:transform var(--motion-fast) var(--motion-ease),opacity var(--motion-med)}
.graph-node.project-node{box-shadow:0 6px 18px #17365512,inset 0 0 0 8px #ffffff66!important;filter:none;transition:transform var(--motion-fast) var(--motion-ease),opacity var(--motion-med),width var(--motion-med),height var(--motion-med)}
.project-node::before{content:'';position:absolute;inset:-8px;border:1.5px solid var(--node);border-radius:50%;box-shadow:0 7px 22px color-mix(in srgb,var(--node) var(--glow-alpha),transparent);opacity:0;transition:opacity var(--motion-med);pointer-events:none}
.project-node:hover,.project-node:focus-visible{transform:translate(-50%,calc(-50% - 2px)) scale(1.04)}
.project-node:hover::before,.project-node:focus-visible::before,.project-node.selected::before,.project-node.polish-selected::before,.project-node.polish-link-target::before,.project-node.resizing::before{opacity:1}
.project-node.focus::before,.project-node.polish-active::before{opacity:.3;animation:polish-breathe 7s ease-in-out infinite}
.project-node.selected::before,.project-node.polish-selected::before,.project-node:hover::before{animation:none;opacity:1}
.project-node.future-node::before{border-style:dashed}.project-node.completed-node{box-shadow:0 3px 10px #17365508,inset 0 0 0 8px #ffffff66!important;background:color-mix(in srgb,var(--node) 7%,var(--surface,#fff))}
.project-node.health-blocked::before{border-style:dashed;opacity:.65}.health-node-badge{transition:transform var(--motion-med)}.project-node:hover .health-node-badge{transform:scale(1.06)}
.graph-node.dragging{transform:translate(-50%,-50%) scale(1.045);z-index:40;filter:none}.graph-node.dragging::before{opacity:1;box-shadow:0 15px 26px #17365522}.graph-node.resizing{transition:opacity var(--motion-fast);transform:translate(-50%,-50%)}
.person-avatar{position:relative;transition:transform var(--motion-fast),box-shadow var(--motion-med)}.person-node:hover .person-avatar,.person-node:focus-visible .person-avatar{transform:translateY(-2px) scale(1.035)}
.person-node:hover .person-avatar,.person-node:focus-visible .person-avatar,.person-node.selected .person-avatar,.person-node.polish-selected .person-avatar{box-shadow:0 0 0 3px color-mix(in srgb,var(--context-color,var(--nhs)) 25%,transparent),0 7px 16px #17365515}
.graph-node.dim{opacity:.22}.graph-node.dim.completed-node{opacity:.18}.graph-node:focus-within .node-actions{opacity:1;pointer-events:auto;transform:none}
.graph-edge{transition:opacity var(--motion-med),stroke var(--motion-med),stroke-width var(--motion-fast);pointer-events:stroke}.graph-edge.hot{filter:drop-shadow(0 0 2px currentColor)}
.graph-edge.polish-edge-new{animation:polish-line var(--motion-slow) var(--motion-ease)}.graph-edge.polish-edge-remove{opacity:0!important;stroke-dasharray:4 5;pointer-events:none}
.ring{transition:opacity var(--motion-med),border-color var(--motion-med)}.ring.polish-zone-active{opacity:.93;border-style:solid}.ring.completed.polish-zone-active{opacity:.73}
.ring-label{transition:transform var(--motion-med),box-shadow var(--motion-med)}.ring-label.polish-zone-active{transform:translate(-50%,calc(-50% - 3px));box-shadow:0 4px 14px #16355320}
.zone-handle,.project-resize-handle{transition:box-shadow var(--motion-fast),background-color var(--motion-fast)}.zone-handle:hover,.zone-handle:focus-visible,.project-resize-handle:hover,.project-resize-handle:focus-visible{box-shadow:0 0 0 4px #0e67b318}
.polish-size-label,.polish-saved-label{position:absolute;bottom:-48px;left:50%;transform:translateX(-50%);padding:4px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface,#fff);color:var(--text);font-size:13px;white-space:nowrap;pointer-events:none;z-index:45}
.polish-saved-label{color:#267449;bottom:-65px}
.polish-ripple{position:absolute;inset:-10px;border:2px solid var(--node,var(--nhs));border-radius:50%;pointer-events:none;animation:polish-ripple 600ms var(--motion-ease) forwards}
.polish-linked-row{background:color-mix(in srgb,var(--polish-color,var(--nhs)) 8%,var(--surface,#fff))!important;border-color:color-mix(in srgb,var(--polish-color,var(--nhs)) 30%,var(--line))!important}
.polish-manual-size{position:absolute;bottom:12px;left:18px;opacity:0;font-size:12px;pointer-events:none}.project-node:hover .polish-manual-size,.project-node:focus-within .polish-manual-size{opacity:.7}
.polish-recent-dot{position:absolute;top:5px;left:12px;width:9px;height:9px;border-radius:50%;background:var(--node,var(--nhs));border:2px solid var(--surface,#fff);pointer-events:none}
.polish-tooltip{position:fixed;z-index:140;max-width:min(290px,calc(100vw - 24px));padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--tooltip-accent,var(--nhs));border-radius:10px;background:var(--surface,#fff);color:var(--text);box-shadow:0 8px 25px #16355318;pointer-events:none;font-size:13px;line-height:1.5;animation:polish-enter var(--motion-fast)}.polish-tooltip strong,.polish-tooltip small{display:block}.polish-tooltip small{color:var(--muted)}
.polish-toast-stack{position:fixed;right:22px;bottom:24px;z-index:160;display:flex;flex-direction:column;gap:8px;max-width:min(400px,calc(100vw - 30px));pointer-events:none}
.polish-toast{position:relative;padding:13px 16px;background:var(--surface,#fff);color:var(--text);border:1px solid var(--line);border-left:3px solid var(--toast-accent,var(--nhs));border-radius:10px;box-shadow:0 8px 25px #16355320;pointer-events:auto;font-size:14px;animation:polish-enter var(--motion-med);overflow:hidden}.polish-toast .undo-btn{margin-left:12px;color:var(--nhs);background:var(--surface-soft);border:1px solid var(--line);padding:5px 10px;border-radius:6px}.polish-toast-countdown{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--toast-accent,var(--nhs));transform-origin:left;animation:polish-countdown 6.5s linear forwards}
.polish-toast.leaving{opacity:0;transform:translateY(5px);transition:opacity var(--motion-fast),transform var(--motion-fast)}
.polish-graph-tools{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.polish-graph-tools .btn{font-size:12px}.polish-command-list{display:grid;gap:7px}.polish-command-list button{text-align:left;justify-content:flex-start}.polish-command-list small{margin-left:auto;color:var(--muted)}
.polish-large .project-node::before{box-shadow:none}.polish-large .graph-edge.hot{filter:none}.polish-large .project-node::before,.polish-large .waiting-badge{animation:none}
html:not([data-motion="full"]) .polish-active:not(.focus)::before{animation:none}
html[data-motion="off"] *,html[data-motion="off"] *::before,html[data-motion="off"] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-motion="off"] .project-node:hover,html[data-motion="off"] .project-node:focus-visible{transform:translate(-50%,-50%)}
@keyframes polish-enter{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}@keyframes polish-fade{from{opacity:0}to{opacity:1}}@keyframes polish-modal{from{opacity:0;transform:scale(.98) translateY(4px)}to{opacity:1;transform:none}}
@keyframes polish-breathe{0%,100%{opacity:.45}50%{opacity:.8}}@keyframes polish-check{from{transform:scale(.88)}to{transform:scale(1)}}@keyframes polish-shake{25%{translate:-2px 0}75%{translate:2px 0}}
@keyframes polish-ripple{from{opacity:.5;transform:scale(.98)}to{opacity:0;transform:scale(1.16)}}@keyframes polish-line{from{opacity:0;stroke-dasharray:0 100}to{opacity:.8;stroke-dasharray:100 100}}@keyframes polish-countdown{to{transform:scaleX(0)}}
@media(max-width:700px){.polish-toast-stack{bottom:85px;right:15px}.polish-graph-tools .btn{min-height:42px}.polish-tooltip{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.project-node:hover,.project-node:focus-visible{transform:translate(-50%,-50%)}}

