*,*::before,*::after{box-sizing: border-box}html{--elis-bg: #f5f6f8;--elis-text: #1c2026;--elis-text-muted: #6a717b;--elis-text-faint: #4e657b;--elis-border: #e1e3e8;--elis-border-strong: #dcdfe4;--elis-surface: #ffffff;--elis-surface-muted: #fafbfc;--elis-badge-bg: #4f6080;--elis-teal: #00a5aa;--elis-teal-dark: #007e83;--elis-teal-darker: #008b90;--elis-error: #d2000e;--elis-error-strong: #c2000c;--elis-warning: #e08a00;--elis-warning-strong: #96660a;--elis-success: #1f8f4e;--elis-success-strong: #16713d;--aura-app-layout-inset: 0px;--aura-app-layout-radius: 0px;--aura-app-layout-border-width: 0px;--aura-accent-color-light: #00a5aa;--aura-accent-color-dark: #00a5aa;--aura-background-color-light: #f5f6f8;background: var(--elis-bg);color: var(--elis-text)}vaadin-button[theme~="primary"]{--aura-accent-contrast-color-light: #ffffff;--aura-accent-contrast-color-dark: #ffffff}body{margin: 0;-webkit-font-smoothing: antialiased}a{color: var(--elis-teal-dark)}a:hover{color: #006064}.flex-spacer{flex: 1 1 0%}.public-layout::part(navbar){background: var(--elis-surface);box-shadow: none;border-bottom: 1px solid var(--elis-border)}.public-header{gap: 14px;padding: 0 20px;min-height: 42px}.public-header__logo{width: auto;flex: none;cursor: pointer}.public-header__divider{width: 1px;height: 26px;background: var(--elis-border);flex: none}.public-header__title-slot{min-width: 0}.public-header__title{margin: 0;font-size: 17px;line-height: 1.25;font-weight: 600;letter-spacing: -0.01em;white-space: nowrap}.public-header__subtitle{margin: 0;font-size: 12px;color: var(--elis-text-faint);white-space: nowrap}.public-header__trailing{flex: none}.public-header__admin{flex: none}.language-switcher{flex: none;display: flex;align-items: center}.language-switcher__trigger{font-size: 15px;font-weight: 600}.language-switcher__options{min-width: 160px}.language-switcher__option{width: 100%;justify-content: flex-start;font-size: 15px}.language-switcher__option--selected{background: var(--elis-surface-muted);font-weight: 600}.live-clock{font-size: 13px;color: var(--elis-text-faint);font-variant-numeric: tabular-nums}.wl-menu-link{display: inline-flex;align-items: center;gap: 6px;height: 34px;padding: 0 14px 0 10px;border-radius: 8px;font-size: 14px;font-weight: 500;color: #4f6080;border: 1px solid var(--elis-border-strong);background: var(--elis-surface);text-decoration: none}.wl-menu-link:hover{border-color: #b9c0ca;background: #f3f5f7}.home-view{padding: 40px 20px 48px}.home-view__content{width: 100%;max-width: 760px;display: flex;flex-direction: column;align-items: center}.home-view__eyebrow{font-size: 12px;font-weight: 600;letter-spacing: 0.12em;text-transform: uppercase;color: var(--elis-error-strong);margin-bottom: 12px}.home-view__heading{margin: 0 0 10px;font-size: 30px;line-height: 1.2;font-weight: 600;letter-spacing: -0.02em;text-align: center}.home-view__subheading{margin: 0 0 32px;font-size: 15px;color: var(--elis-text-muted);text-align: center;max-width: 440px;line-height: 1.55}.home-view__note{display: flex;align-items: center;gap: 8px;margin: 24px 0 0;font-size: 13px;color: var(--elis-text-faint);text-align: center}.home-view__note-icon{width: 16px;height: 16px;flex: none}.home-menu-grid{display: grid;grid-template-columns: 1fr 1fr;align-items: start;gap: 20px;width: 100%}.home-menu-tile{position: relative;width: 100%;padding: 24px;border-radius: 16px;background: var(--elis-surface);border: 1px solid var(--elis-border-strong);color: #2b323b;overflow: hidden;transition: transform 160ms ease,box-shadow 160ms ease,border-color 160ms ease}.home-menu-tile__row{display: flex;align-items: center;justify-content: space-between;gap: 16px}.home-menu-tile__text{flex: 1;min-width: 0}.home-menu-tile__title{margin: 0 0 4px;font-size: 18px;font-weight: 600;letter-spacing: -0.01em;color: inherit}.home-menu-tile__desc{margin: 0;font-size: 13px;color: var(--elis-text-muted);line-height: 1.5}.home-menu-tile__icon{display: flex;align-items: center;justify-content: center;width: 68px;height: 68px;border-radius: 14px;background: var(--elis-surface-muted);color: var(--elis-text-faint);flex: none}.home-menu-tile__icon .menu-icon svg{width: 38px;height: 38px}.home-menu-tile__bottom{display: flex;align-items: center;justify-content: space-between;gap: 12px;margin-top: 18px;padding-top: 14px;border-top: 1px solid var(--elis-border)}.home-menu-tile__note{font-size: 12px;color: var(--elis-text-faint)}.home-menu-tile__arrow{display: flex;align-items: center;justify-content: center;width: 32px;height: 32px;border-radius: 50%;background: var(--elis-text);color: #fff;flex: none;transition: background 160ms ease,transform 160ms ease}.home-menu-tile__arrow vaadin-icon{width: 15px;height: 15px}.home-menu-tile--active{border-color: rgba(0,165,170,0.32);box-shadow: 0 10px 26px -14px rgba(0,139,144,0.3);cursor: pointer}.home-menu-tile--active:hover{transform: translateY(-4px);box-shadow: 0 18px 34px -14px rgba(0,139,144,0.36)}.home-menu-tile--active:hover .home-menu-tile__arrow{background: var(--elis-error);transform: translateX(2px)}.home-menu-tile--active .home-menu-tile__icon{background: linear-gradient(145deg,var(--elis-teal),var(--elis-teal-dark));color: #fff}.home-menu-tile--locked{color: var(--elis-text-faint)}.home-menu-tile--locked .home-menu-tile__title{color: #4e5560}.home-menu-tile--locked .home-menu-tile__arrow{background: var(--elis-border-strong);color: var(--elis-text-faint)}.menu-icon-drum{animation: menu-icon-spin 4.5s linear infinite;transform-origin: 12px 13.4px}@keyframes menu-icon-spin{to{transform: rotate(360deg)}}.menu-icon-bubble{animation: menu-icon-bubble 2.6s ease-in infinite;transform-origin: center}@keyframes menu-icon-bubble{0%{opacity: 0;transform: translateY(0) scale(.4)}15%{opacity: 1}100%{opacity: 0;transform: translateY(-7px) scale(1)}}.menu-icon-drop{animation: menu-icon-drop 1.8s ease-in-out infinite}@keyframes menu-icon-drop{0%,100%{transform: translateY(0)}50%{transform: translateY(3px)}}.menu-icon-rise{animation: menu-icon-rise 1.8s ease-in-out infinite}@keyframes menu-icon-rise{0%,100%{transform: translateY(0)}50%{transform: translateY(-3px)}}.menu-icon-heat{animation: menu-icon-heat 1.6s ease-in-out infinite;transform-origin: 50% 60%}@keyframes menu-icon-heat{0%,100%{opacity: 1;transform: scaleY(1)}50%{opacity: .55;transform: scaleY(.82)}}@media (prefers-reduced-motion: reduce){.menu-icon-drum,.menu-icon-bubble,.menu-icon-drop,.menu-icon-rise,.menu-icon-heat{animation: none}}@media (max-width: 640px){.home-menu-grid{grid-template-columns: minmax(0,1fr)}.home-view__heading{font-size: 24px}}@media (max-width: 420px){.home-menu-tile__row{flex-direction: column-reverse;align-items: flex-start;gap: 14px}}.wl-view{padding: 18px 20px 40px;justify-content: flex-start}.wl-content{width: 100%;max-width: 1000px;gap: 14px}.wl-card{padding: 0;box-shadow: 0 1px 2px rgba(23,29,40,0.06)}.wl-columns{display: grid;grid-template-columns: minmax(280px,360px) 1fr}.wl-machine-panel{border-right: 1px solid #edeff2;padding: 18px 18px 20px;display: flex;flex-direction: column;gap: 18px}.wl-details-panel{padding: 18px 20px 20px;display: flex;flex-direction: column;gap: 18px}.wl-capacity-box{border: 1px solid #e4e6ea;border-radius: 10px;background: var(--elis-surface-muted);padding: 14px 16px}@media (max-width: 860px){.wl-columns{grid-template-columns: 1fr}.wl-machine-panel{border-right: none;border-bottom: 1px solid #edeff2;padding: 16px 16px 18px}.wl-view{padding: 16px 12px 32px}}.logs-view{padding: 20px;font-family: 'Instrument Sans',-apple-system,sans-serif;--logs-teal-tint: #E4F6F6;--logs-red-tint: #FDEBEC}.logs-view__stats-row{display: grid;grid-template-columns: repeat(4,1fr);gap: 14px;margin-bottom: 16px}.logs-view__stat-card{background: var(--elis-surface);border: 1px solid var(--elis-border);border-radius: 12px;padding: 16px 18px;box-shadow: 0 1px 2px rgba(16,24,40,0.04)}.logs-view__stat-label{display: block;font-size: 12px;font-weight: 500;color: var(--elis-text-muted);margin-bottom: 6px}.logs-view__stat-value{display: block;font-family: 'Instrument Sans',sans-serif;font-size: 24px;font-weight: 700;letter-spacing: -0.01em;color: var(--elis-text)}.logs-view__stat-value--accent{color: var(--elis-teal-dark)}.logs-view__stat-sub{display: block;font-size: 12px;color: var(--elis-text-muted);margin-top: 3px}.logs-view__panel{background: var(--elis-surface);border: 1px solid var(--elis-border);border-radius: 12px;box-shadow: 0 1px 2px rgba(16,24,40,0.04);overflow: hidden;display: flex;flex-direction: column;flex: 1;min-height: 0}.logs-view__filters{flex-wrap: wrap;align-items: flex-end;gap: 14px;padding: 16px 18px;border-bottom: 1px solid var(--elis-border)}.logs-view__filter-field{width: 130px;flex: 0 0 auto}.logs-view__filter-field--date{width: 140px}.logs-view__filter-field--narrow{width: 72px}.logs-view__filter-field--wide{width: 160px}.logs-view__filter-spacer{flex: 1}.logs-view__filter-actions{align-items: center;gap: 8px}.logs-view__search-button,.logs-view__export-button{height: 36px}.logs-view__grid-wrapper{flex: 1;min-height: 0}.logs-view__grid{height: 100%}.logs-view__export-item{display: flex;align-items: center;gap: 10px;padding: 2px 2px;min-width: 168px}.logs-view__export-icon{width: 26px;height: 26px;border-radius: 6px;display: flex;align-items: center;justify-content: center;font-family: 'Instrument Sans',sans-serif;font-size: 10px;font-weight: 700;flex-shrink: 0}.logs-view__export-icon--csv{background: var(--logs-teal-tint);color: var(--elis-teal-dark)}.logs-view__export-icon--xlsx{background: #E6F5EF;color: var(--elis-success-strong)}.logs-view__export-icon--pdf{background: var(--logs-red-tint);color: var(--elis-error-strong)}.logs-view__washer-cell{display: flex;flex-direction: column;line-height: 1.3;padding: 6px 0}.logs-view__washer-id{font-family: 'Instrument Sans',sans-serif;font-weight: 700}.logs-view__washer-range{font-size: 0.8125rem;color: var(--elis-text-muted)}.logs-view__customer-cell{display: flex;flex-direction: column;line-height: 1.3;padding: 6px 0}.logs-view__customer-name{font-family: 'Instrument Sans',sans-serif;font-weight: 700}.logs-view__customer-code{font-size: 0.8125rem;color: var(--elis-text-muted)}.logs-view__load-cell{display: flex;flex-direction: column;gap: 5px;width: 96px;padding: 4px 0}.logs-view__load-pct{font-family: 'Instrument Sans',sans-serif;font-size: 13px;font-weight: 700;font-variant-numeric: tabular-nums}.logs-view__load-bar-track{height: 5px;border-radius: 3px;background: #EEF0F2;overflow: hidden}.logs-view__load-bar-fill{height: 100%;border-radius: 3px}.logs-view__load-red .logs-view__load-pct{color: var(--elis-error-strong)}.logs-view__load-red .logs-view__load-bar-fill{background: var(--elis-error-strong)}.logs-view__load-orange .logs-view__load-pct{color: var(--elis-warning-strong)}.logs-view__load-orange .logs-view__load-bar-fill{background: var(--elis-warning-strong)}.logs-view__load-green .logs-view__load-pct{color: var(--elis-success-strong)}.logs-view__load-green .logs-view__load-bar-fill{background: var(--elis-success-strong)}.logs-view__prog-badge{display: inline-flex;align-items: center;gap: 6px;font-size: 12.5px;color: var(--elis-text-muted)}.logs-view__prog-dot{width: 6px;height: 6px;border-radius: 50%;background: var(--elis-text-muted);flex-shrink: 0;display: inline-block}.logs-view__prog-dot--disinfect{background: var(--elis-error)}.logs-view__emp-cell{display: flex;align-items: center;gap: 8px}.logs-view__avatar{width: 24px;height: 24px;border-radius: 50%;background: var(--logs-teal-tint);color: var(--elis-teal-dark);font-family: 'Instrument Sans',sans-serif;font-size: 10.5px;font-weight: 700;display: flex;align-items: center;justify-content: center;flex-shrink: 0}@media (max-width: 900px){.logs-view__stats-row{grid-template-columns: repeat(2,1fr)}}@media (max-width: 700px){.hide-on-narrow{display: none}.logs-view__stats-row{grid-template-columns: 1fr}.logs-view__filter-field,.logs-view__filter-field--date,.logs-view__filter-field--narrow,.logs-view__filter-field--wide{width: 100%}.logs-view__filter-spacer{display: none}.logs-view__filter-actions{width: 100%}.logs-view__search-button{flex: 1}}.form-step-section__heading{gap: 8px;margin-bottom: 10px;width: 100%}.form-step-section__badge{display: inline-flex;align-items: center;justify-content: center;width: 20px;height: 20px;border-radius: 50%;background: var(--elis-badge-bg);color: #fff;font-size: 11px;font-weight: 700;flex: none}.form-step-section__label{font-size: 13px;font-weight: 600;text-transform: uppercase;letter-spacing: 0.06em;color: #4e5560}.machine-selector__grid{display: grid;grid-template-columns: repeat(3,1fr);gap: 10px;width: 100%}.machine-selector__button{height: 76px;padding: 0;border-radius: 10px;background: var(--elis-surface);color: #2b323b;border: 1px solid var(--elis-border-strong);transition: border-color 140ms ease,box-shadow 160ms ease,transform 110ms ease}.machine-selector__button:hover{box-shadow: 0 4px 12px rgba(23,29,40,0.10);transform: translateY(-1px);border-color: #9fd8da}.machine-selector__button:active{transform: translateY(0);box-shadow: none}.machine-selector__button--selected{background: var(--elis-teal) !important;color: #ffffff !important;border-color: var(--elis-teal) !important}.machine-selector__button-content{line-height: 1.1}.machine-selector__number{font-size: 22px;font-weight: 650;letter-spacing: -0.02em}.machine-selector__capacity{font-size: 11px;opacity: 0.75}.machine-selector__hint{margin: 12px 0 0;font-size: 12px;color: var(--elis-text-faint);min-height: 32px}@media (max-width: 860px){.machine-selector__grid{max-width: 520px}.machine-selector__button{height: 64px}}.timing-panel__date-badge{margin-left: auto;font-size: 18px;font-weight: 600;padding: 19px 15px}.timing-panel__stepper{gap: 10px;flex-wrap: wrap}.timing-panel__dial{border: 1px solid var(--elis-border-strong);border-radius: 10px;overflow: hidden;background: var(--elis-surface)}.timing-panel__dial vaadin-button{width: 44px;min-width: 44px;height: 38px}.timing-panel__value{display: flex;align-items: center;justify-content: center;min-width: 58px;font-size: 22px;font-weight: 600;font-variant-numeric: tabular-nums;border-left: 1px solid #edeff2;border-right: 1px solid #edeff2}.timing-panel__colon{font-size: 26px;font-weight: 600;color: #a2a8b0}.timing-panel__now{height: 44px}.load-weight-field__row{gap: 10px;flex-wrap: wrap}.load-weight-field__input{width: 190px;font-size: 20px}.load-weight-field__quick{display: flex;gap: 10px;flex-wrap: wrap}.load-weight-field__quick-btn{height: 38px;min-width: 68px;font-size: 15px;background: var(--elis-surface);border: 1px solid var(--elis-border-strong)}.capacity-indicator__header{justify-content: space-between;gap: 12px;margin-bottom: 10px}.capacity-indicator__label{font-size: 12px;font-weight: 600;text-transform: uppercase;letter-spacing: 0.06em;color: #7b828b}.capacity-indicator__bar{margin: 0}.capacity-indicator__status-row{justify-content: space-between;gap: 12px;margin-top: 10px}.capacity-indicator__status{gap: 6px;font-size: 13px;font-weight: 500}.capacity-indicator__percent{font-size: 22px;font-weight: 600;font-variant-numeric: tabular-nums}.capacity-indicator--idle .capacity-indicator__status,.capacity-indicator--idle .capacity-indicator__percent{color: #7b828b}.capacity-indicator--ok .capacity-indicator__status,.capacity-indicator--ok .capacity-indicator__percent{color: var(--elis-teal-dark)}.capacity-indicator__bar::part(bar){background: #e6e8ec}.capacity-indicator--idle .capacity-indicator__bar{--vaadin-progress-bar-value-background: #c2c7cd}.capacity-indicator--ok .capacity-indicator__bar{--vaadin-progress-bar-value-background: var(--elis-teal)}.capacity-indicator--util-normal .capacity-indicator__percent{color: var(--elis-teal-dark)}.capacity-indicator--util-high .capacity-indicator__status,.capacity-indicator--util-high .capacity-indicator__percent{color: var(--elis-warning-strong)}.capacity-indicator--util-over .capacity-indicator__status,.capacity-indicator--util-over .capacity-indicator__percent{color: var(--elis-error-strong)}.capacity-indicator--util-normal .capacity-indicator__bar{--vaadin-progress-bar-value-background: var(--elis-teal)}.capacity-indicator--util-high .capacity-indicator__bar{--vaadin-progress-bar-value-background: var(--elis-warning)}.capacity-indicator--util-over .capacity-indicator__bar{--vaadin-progress-bar-value-background: var(--elis-error)}.capacity-indicator--warning .capacity-indicator__status,.capacity-indicator--warning .capacity-indicator__percent{color: var(--elis-error-strong)}.capacity-indicator--warning .capacity-indicator__bar{--vaadin-progress-bar-value-background: var(--elis-error)}.program-selector{gap: 10px;flex-wrap: wrap}.program-selector__input{width: 130px;font-size: 20px}.program-selector__button{height: 40px;min-width: 68px;font-size: 17px;font-weight: 600;background: var(--elis-surface);border: 1px solid var(--elis-border-strong)}.program-selector__button--selected{background: var(--elis-teal) !important;color: #ffffff !important;border-color: var(--elis-teal) !important}.program-selector__hint{font-size: 12px;color: var(--elis-text-faint)}.program-selector__hint--error{color: var(--elis-error-strong)}.customer-selector{gap: 8px;flex-wrap: wrap}.customer-selector__number{width: 100px}.customer-selector__name{font-size: 15px;font-weight: 500;color: var(--elis-teal-dark)}.employee-selector{gap: 8px;flex-wrap: wrap}.employee-selector__button{height: 38px;padding: 0 16px;font-size: 15px;background: var(--elis-surface);border: 1px solid var(--elis-border-strong)}.employee-selector__button--selected{background: var(--elis-teal) !important;color: #ffffff !important;border-color: var(--elis-teal) !important}.registration-footer{gap: 12px;padding: 7px 20px;flex-wrap: wrap;border-top: 1px solid var(--vaadin-card-border-color)}.registration-footer__summary{font-size: 12px;color: var(--elis-text-faint);font-weight: bold}.registration-footer__clear{height: 42px;padding: 0 18px}.registration-footer__save{height: 42px;background: var(--elis-teal);color: #fff;transition: background 140ms ease,box-shadow 160ms ease}.registration-footer__save:hover{background: var(--elis-teal-darker);box-shadow: 0 4px 14px rgba(0,139,144,0.26)}.saved-banner{gap: 10px;padding: 11px 14px;border: 1px solid #dfe6ee;border-radius: 10px;background: var(--elis-surface);font-size: 13px;color: #4e5560;flex-wrap: wrap}.saved-banner__icon{color: var(--elis-teal)}.saved-banner__count{font-size: 12px;color: var(--elis-text-faint)}.admin-login-view__brand-row{align-items: center;justify-content: center;gap: 10px}.admin-login-view__logo{height: 32px;width: auto;flex: none}.admin-login-view__title{font-weight: 600}