@@ -286,6 +286,17 @@ body::before {
286286 border-right : 1px dashed rgba (251 , 191 , 36 , 0.08 );
287287}
288288
289+ .zone-zk {
290+ right : 0 ;
291+ width : 18% ;
292+ background : linear-gradient (270deg , rgba (6 , 182 , 212 , 0.04 ) 0% , transparent 100% );
293+ border-left : 1px dashed rgba (6 , 182 , 212 , 0.08 );
294+ }
295+
296+ .zone-zk .zone-label {
297+ color : # 22d3ee ;
298+ }
299+
289300.zone-label {
290301 position : absolute;
291302 top : 8px ;
@@ -371,82 +382,114 @@ body::before {
371382 }
372383}
373384
374- /* Nodes */
385+ /* Nodes — Dock-style: compact icons by default, enlarge in-flow on active */
375386.pipeline-node {
376387 display : flex;
377388 flex-direction : column;
378389 align-items : center;
379- gap : 0.3 rem ;
380- padding : 0.7 rem 0.4 rem ;
381- border-radius : 14 px ;
390+ gap : 0.1 rem ;
391+ padding : 0.35 rem 0.25 rem ;
392+ border-radius : 10 px ;
382393 border : 1px solid transparent;
383394 position : relative;
384- transition : all 0.4 s ease ;
385- min-width : 60 px ;
395+ transition : all 0.35 s cubic-bezier ( 0.25 , 0.46 , 0.45 , 0.94 ) ;
396+ min-width : 32 px ;
386397}
387398
388399.pipeline-node .node-icon {
389- font-size : 1.3 rem ;
390- transition : transform 0.3 s ease ;
400+ font-size : 0.95 rem ;
401+ transition : all 0.35 s cubic-bezier ( 0.25 , 0.46 , 0.45 , 0.94 ) ;
391402}
392403
393404.pipeline-node .node-label {
394- font-size : 0.62 rem ;
405+ font-size : 0 ;
395406 font-weight : 700 ;
396407 text-transform : uppercase;
397408 letter-spacing : 0.06em ;
398409 color : var (--text-dim );
399- transition : color 0.3s ease;
410+ transition : all 0.3s ease;
411+ opacity : 0 ;
412+ max-height : 0 ;
413+ overflow : hidden;
414+ line-height : 1 ;
400415}
401416
402417/* Layer-specific styling */
403418.pipeline-node .l1 {}
404419
405420.pipeline-node .er .node-label {
406421 color : var (--er-color );
407- opacity : 0.5 ;
422+ }
423+
424+ .pipeline-node .zk .node-label {
425+ color : # 22d3ee ;
408426}
409427
410428.pipeline-node .done .node-label {
411429 color : var (--done-color );
412- opacity : 0.5 ;
413430}
414431
415- /* Active state */
432+ /* ── Dock: near neighbor — slightly bigger, no transform ── */
433+ .pipeline-node .node-near {
434+ padding : 0.4rem 0.3rem ;
435+ }
436+
437+ .pipeline-node .node-near .node-icon {
438+ font-size : 1.1rem ;
439+ }
440+
441+ /* ── Dock: active node — enlarged in-flow ── */
416442.pipeline-node .node-active {
417443 border-color : var (--border-glow );
418444 background : rgba (52 , 211 , 153 , 0.06 );
445+ padding : 0.5rem 0.5rem ;
446+ min-width : 56px ;
419447}
420448
421449.pipeline-node .node-active .er {
422450 border-color : var (--er-glow );
423451 background : rgba (251 , 191 , 36 , 0.06 );
424452}
425453
454+ .pipeline-node .node-active .zk {
455+ border-color : rgba (6 , 182 , 212 , 0.4 );
456+ background : rgba (6 , 182 , 212 , 0.06 );
457+ }
458+
426459.pipeline-node .node-active .node-icon {
427- transform : scale ( 1.2 ) ;
428- filter : drop-shadow (0 0 10 px var (--accent-glow ));
460+ font-size : 1.3 rem ;
461+ filter : drop-shadow (0 0 8 px var (--accent-glow ));
429462}
430463
431464.pipeline-node .node-active .er .node-icon {
432- filter : drop-shadow (0 0 10px var (--er-glow ));
465+ filter : drop-shadow (0 0 8px var (--er-glow ));
466+ }
467+
468+ .pipeline-node .node-active .zk .node-icon {
469+ filter : drop-shadow (0 0 8px rgba (6 , 182 , 212 , 0.5 ));
433470}
434471
435472.pipeline-node .node-active .node-label {
473+ font-size : 0.55rem ;
474+ opacity : 1 ;
475+ max-height : 1em ;
436476 color : var (--accent );
437477}
438478
439479.pipeline-node .node-active .er .node-label {
440480 color : var (--er-color );
441- opacity : 1 ;
481+ }
482+
483+ .pipeline-node .node-active .zk .node-label {
484+ color : # 22d3ee ;
442485}
443486
444487/* Ring pulse on active */
445488.node-ring {
446489 position : absolute;
447- inset : -4 px ;
448- border-radius : 18 px ;
449- border : 2 px solid var (--accent );
490+ inset : -3 px ;
491+ border-radius : 13 px ;
492+ border : 1.5 px solid var (--accent );
450493 opacity : 0 ;
451494 animation : ringPulse 1.5s ease-out infinite;
452495}
@@ -455,6 +498,10 @@ body::before {
455498 border-color : var (--er-color );
456499}
457500
501+ .pipeline-node .zk .node-ring {
502+ border-color : # 22d3ee ;
503+ }
504+
458505@keyframes ringPulse {
459506 0% {
460507 opacity : 0.6 ;
@@ -478,116 +525,40 @@ body::before {
478525
479526.pipeline-node .node-done .node-label {
480527 color : var (--text-dim );
481-
482- }
483-
484- /* ZK Compression layer */
485- .pipeline-node .zk .node-label {
486- color : # 22d3ee ;
528+ font-size : 0.5rem ;
487529 opacity : 0.5 ;
530+ max-width : 60px ;
488531}
489532
490- .pipeline-node .node-active .zk {
491- border-color : rgba (6 , 182 , 212 , 0.4 );
492- background : rgba (6 , 182 , 212 , 0.06 );
493- }
494-
495- .pipeline-node .node-active .zk .node-icon {
496- filter : drop-shadow (0 0 10px rgba (6 , 182 , 212 , 0.5 ));
497- }
498-
499- .pipeline-node .node-active .zk .node-label {
500- color : # 22d3ee ;
501- opacity : 1 ;
502- }
503-
504- .pipeline-node .zk .node-ring {
505- border-color : # 22d3ee ;
506- }
507-
508- /* Stage group layout */
509- .pipeline-stage-group {
510- margin-bottom : 0.5rem ;
511- }
512-
513- .stage-label {
514- display : flex;
515- align-items : center;
516- gap : 0.5rem ;
517- padding : 0.3rem 0.5rem ;
518- margin-bottom : 0.4rem ;
519- }
520-
521- .stage-name {
522- font-size : 0.65rem ;
523- font-weight : 700 ;
524- text-transform : uppercase;
525- letter-spacing : 0.08em ;
526- color : # 64748b ;
527- }
528-
529- .stage-badge-sm {
530- font-size : 0.55rem ;
531- font-weight : 700 ;
532- padding : 0.1rem 0.4rem ;
533- border-radius : 4px ;
534- text-transform : uppercase;
535- letter-spacing : 0.06em ;
536- }
537-
538- .stage-badge-sm-l1 {
539- background : rgba (52 , 211 , 153 , 0.1 );
540- color : # 34d399 ;
541- }
542-
543- .stage-badge-sm-er {
544- background : rgba (251 , 191 , 36 , 0.1 );
545- color : # fbbf24 ;
546- }
547-
548- .stage-badge-sm-zk {
549- background : rgba (6 , 182 , 212 , 0.1 );
550- color : # 22d3ee ;
551- }
552-
553- .stage-label-l1 .stage-name {
554- color : rgba (52 , 211 , 153 , 0.6 );
555- }
556-
557- .stage-label-er .stage-name {
558- color : rgba (251 , 191 , 36 , 0.6 );
559- }
560-
561- .stage-label-zk .stage-name {
562- color : rgba (6 , 182 , 212 , 0.6 );
563- }
564-
565- .pipeline-stage-track {
566- display : flex;
567- align-items : flex-start;
568- gap : 0 ;
569- }
570-
533+ /* Node column wrapper */
571534.pipeline-node-col {
572535 display : flex;
573536 flex-direction : column;
574537 align-items : center;
575- gap : 0.25rem ;
538+ gap : 0.2rem ;
539+ transition : all 0.35s cubic-bezier (0.34 , 1.56 , 0.64 , 1 );
576540}
577541
578- /* Helper text under each node */
542+ /* Helper text — only visible on active */
579543.node-helper {
580544 font-size : 0.55rem ;
581- color : # 334155 ;
545+ color : # 64748b ;
582546 text-align : center;
583- max-width : 80 px ;
547+ max-width : 100 px ;
584548 line-height : 1.3 ;
585- transition : color 0.3s ;
586- min-height : 2.2em ;
549+ animation : helperFadeIn 0.3s ease forwards;
587550}
588551
589- .node-helper-active {
590- color : # 64748b ;
552+ @keyframes helperFadeIn {
553+ from {
554+ opacity : 0 ;
555+ transform : translateY (-4px );
556+ }
557+
558+ to {
559+ opacity : 1 ;
560+ transform : translateY (0 );
561+ }
591562}
592563
593564/* ---- Bottom Row ---- */
0 commit comments