// ===================================================================== // V09 redesign tokens & chrome // ===================================================================== // // The new shell wraps everything in `.app-shell { .app-head | .app-body }`. // Inner views use the shared tokens below for jog/macro tiles, status // chips and segmented controls. Anything legacy that's still needed by // settings/admin/motor/tool/io templates remains lower in this file. $ink = #0f172a $ink-soft = #334155 $muted = #64748b $muted-2 = #94a3b8 $line = #e5e7eb $line-soft = #f1f5f9 $bg = #ffffff $body-bg = #f1f5f9 $accent = #fde047 $accent-ink = $ink $accent-text = #0ea5e9 // Jog tile palette — V09 (flat soft slate, no shadow) $jog-bg = #3f4b63 $jog-hover = #4a5777 $jog-dir = #5b6885 $jog-dir-hov = #6a779a $jog-ghost = #8c97ad $jog-ghost-hov = #9ba6bb $jog-ink = #fff $jog-ghost-ink = $ink body margin 0 font-family 'Inter', system-ui, -apple-system, sans-serif background $body-bg color $ink [v-cloak] display none tt color #000 background #eee padding 2px .button-success:not([disabled]) background-color #1cb841 .button-error:not([disabled]) background-color #ca3c3c .button-warning:not([disabled]) background-color #df7514 .button-secondary:not([disabled]) background-color #42b8dd .button-submit:not([disabled]) background-color #add1ad color #fff .button-blue:not([disabled]) background-color #0078e7 color #fff .clear clear left clear right // ===================================================================== // App shell // ===================================================================== .app-shell display flex flex-direction column height 100vh // cap at viewport so children that ask for 1fr/flex:1 width 100% overflow hidden background $body-bg .app-body flex 1 min-height 0 display flex flex-direction column padding 18px overflow auto // settings/motor pages can scroll inside the body > * flex 1 1 auto min-height 0 .app-head flex 0 0 96px height 96px display flex align-items center gap 18px padding 0 24px background $bg border-bottom 1px solid $line position relative z-index 30 .brand-blk display flex align-items center gap 14px .brand-logo width 42px height 42px border-radius 8px background repeating-linear-gradient(135deg, #a7c7a3 0 6px, transparent 6px 14px) .brand-name font-weight 900 font-size 22px letter-spacing -0.01em .head-spacer flex 1 // Underline-ribbon tabs .tabs-host display inline-flex gap 0 margin-right auto padding-left 18px align-items stretch height 96px .ktab position relative height 96px padding 0 26px display inline-flex align-items center gap 0.55rem background transparent border none text-decoration none color $ink-soft font-size 1.05rem font-weight 700 cursor pointer transition color .15s .fa font-size 1.1rem color $muted-2 transition color .15s &:hover color $ink .fa color $ink-soft &.active color $ink .fa color $ink &.active::after content "" position absolute left 14px right 14px bottom 0 height 5px background $accent border-radius 5px 5px 0 0 .ktab-badge background #fee2e2 color #991b1b font-size 0.7rem padding 3px 8px border-radius 9999px font-weight 800 line-height 1 &.active .ktab-badge background $accent color $accent-ink // System pill (collapses old chip-soup) .sys-btn display inline-flex align-items center gap 0.55rem height 54px padding 0 1.1rem border-radius 14px background $line-soft border 1px solid $line color $ink font-size 0.9rem font-weight 600 cursor pointer user-select none &:hover background #e2e8f0 .pip width 9px height 9px border-radius 9999px background #22c55e .pip.amber background #f59e0b .pip.red background #dc2626 .fa-chevron-down color $muted-2 font-size 12px &.open background #e2e8f0 .pi-temp-warning align-self center margin 0 4px color #dc2626 font-size 24px .state-badge display inline-flex align-items center gap 0.6rem height 54px padding 0 1.1rem border-radius 14px background #dcfce7 color #166534 font-weight 800 font-size 1rem letter-spacing 0.04em .dot width 10px height 10px border-radius 9999px background currentColor position relative .dot::after content "" position absolute inset -3px border-radius 9999px border 2px solid currentColor opacity 0.5 animation pulse-dot 1.6s ease-out infinite &.warn background #fef3c7 color #92400e &.bad background #fee2e2 color #991b1b &.busy background #dbeafe color #1e40af &.unknown background $line-soft color $muted &.unknown .dot::after display none @keyframes pulse-dot 0% transform scale(0.7) opacity 0.6 100% transform scale(2.2) opacity 0 @media (prefers-reduced-motion: reduce) .state-badge .dot::after animation none // System popover .sys-popover position absolute top 96px right 240px width 360px background $bg border 1px solid $line border-radius 14px box-shadow 0 18px 40px rgba(15, 23, 42, 0.18) padding 12px z-index 40 display flex flex-direction column gap 10px .sp-row display grid grid-template-columns 32px 1fr auto gap 12px align-items center .sp-icon width 32px height 32px border-radius 8px background $line-soft color $ink-soft display inline-flex align-items center justify-content center img width 18px height 18px .fa.sp-warn color #f59e0b .sp-label font-size 0.7rem text-transform uppercase letter-spacing 0.1em color $muted-2 font-weight 800 .sp-val font-size 0.95rem color $ink font-weight 600 .sp-act height 36px padding 0 12px border-radius 8px background $line-soft border 1px solid $line color $ink font-size 0.8rem font-weight 700 cursor pointer text-decoration none display inline-flex align-items center gap 4px .sp-act:hover background #e2e8f0 .video width 100% height 180px border-radius 8px background #000 overflow hidden position relative img width 100% height 100% object-fit cover .sp-foot display flex gap 8px margin-top 4px padding-top 10px border-top 1px solid $line-soft .sp-shutdown, .sp-save flex 1 height 40px border-radius 10px border 1px solid $line background $line-soft color $ink font-weight 700 cursor pointer .sp-shutdown background #fef2f2 color #991b1b border-color #fecaca .sp-save:not([disabled]) background $accent color $ink border-color $accent .error background red color #fff .warn background orange .success background green .fa font-size 150% .modal-mask .fa font-size inherit .fa.error background inherit color red .fa.warn background inherit color orange .fa.success background inherit color green .load-on background-color #ccffcc color #000 @keyframes attention 50% opacity 0.5 .attention background-color #f5e138 color #000 animation attention 2s step-start 0s infinite span.unit font-size 60% .status color #eee text-align center padding 0.125em font-weight bold margin-bottom 0.5em text-transform uppercase &.connecting color orange &.disconnected color red &.connected color green #overlay position fixed top 0 left 0 width 100% height 100% background-color rgba(0, 0, 0, 0.7) z-index 2000 color white font-weight bold font-size 24pt text-align center text-transform uppercase span position relative top 50% // Form rules used by the settings/admin/motor/tool/io templates that // still rely on Pure form classes. .app-body .pure-control-group label.units width 6em text-align left textarea width 24em height 12em > select, > input:not([type=checkbox]) min-width 300px > tt min-width 15.25em padding 0.7em 1em border-radius 3px display inline-block @keyframes blink 50% fill #ff9d00 // E-Stop in the header — wraps the legacy SVG component. // Sized to fit the 96px header with breathing room. The SVG carries // its own yellow safety ring and EMERGENCY/STOP text; we only frame // it with a soft drop shadow and a hover/active hit target. .app-head .estop width 80px height 80px display inline-flex align-items center justify-content center border-radius 9999px cursor pointer transition transform 0.06s, filter 0.15s flex 0 0 auto // Make sure the SVG's internal coordinate space scales correctly overflow visible &:hover filter brightness(1.05) &:active transform scale(0.96) svg width 80px height 80px cursor pointer display block .button:hover filter brightness(120%) .app-head .estop.active .ring animation blink 2s step-start 0s infinite .app-head .estop:hover .button circle fill #b72424 !important #macros width 104% .warning-box display flex background-color #F3FF00 border-radius 5px border 0 margin-bottom 10px margin-right 130px margin-top 10px align-items center justify-content center .new-gcode height 13rem width 23rem resize none border-radius 10px padding 20px resize none .flex-row-container display flex flex-direction row width 710px margin-bottom 1rem .tabs margin-top 5px width 850px padding 20px .macros-view padding 30px width 95% .macros-tab-content padding-bottom 20px border-radius 5px .macros-form padding-left 30px .config-button height 40px width 150px font-weight normal border-radius 3px border 0 margin-right 10px display flex align-items center justify-content space-around .submit-macros height 50px width 140px color #000 margin-top 30px font-weight normal border 0 .path-viewer table margin 0.25em width 100% .path-viewer-toolbar > * margin 0.25em .tool-button display inline-block cursor pointer border 2px solid transparent border-radius 2px text-align center &:hover opacity 0.7 border 2px inset #eee &.active border 2px inset #888 background #ddd img max-height 32px vertical-align bottom .fa font-size 28px display inline-block width 32px .path-viewer-messages margin 0.125em 0 th, td padding 0.125em &.level text-transform capitalize .path-viewer-content background-color #333 background linear-gradient(to bottom, #666 0%, #222 100%); margin-bottom 0.5em &.small .path-viewer-content width 340px height 150px float right margin-top -88px .console .console-wrapper max-height 400px overflow-y auto .message white-space pre table width 100% margin 0.5em 0 border-collapse collapse td, th border 1px solid #ddd padding 2px &:first-child border-left 0 &:last-child border-right 0 tr > td margin 0 0.125em background-color #fff tr.log-error td color red tr.log-warning td color orange tr.log-debug td color green .indicators padding 1em 0 text-align center table display inline-block vertical-align top margin 0.5em empty-cells show border 3px solid #bbb td, th padding 4px white-space nowrap tr:nth-child(odd) background #f7f7f7 th text-align left td text-align right &.inputs, &.outputs td:nth-child(1), td:nth-child(5) text-align center th.header height 2.5em border-bottom 3px solid #ccc text-align center th.separator background #ccc border 1px solid #ccc padding 1px &.motor_fault td, th text-align center min-width 1.75em .fa-eraser cursor pointer &:hover opacity 0.5 .io &.active color green &.inactive color black &.warn background-color transparent color orange tt.save display inline-block border-radius 2px background #1cb841 color rgba(0, 0, 0, 0.8) padding 0.25em line-height initial .modbus-program button margin 0.25em 0 .pure-form .modbus-regs input, select border none box-shadow none border-radius 0 background transparent padding 0 0.5em height 1.75em line-height 1.75em input text-align right width 6em button margin 2px th, td border 1px solid #ccc line-height 1.75em th padding 0.5em &.fixed-regs td, td.reg-index, td.modbus-status padding 0 0.5em td.reg-index, td.reg-addr, td.reg-value text-align right tr:nth-child(even):not(.warn) background-color #f3f3f3 // Legacy `.tabs` selector retained only for #macros (Settings → Macros) // which uses .tabs as a content container with a