.logo{display:flex;align-items:flex-end;gap:.5rem;color:#1f2937}.logo__title{font-size:1.6rem;font-weight:700;letter-spacing:-.01em}:root{color-scheme:light}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3rem;padding:2rem 1.5rem 4rem;background:linear-gradient(135deg,#eff6ff,#f5fff9)}.login-card{width:min(100%,420px);background:#ffffffd9;backdrop-filter:blur(10px);border-radius:1.5rem;box-shadow:0 25px 60px #0f172a1f;padding:2.5rem;display:flex;flex-direction:column;gap:1.25rem}.login-card__subtitle{color:#4b5563;font-size:.95rem;line-height:1.5;margin:0}.login-form{display:flex;flex-direction:column;gap:.75rem}.login-form__label{font-weight:600;color:#1f2937;font-size:.95rem}.login-form__input{width:100%;padding:.75rem .9rem;border-radius:.75rem;border:1px solid rgba(148,163,184,.4);background:#fffffff2;font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease}.login-form__input:focus-visible{outline:none;border-color:#2563ebb3;box-shadow:0 0 0 4px #2563eb33}.login-form__input:disabled{background:#e2e8f080;cursor:not-allowed}.login-form__submit{margin-top:.5rem;padding:.85rem;border-radius:.9rem;border:none;background:linear-gradient(135deg,#2563eb,#10b981);color:#fff;font-weight:600;font-size:1rem;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease}.login-form__submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 15px 35px #2563eb40}.login-form__submit:disabled{opacity:.75;cursor:wait}.login-form__error{color:#dc2626;background:#f871711a;border-radius:.75rem;padding:.65rem .75rem;margin:.25rem 0 0}.login-form__success{color:#047857;background:#10b9811f;border-radius:.75rem;padding:.65rem .75rem;margin:.25rem 0 0}.login-form__success strong{font-weight:700}.login-form__logout{margin-top:.5rem;padding:.75rem;border-radius:.9rem;border:1px solid rgba(148,163,184,.6);background:#f8fafce6;color:#1f2937;font-weight:600;font-size:.95rem;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.login-form__logout:hover{border-color:#2563eb80;background:#e2e8f0cc}.login-card__footer{display:flex;justify-content:flex-end}.login-card__imprint{border:none;background:transparent;color:#2563eb;font-weight:600;cursor:pointer;padding:0;font-size:.95rem;text-decoration:none}.login-card__imprint:hover,.login-card__imprint:focus-visible{text-decoration:underline}.login-card__imprint:focus-visible{outline:none}.imprint-modal__backdrop{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:1000}.imprint-modal{width:min(100%,560px);max-height:min(90vh,640px);overflow-y:auto;background:#fffffff7;border-radius:1.25rem;box-shadow:0 25px 60px #0f172a40;padding:1.75rem 1.75rem 2rem;color:#1f2937;display:flex;flex-direction:column;gap:1.25rem}.imprint-modal__header{display:flex;justify-content:space-between;align-items:center;gap:1rem;border-bottom:1px solid rgba(148,163,184,.35);padding-bottom:.75rem}.imprint-modal__header h2{margin:0;font-size:1.3rem}.imprint-modal__close{border:none;background:#e2e8f0a6;color:#1f2937;font-size:.9rem;font-weight:600;border-radius:999px;padding:.45rem .95rem;cursor:pointer;transition:background-color .2s ease,transform .2s ease}.imprint-modal__close:hover,.imprint-modal__close:focus-visible{background:#3b82f626;transform:translateY(-1px);outline:none}.imprint-modal__content{display:flex;flex-direction:column;gap:1.1rem}.imprint-modal__section h3{margin:0 0 .25rem;font-size:1.05rem}.imprint-modal__section p{margin:.15rem 0;line-height:1.55}.imprint-modal__section a{color:#2563eb;font-weight:600}.sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;display:flex;flex-direction:column;background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border-right:1px solid var(--glass-border);box-shadow:4px 0 24px #0f172a14;z-index:100;transition:width .3s cubic-bezier(.4,0,.2,1);overflow:hidden;color:var(--text-secondary)}.sidebar:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6) 50%,transparent);opacity:.4;pointer-events:none;z-index:1}.sidebar--collapsed{width:80px}.sidebar__header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 1.25rem;border-bottom:1px solid var(--glass-border);min-height:70px}.sidebar__logo{flex:1}.sidebar__logo-text{font-size:1.25rem;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.sidebar__toggle{width:32px;height:32px;border-radius:.5rem;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.75rem;transition:all .2s ease;flex-shrink:0}.sidebar__toggle:hover{background:var(--glass-bg-hover);border-color:var(--accent-blue);color:var(--text-primary);transform:scale(1.05)}.sidebar__toggle:active{transform:scale(.95)}.sidebar--collapsed .sidebar__header{justify-content:center;padding:1.5rem .75rem}.sidebar--collapsed .sidebar__logo{display:none}.sidebar__nav{flex:1;padding:1rem .75rem;display:flex;flex-direction:column;gap:1rem;overflow-y:auto;overflow-x:hidden}.sidebar__section{display:flex;flex-direction:column;gap:.5rem}.sidebar__section-title{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--text-tertiary);padding:0 .5rem}.sidebar--collapsed .sidebar__section-title{display:none}.sidebar__section-items{display:flex;flex-direction:column;gap:.5rem}.sidebar__item{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;border-radius:.75rem;text-decoration:none;color:var(--text-secondary);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;font-weight:500}.sidebar__item:hover{background:var(--glass-bg-hover);color:var(--text-primary);transform:translate(4px)}.sidebar__item--active{background:var(--glass-bg-hover);color:var(--text-primary);box-shadow:0 0 0 4px #2563eb26;border:1px solid rgba(37,99,235,.3)}.sidebar__item--active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:60%;background:linear-gradient(180deg,transparent,rgba(37,99,235,.8) 50%,transparent);border-radius:0 2px 2px 0}.sidebar__icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:currentColor;opacity:.8;flex-shrink:0;transition:all .2s ease}.sidebar__icon svg{width:100%;height:100%;stroke-width:2}.sidebar__item:hover .sidebar__icon{transform:scale(1.1);opacity:1}.sidebar__item--active .sidebar__icon{transform:scale(1.15);opacity:1;color:var(--accent-blue)}.sidebar__label{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar--collapsed .sidebar__item{justify-content:center;padding:.875rem}.sidebar--collapsed .sidebar__label{display:none}.sidebar__footer{padding:1rem .75rem;border-top:1px solid var(--glass-border)}.sidebar__logout{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;border-radius:.75rem;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--text-secondary);cursor:pointer;width:100%;font-size:.95rem;font-weight:500;transition:all .2s ease;font-family:inherit}.sidebar__logout:hover{background:var(--glass-bg-hover);border-color:#dc262699;color:#f87171;transform:translate(4px)}.sidebar--collapsed .sidebar__logout{justify-content:center;padding:.875rem}.sidebar--collapsed .sidebar__logout .sidebar__label{display:none}.sidebar__nav::-webkit-scrollbar{width:6px}.sidebar__nav::-webkit-scrollbar-track{background:#ffffff0d;border-radius:3px}.sidebar__nav::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.sidebar__nav::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.topbar{position:fixed;top:0;left:260px;right:0;min-height:42px;display:flex;align-items:center;background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border-bottom:1px solid var(--glass-border);box-shadow:0 4px 24px #0f172a14;z-index:99;transition:left .3s cubic-bezier(.4,0,.2,1),background .3s ease,border-color .3s ease,box-shadow .3s ease;padding:.35rem 1.5rem;overflow:visible}.topbar:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6) 50%,transparent);opacity:.4;pointer-events:none;z-index:1}.topbar--sidebar-collapsed{left:80px}.topbar__content{width:100%;display:flex;align-items:center;flex-wrap:wrap;gap:1.5rem}.topbar__clock{font-size:1.05rem;font-weight:500;color:var(--text-primary);white-space:nowrap;margin-left:auto}.topbar__announcement{flex:1 1 320px;display:flex;align-items:center;gap:.5rem;background:var(--glass-bg-hover);border:1px solid var(--glass-border);border-radius:.85rem;padding:.35rem .85rem;box-shadow:0 10px 30px #0f172a14;min-height:34px;transition:border-color .2s ease,box-shadow .2s ease,background .3s ease;max-width:720px}.topbar__announcement-body{flex:1;display:flex;align-items:center;gap:.4rem;width:100%;flex-wrap:nowrap;background:transparent;border:none;text-align:left;cursor:pointer;padding:0;color:var(--text-primary)}.topbar__event{flex:1 1 320px;display:flex;align-items:center;gap:.5rem;min-height:34px;color:var(--text-primary);font-weight:500;justify-content:flex-start;text-align:left}.topbar__event-icon{font-size:1.15rem}.topbar__event-text{font-size:1.05rem;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__announcement-label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.topbar__announcement-icon{font-size:1.15rem;line-height:1;display:flex;align-items:center;justify-content:center;min-width:1.5rem}.topbar__announcement-chip{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);white-space:nowrap;display:inline-flex;align-items:center}.topbar__announcement-text{font-size:.92rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.topbar__announcement-dismiss{border:none;background:#0f172a0f;color:var(--text-primary);width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s ease,transform .2s ease}.topbar__announcement-dismiss:hover{background:#0f172a1f}.topbar__announcement-panel{position:absolute;top:100%;left:0;right:0;margin-top:.75rem;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:1rem;box-shadow:0 35px 70px #0f172a2e;padding:1.25rem 1.5rem;max-height:420px;overflow-y:auto;z-index:2}.topbar__announcement-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.topbar__announcement-panel-title{font-size:1rem;font-weight:600;color:var(--text-primary);display:block}.topbar__announcement-panel-subtitle{font-size:.85rem;color:var(--text-tertiary);display:block;margin-top:.25rem}.topbar__announcement-panel-actions{display:flex;align-items:center;gap:.75rem}.topbar__announcement-link{border:none;background:transparent;color:var(--accent-blue);font-weight:600;cursor:pointer;padding:0;font-size:.9rem;transition:color .2s ease}.topbar__announcement-link:hover{color:#1d4ed8}.topbar__announcement-link--small{font-size:.85rem}.topbar__announcement-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.topbar__announcement-item{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:.85rem;padding:.9rem 1rem;box-shadow:inset 0 1px #ffffff1a}.topbar__announcement-item-content{display:flex;align-items:center;gap:.4rem;margin-bottom:.4rem;flex-wrap:nowrap}.topbar__announcement-item-chip{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);white-space:nowrap;display:inline-flex;align-items:center}.topbar__announcement-item-text{font-size:.95rem;color:var(--text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__announcement-item-date{font-size:.78rem;color:var(--text-tertiary)}.topbar__announcement,.topbar__announcement-body,.topbar__announcement-panel,.topbar__announcement-item{font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif}.topbar__announcement-icon--list{font-size:1.05rem}.topbar__announcement-icon--fresh{animation:topbarAnnouncementIconPulse 1.2s ease-in-out infinite;color:#2563eb}@keyframes topbarAnnouncementIconPulse{0%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(37,99,235,0))}50%{transform:scale(1.15);filter:drop-shadow(0 0 8px rgba(37,99,235,.45))}to{transform:scale(1);filter:drop-shadow(0 0 0 rgba(37,99,235,0))}}.push-notification-prompt{position:fixed;bottom:1rem;right:1rem;z-index:1000;max-width:400px;animation:slideInUp .3s ease-out}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.push-notification-prompt__content{padding:1.5rem;display:flex;flex-direction:column;gap:1rem;box-shadow:0 8px 32px #0f172a33}.push-notification-prompt__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.push-notification-prompt__title{font-size:1.125rem;font-weight:600;margin:0;letter-spacing:-.01em}.push-notification-prompt__close{background:none;border:none;font-size:1.5rem;line-height:1;color:var(--text-secondary, #4b5563);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:.375rem;transition:all .2s ease;flex-shrink:0}.push-notification-prompt__close:hover{background:#94a3b833;color:var(--text-primary, #1f2937)}.push-notification-prompt__close:focus{outline:2px solid var(--accent-blue, #2563eb);outline-offset:2px}.push-notification-prompt__message{font-size:.9375rem;line-height:1.5;margin:0}.push-notification-prompt__actions{display:flex;gap:.75rem;margin-top:.5rem}.push-notification-prompt__button{flex:1;padding:.75rem 1.25rem;font-size:.9375rem;font-weight:600;border:1px solid transparent;border-radius:.75rem;cursor:pointer;transition:all .2s ease}.push-notification-prompt__button--primary{background:linear-gradient(135deg,#2563eb,#10b981);color:#fff;border:none}.push-notification-prompt__button--primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #2563eb4d}.push-notification-prompt__button--primary:active:not(:disabled){transform:translateY(0)}.push-notification-prompt__button--secondary{background:#ffffffd9;backdrop-filter:blur(15px) saturate(180%);border:1px solid rgba(148,163,184,.4);color:var(--text-primary, #1f2937)}.push-notification-prompt__button--secondary:hover:not(:disabled){background:#fffffff2;border-color:#94a3b899}.push-notification-prompt__button:disabled{opacity:.6;cursor:not-allowed}.push-notification-prompt__never{background:none;border:none;color:var(--text-tertiary, #6b7280);font-size:.875rem;padding:.5rem 0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color .2s ease;align-self:flex-start;margin-top:.25rem}.push-notification-prompt__never:hover:not(:disabled){color:var(--text-secondary, #4b5563)}.push-notification-prompt__never:disabled{opacity:.6;cursor:not-allowed}:root{--glass-bg-light: linear-gradient(135deg, #eff6ff 0%, #f5fff9 100%);--app-background: var(--glass-bg-light);--body-text-color: #0f172a;--body-muted-text-color: #475569;--glass-bg: rgba(255, 255, 255, .85);--glass-bg-hover: rgba(255, 255, 255, .95);--glass-border: rgba(148, 163, 184, .4);--glass-border-hover: rgba(148, 163, 184, .6);--glass-shadow: 0 25px 60px rgba(15, 23, 42, .12);--glass-shadow-hover: 0 30px 70px rgba(15, 23, 42, .18);--chart-grid-color: rgba(15, 23, 42, .08);--chart-axis-color: rgba(15, 23, 42, .65);--chart-reference-line: rgba(15, 23, 42, .35);--chart-battery-line: rgba(71, 85, 105, .9);--pv-solar-color-strong: #facc15;--pv-solar-color-soft: rgba(250, 204, 21, .35);--pv-consumption-color-strong: #06b6d4;--pv-consumption-color-soft: rgba(6, 182, 212, .35);--pv-battery-color-strong: var(--chart-battery-line);--pv-battery-color-soft: rgba(148, 163, 184, .35);--text-primary: #1f2937;--text-secondary: #4b5563;--text-tertiary: #6b7280;--glass-highlight: rgba(255, 255, 255, .8);--accent-blue: #2563eb;--accent-green: #10b981;--radius-sm: .75rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-xl: 2rem;--blur-light: blur(10px) saturate(180%);--blur-medium: blur(15px) saturate(180%);--blur-heavy: blur(20px) saturate(180%)}:root[data-theme=dark]{color-scheme:dark;--glass-bg-light: radial-gradient(circle at top, #0f172a 0%, #0b1120 45%, #020617 100%);--app-background: var(--glass-bg-light);--body-text-color: #e2e8f0;--body-muted-text-color: #94a3b8;--glass-bg: rgba(15, 23, 42, .8);--glass-bg-hover: rgba(15, 23, 42, .92);--glass-border: rgba(96, 165, 250, .35);--glass-border-hover: rgba(147, 197, 253, .55);--glass-shadow: 0 25px 60px rgba(2, 6, 23, .6);--glass-shadow-hover: 0 30px 70px rgba(2, 6, 23, .75);--chart-grid-color: rgba(248, 250, 252, .12);--chart-axis-color: rgba(248, 250, 252, .85);--chart-reference-line: rgba(248, 250, 252, .45);--chart-battery-line: rgba(203, 213, 225, .95);--pv-solar-color-strong: #fde047;--pv-solar-color-soft: rgba(253, 224, 71, .5);--pv-consumption-color-strong: #67e8f9;--pv-consumption-color-soft: rgba(103, 232, 249, .45);--pv-battery-color-strong: var(--chart-battery-line);--pv-battery-color-soft: rgba(203, 213, 225, .45);--text-primary: #f8fafc;--text-secondary: #cbd5f5;--text-tertiary: #94a3b8;--glass-highlight: rgba(255, 255, 255, .15);--accent-blue: #60a5fa;--accent-green: #34d399;--blur-light: blur(14px) saturate(180%);--blur-medium: blur(18px) saturate(180%);--blur-heavy: blur(28px) saturate(200%)}.liquid-glass{background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.liquid-glass:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6) 50%,transparent);opacity:.4;pointer-events:none}.liquid-glass:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover);transform:translateY(-2px)}.liquid-glass-panel{border-radius:var(--radius-lg);padding:1.5rem}.liquid-glass-card{border-radius:var(--radius-md);padding:1.25rem}.liquid-glass-button{border-radius:var(--radius-sm);padding:.75rem 1.5rem;cursor:pointer;border:none;font-weight:600;color:var(--text-primary);transition:all .2s ease}.liquid-glass-button:hover{background:var(--glass-bg-hover);transform:translateY(-1px)}.liquid-glass-button:active{transform:translateY(0)}.liquid-glass-bg{min-height:100vh;background:var(--app-background);position:relative;overflow-x:hidden;transition:background .4s ease}.liquid-glass-text-primary{color:var(--text-primary)}.liquid-glass-text-secondary{color:var(--text-secondary)}.liquid-glass-text-tertiary{color:var(--text-tertiary)}@keyframes glass-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.liquid-glass-animate{animation:glass-fade-in .4s cubic-bezier(.4,0,.2,1)}.liquid-glass-active{background:var(--glass-bg-hover);border-color:var(--accent-blue);box-shadow:0 0 0 4px #2563eb1a}.value-card{--value-card-start: rgba(251, 191, 36, .25);--value-card-end: rgba(250, 204, 21, .1);--value-card-shadow: rgba(251, 191, 36, .15);--value-card-highlight-opacity: .85;position:relative;display:flex;flex-direction:column;justify-content:flex-start;gap:.15rem;padding:.9rem 1rem;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.35);background:linear-gradient(135deg,var(--value-card-start),var(--value-card-end));box-shadow:0 12px 30px var(--value-card-shadow);overflow:hidden;isolation:isolate}.value-card:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 82% 88%,rgba(255,255,255,.6),transparent 62%);opacity:var(--value-card-highlight-opacity, .85);mix-blend-mode:screen}.value-card__helper{margin:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);z-index:1}.value-card__value{margin:.2rem 0 0;font-size:1.35rem;font-weight:600;color:var(--text-primary);z-index:1}.value-card__value--small{font-size:.95rem;font-weight:500}.value-card__label{margin:.15rem 0 0;font-size:.85rem;color:var(--text-secondary);z-index:1}.dashboard-layout{min-height:100vh;background:var(--app-background);position:relative;display:flex;flex-direction:column;--holiday-lights-height: 95px;transition:background .4s ease}.dashboard-layout__lights{position:fixed;top:42px;left:0;width:100vw;height:var(--holiday-lights-height);display:flex;justify-content:center;align-items:center;pointer-events:none;z-index:99}@media(min-width:768px){.dashboard-layout__lights{left:260px;width:calc(100vw - 260px)}.dashboard-layout__lights--collapsed{left:80px;width:calc(100vw - 80px)}}.dashboard-layout__lights-inner{position:relative;width:100%;max-width:100%;height:100%;overflow:visible;background-image:url(/ezgif.com-webp-maker.webp);background-repeat:repeat-x;background-position:center top;background-size:auto 85%;image-rendering:optimizeQuality}.dashboard-layout__main{flex:1;margin-left:0;margin-top:42px;margin-bottom:0;padding:1.5rem 1.5rem 2rem;position:relative;z-index:1}.dashboard-layout--with-lights .dashboard-layout__main{margin-top:calc(42px + var(--holiday-lights-height))}.dashboard-layout__content{max-width:clamp(1200px,90vw,1680px);margin:0 auto;width:100%;overflow:visible}@media(min-width:768px){.dashboard-layout__main{margin-left:260px;margin-top:42px;padding-bottom:1.5rem;transition:margin-left .3s cubic-bezier(.4,0,.2,1)}.dashboard-layout--with-lights .dashboard-layout__main{margin-top:calc(42px + var(--holiday-lights-height))}.dashboard-layout__main--sidebar-collapsed{margin-left:80px}}@media(min-width:1440px){.dashboard-layout__main{padding:2rem 2.5rem 2.5rem}}@media(min-width:1920px){.dashboard-layout__main{padding:2.5rem 3rem 3rem}}.dashboard-calendar-events{display:flex;flex-direction:column;gap:1.5rem}.dashboard-calendar-events__loading,.dashboard-calendar-events__error,.dashboard-calendar-events__empty{text-align:center;padding:1rem;font-size:.95rem}.dashboard-calendar-events__day{display:flex;flex-direction:column;gap:.75rem}.dashboard-calendar-events__day-title{font-size:1.1rem;font-weight:600;margin:0;letter-spacing:-.01em;padding-bottom:.5rem;border-bottom:1px solid var(--glass-border)}.dashboard-calendar-events__events-list{display:flex;flex-direction:column;gap:.75rem}.dashboard-calendar-events__event{padding:1rem;display:flex;flex-direction:column;gap:.75rem;transition:all .2s cubic-bezier(.4,0,.2,1)}.dashboard-calendar-events__event:hover{background:var(--glass-bg-hover);border-color:var(--glass-border)}.dashboard-calendar-events__event-header{display:flex;flex-direction:column;gap:.25rem}.dashboard-calendar-events__event-title{font-size:1rem;font-weight:600;margin:0;line-height:1.4}.dashboard-calendar-events__event-time{font-size:.875rem;font-weight:500}.dashboard-calendar-events__event-details{display:flex;flex-direction:column;gap:.5rem;font-size:.875rem;line-height:1.5}.dashboard-calendar-events__event-location{display:flex;align-items:flex-start;gap:.5rem}.dashboard-calendar-events__event-description{line-height:1.5;word-wrap:break-word}.dashboard-calendar-events__event-members{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding-top:.5rem;border-top:1px solid var(--glass-border)}.dashboard-calendar-events__event-members-label{font-size:.875rem;font-weight:500}.dashboard-calendar-events__event-members-icons{display:flex;align-items:center;gap:-10%}.dashboard-calendar-events__event-member-icon{width:40px;height:40px;border-radius:50%;border:2px solid;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#ffffff80;margin-left:-5%}.dashboard-calendar-events__event-member-icon:first-child{margin-left:0}.dashboard-calendar-events__event-member-image{width:100%;height:100%;object-fit:cover}@media(min-width:768px){.dashboard-calendar-events{gap:2rem}.dashboard-calendar-events__day{gap:1rem}.dashboard-calendar-events__day-title{font-size:1.25rem}.dashboard-calendar-events__events-list{gap:1rem}.dashboard-calendar-events__event{padding:1.25rem;gap:1rem}.dashboard-calendar-events__event-title{font-size:1.1rem}.dashboard-calendar-events__event-member-icon{width:44px;height:44px}}.dashboard-shopping-list{display:flex;flex-direction:column;gap:1rem}.dashboard-shopping-list__loading,.dashboard-shopping-list__error,.dashboard-shopping-list__empty{padding:1rem;text-align:center;font-size:.9rem}.dashboard-shopping-list__items{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.dashboard-shopping-list__item{padding:.75rem 1rem;transition:transform .2s ease,box-shadow .2s ease}.dashboard-shopping-list__item:hover{transform:translateY(-1px)}.dashboard-shopping-list__item-content{display:flex;flex-direction:column;gap:.25rem}.dashboard-shopping-list__item-name{font-size:.95rem;font-weight:500;line-height:1.4}.dashboard-shopping-list__item-note{font-size:.85rem;line-height:1.4;opacity:.7}.dashboard-shopping-list__link{display:inline-block;margin-top:.5rem;font-size:.9rem;text-decoration:none;transition:opacity .2s ease;align-self:flex-start}.dashboard-shopping-list__link:hover{opacity:.8;text-decoration:underline}.pv-history-graph{display:flex;flex-direction:column;gap:.75rem}.pv-history-graph__header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem}.pv-history-graph__title{font-size:1rem;margin:0}.pv-history-graph__snapshot{display:flex;flex-wrap:wrap;gap:.5rem;margin-left:auto;justify-content:flex-end}.pv-history-graph__snapshot-item{font-size:.8rem;font-weight:600;padding:.35rem .65rem;border-radius:999px;border:1px solid rgba(148,163,184,.3);background:#fffc;color:var(--text-primary);box-shadow:inset 0 1px #ffffffa6}.pv-history-graph__snapshot-item--solar{border-color:#fde04780;color:#92400e}.pv-history-graph__snapshot-item--consumption{border-color:#06b6d480;color:#0f766e}.pv-history-graph__snapshot-item--battery{border-color:var(--chart-battery-line);color:var(--chart-battery-line);opacity:.9}.pv-history-graph__snapshot-item--grid{border-color:#94a3b873;color:var(--text-secondary)}.pv-history-graph__chart-container{width:100%;border-radius:var(--radius-lg);overflow:hidden;background:linear-gradient(180deg,#0f172a33,#0f172a0d);padding:8px}.pv-history-graph__tooltip{background:#fffffff2;border:1px solid rgba(148,163,184,.3);border-radius:8px;padding:.5rem;box-shadow:0 4px 12px #00000026}.pv-history-graph__tooltip-title{font-size:.75rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.pv-history-graph__tooltip-row{display:flex;justify-content:space-between;gap:.75rem;font-size:.75rem;margin-top:.25rem}.pv-history-graph__tooltip-label{color:var(--text-secondary)}.pv-history-graph__tooltip-value{font-weight:600;color:var(--text-primary)}.pv-history-graph__tooltip-value--solar{color:#92400e}.pv-history-graph__tooltip-value--consumption{color:#0f766e}.pv-history-graph__tooltip-value--battery{color:var(--chart-battery-line)}.dashboard-pv-status{display:flex;flex-direction:column;gap:1rem}.dashboard-pv-status__header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;flex-wrap:wrap}.dashboard-pv-status__eyebrow{font-size:.85rem;margin:0;letter-spacing:.08em;text-transform:uppercase}.dashboard-pv-status__title{font-size:1.25rem;margin:.15rem 0 0;letter-spacing:-.01em}.dashboard-pv-status__timestamp{font-size:.85rem}.dashboard-pv-status__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}@media(min-width:1440px){.dashboard-pv-status__metrics{gap:1rem}}@media(min-width:1920px){.dashboard-pv-status__metrics{gap:1.25rem}}.dashboard-pv-status__metric--solar{background:linear-gradient(135deg,#fde04759,#facc1533);box-shadow:0 12px 30px #fde04733}.dashboard-pv-status__metric--consumption{background:linear-gradient(135deg,#06b6d44d,#0ea5e926);box-shadow:0 12px 30px #06b6d42e}.dashboard-pv-status__metric--grid{background:linear-gradient(135deg,#94a3b866,#64748b33);box-shadow:0 12px 30px #94a3b833}.dashboard-pv-status__metric--battery{background:linear-gradient(135deg,#0f172a59,#1e293b33);box-shadow:0 12px 30px #0f172a33}.dashboard-pv-status__graph{display:flex;flex-direction:column;gap:.5rem}.dashboard-pv-status__graph-header{display:flex;justify-content:space-between;align-items:center}.dashboard-pv-status__graph-title{font-size:1rem;margin:0}.dashboard-pv-status__legend{display:flex;gap:.5rem;flex-wrap:wrap}.dashboard-pv-status__legend-item{font-size:.78rem;font-weight:600;padding:.2rem .75rem;border-radius:999px;border:1px solid transparent;background:#ffffffd9}.dashboard-pv-status__legend-item--solar{border-color:#fde04799;color:#92400e}.dashboard-pv-status__legend-item--consumption{border-color:#06b6d499;color:#0f766e}.dashboard-pv-status__legend-item--battery{border-color:#0f172a73;color:#0f172a}.dashboard-pv-status__graph-empty,.dashboard-pv-status__error,.dashboard-pv-status__loading{font-size:.9rem}.dashboard-pv-forecast{display:flex;flex-direction:column;gap:.75rem}.dashboard-pv-forecast__header{display:flex;flex-direction:column;gap:.4rem}.dashboard-pv-forecast__eyebrow{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.dashboard-pv-forecast__meta{font-size:.9rem;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem}.dashboard-pv-forecast__error{color:#dc2626;font-weight:600}.dashboard-pv-forecast__loading,.dashboard-pv-forecast__empty{font-size:.9rem;color:var(--text-secondary);text-align:center;padding:.5rem 0}.dashboard-pv-forecast__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:.75rem}.dashboard-pv-forecast__card{min-height:120px}.dashboard-pv-forecast__chart{display:flex;flex-direction:column;gap:.5rem}.dashboard-pv-forecast__chart-header{display:flex;justify-content:space-between;align-items:center}.dashboard-pv-forecast__chart-title{font-size:1rem;margin:0}.dashboard-pv-forecast__chart-content{width:100%;height:180px;border-radius:var(--radius-lg);overflow:hidden;background:#0003;padding:.5rem}.dashboard-pv-forecast__tooltip{background:#0f172af2;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md, .75rem);padding:.6rem .75rem;box-shadow:0 4px 12px #0000004d;backdrop-filter:blur(8px);min-width:140px}.dashboard-pv-forecast__tooltip-title{font-size:.85rem;font-weight:600;color:#ffffffe6;margin-bottom:.4rem;padding-bottom:.4rem;border-bottom:1px solid rgba(255,255,255,.1)}.dashboard-pv-forecast__tooltip-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.dashboard-pv-forecast__tooltip-label{font-size:.75rem;color:#ffffffb3}.dashboard-pv-forecast__tooltip-value{font-size:.8rem;font-weight:600;color:#fbbf24}.gauge-chart{position:relative;display:inline-flex;align-items:center;justify-content:center}.gauge-chart__svg-wrapper{position:relative}.gauge-chart__track{fill:none;stroke:#0f172a14}.gauge-chart__progress{fill:none;stroke:var(--accent-blue, #38bdf8);stroke-linecap:round;transition:stroke-dashoffset .4s ease,stroke .3s ease}.gauge-chart__center-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.2;width:75%}.gauge-chart__title{margin:0;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-size:.8em}.gauge-chart__center-label{margin:.25rem 0 0;font-weight:700;color:var(--text-primary);font-size:1.1em}.gauge-chart__value{margin:.35rem 0 0;font-weight:700;color:var(--text-primary);display:flex;align-items:baseline;gap:.35rem}.gauge-chart__unit{font-size:.45em;text-transform:uppercase;color:var(--text-secondary)}.gauge-chart__badge{margin-top:.5rem;font-size:.8rem;font-weight:600;padding:.2rem .6rem;border-radius:999px;border:1px solid currentColor;background:#ffffffe6}.gauge-chart--sm .gauge-chart__badge{font-size:.7rem}.gauge-chart--lg .gauge-chart__badge{font-size:.9rem}.dashboard-pool-status{display:flex;flex-direction:column;gap:1.25rem}.dashboard-pool-status__header{display:flex;flex-direction:column;gap:.4rem}.dashboard-pool-status__eyebrow{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.dashboard-pool-status__title{margin:0;font-size:1.35rem;letter-spacing:-.01em}.dashboard-pool-status__meta{font-size:.9rem;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem}.dashboard-pool-status__error{color:#dc2626;font-weight:600}.dashboard-pool-status__dot{width:.65rem;height:.65rem;border-radius:50%;background:linear-gradient(135deg,#38bdf8,#22d3ee);animation:dashboard-pool-pulse 1.4s ease-in-out infinite}@keyframes dashboard-pool-pulse{0%{transform:scale(.8);opacity:.6}50%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:.6}}.dashboard-pool-status__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}@media(min-width:1440px){.dashboard-pool-status__grid{gap:1rem}}@media(min-width:1920px){.dashboard-pool-status__grid{gap:1.25rem}}.dashboard-pool-status__card--pump{align-items:flex-start;text-align:left;gap:.35rem;justify-content:flex-start}.dashboard-pool-status__card--pump-off{--value-card-start: rgba(148, 163, 184, .45);--value-card-end: rgba(71, 85, 105, .25);--value-card-shadow: rgba(71, 85, 105, .25)}.dashboard-pool-status__card--pump-low{--value-card-start: rgba(59, 130, 246, .35);--value-card-end: rgba(14, 165, 233, .2);--value-card-shadow: rgba(14, 165, 233, .2)}.dashboard-pool-status__card--pump-medium{--value-card-start: rgba(250, 204, 21, .45);--value-card-end: rgba(253, 224, 71, .25);--value-card-shadow: rgba(250, 204, 21, .2)}.dashboard-pool-status__card--pump-high{--value-card-start: rgba(248, 113, 113, .5);--value-card-end: rgba(239, 68, 68, .3);--value-card-shadow: rgba(239, 68, 68, .25)}.dashboard-pool-status__card--pump-pending{--value-card-start: rgba(248, 250, 252, .45);--value-card-end: rgba(148, 163, 184, .15);--value-card-shadow: rgba(148, 163, 184, .15)}.dashboard-pool-status__card--heat-pump-gray{--value-card-start: rgba(148, 163, 184, .45);--value-card-end: rgba(71, 85, 105, .25);--value-card-shadow: rgba(71, 85, 105, .25)}.dashboard-pool-status__card--heat-pump-green{--value-card-start: rgba(34, 197, 94, .35);--value-card-end: rgba(16, 185, 129, .2);--value-card-shadow: rgba(16, 185, 129, .2)}.dashboard-pool-status__card--heat-pump-orange{--value-card-start: rgba(251, 146, 60, .45);--value-card-end: rgba(249, 115, 22, .25);--value-card-shadow: rgba(249, 115, 22, .2)}.dashboard-pool-status__card--heat-pump-red{--value-card-start: rgba(248, 113, 113, .5);--value-card-end: rgba(239, 68, 68, .3);--value-card-shadow: rgba(239, 68, 68, .25)}.dashboard-pool-status__card--heat-pump-pending{--value-card-start: rgba(248, 250, 252, .45);--value-card-end: rgba(148, 163, 184, .15);--value-card-shadow: rgba(148, 163, 184, .15)}.dashboard-pool-status__pump-mode-value-wrapper{width:100%;display:flex;justify-content:flex-start}.dashboard-pool-status__pump-mode-value{font-size:1.35rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-primary)}.dashboard-pool-status__pump-mode-value--pending{color:var(--text-secondary)}.dashboard-pool-status__pump-mode-power{margin:0;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}.dashboard-pool-status__contamination{display:flex;gap:1rem;align-items:center;padding:1.1rem 1.2rem;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.dashboard-pool-status__contamination-gauge{flex:0 0 auto;display:flex;align-items:center;justify-content:center;transform:scale(.8);transform-origin:center}.dashboard-pool-status__contamination-info{display:flex;flex-direction:column;gap:.15rem}.dashboard-pool-status__contamination-label{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.dashboard-pool-status__contamination-value{margin:0;font-size:1.35rem;font-weight:700}.dashboard-pool-status__contamination-value--clean{color:var(--accent-green)}.dashboard-pool-status__contamination-value--warning{color:#f59e0b}.dashboard-pool-status__contamination-value--critical{color:#dc2626}.dashboard-pool-status__contamination-value--pending{color:var(--text-secondary)}.dashboard-pool-status__contamination-hint{margin:0;font-size:.9rem;color:var(--text-secondary)}.dashboard-pool-status__loading{font-size:.9rem;color:var(--text-secondary);text-align:center;padding:.5rem 0}.washing-machine-icon{display:block;flex-shrink:0}.washing-machine-icon__vortex{transform-origin:60px 62.5px;animation:vortex-spin 2s linear infinite}.washing-machine-icon__checkmark{animation:checkmark-appear .4s cubic-bezier(.34,1.56,.64,1);transform-origin:60px 62.5px}.dashboard-washing-machine{display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease;max-width:100%;width:100%;position:relative}@media(min-width:768px){.dashboard-washing-machine{max-width:calc(100vw * 1.42857 * .7 - 3rem)}}@media(min-width:1024px){.dashboard-washing-machine{max-width:350px}}.dashboard-washing-machine--finished{background:#10b98114;border-color:#10b98166}.dashboard-washing-machine__close-button{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:#0000000d;border:1px solid rgba(0,0,0,.1);border-radius:50%;color:#6b7280;font-size:1.5rem;font-weight:300;line-height:1;cursor:pointer;z-index:10;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;padding:0;margin:0}.dashboard-washing-machine__close-button:hover{background:#dc26261a;border-color:#dc26264d;color:#dc2626;transform:scale(1.1)}.dashboard-washing-machine__close-button:active{transform:scale(.95)}.dashboard-washing-machine__close-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.dashboard-washing-machine__title{margin:0;font-size:1.35rem;font-weight:600;letter-spacing:-.01em;text-align:center}.dashboard-washing-machine--finished .dashboard-washing-machine__title{color:#10b981}.dashboard-washing-machine__content{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.dashboard-washing-machine__icon-wrapper{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:100%}.dashboard-washing-machine__info{flex:1;display:flex;flex-direction:column;gap:.375rem;width:100%;align-items:center}.dashboard-washing-machine__status{display:flex;align-items:baseline;justify-content:center;gap:.75rem;width:100%}.dashboard-washing-machine__status-label{font-size:.95rem;font-weight:600;color:var(--text-secondary, #4b5563)}.dashboard-washing-machine__status-label--finished{color:#10b981;font-weight:700;font-size:1.1rem}.dashboard-washing-machine__status-value{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1f2937)}.dashboard-washing-machine--finished .dashboard-washing-machine__status-value{color:#10b981}.dashboard-washing-machine__details{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;width:100%;max-width:400px}.dashboard-washing-machine__detail{display:flex;flex-direction:column;gap:.25rem;align-items:center;text-align:center}.dashboard-washing-machine__detail-label{font-size:.875rem;color:var(--text-tertiary, #6b7280);font-weight:500}.dashboard-washing-machine__detail-value{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.dashboard-washing-machine--finished .dashboard-washing-machine__detail-value{color:#059669}.dashboard-washing-machine__error{padding:.75rem 1rem;background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:.75rem;color:#dc2626;font-size:.9rem}.dashboard-washing-machine__mock-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:.75rem;color:#2563eb;font-size:.875rem;font-weight:600}.dashboard-washing-machine__mock-button{padding:.5rem 1rem;background:#3b82f633;border:1px solid rgba(59,130,246,.4);border-radius:.5rem;color:#2563eb;font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.dashboard-washing-machine__mock-button:hover{background:#3b82f64d;border-color:#3b82f680}@media(min-width:768px){.dashboard-washing-machine{padding:1.5rem}.dashboard-washing-machine__icon-wrapper{width:140px;height:140px}.dashboard-washing-machine__icon-wrapper svg{width:140px;height:140px}}@media(min-width:1024px){.dashboard-washing-machine__icon-wrapper{width:120px;height:120px}.dashboard-washing-machine__icon-wrapper svg{width:120px;height:120px}}.dryer-icon{display:block;flex-shrink:0}.dryer-icon__vortex{transform-origin:60px 62.5px;animation:vortex-spin 2s linear infinite}.dryer-icon__checkmark{animation:checkmark-appear .4s cubic-bezier(.34,1.56,.64,1);transform-origin:60px 62.5px}@keyframes vortex-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes checkmark-appear{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.dashboard-dryer{display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease;max-width:100%;width:100%;position:relative}@media(min-width:768px){.dashboard-dryer{max-width:calc(100vw * 1.42857 * .7 - 3rem)}}@media(min-width:1024px){.dashboard-dryer{max-width:350px}}.dashboard-dryer--finished{background:#10b98114;border-color:#10b98166}.dashboard-dryer__close-button{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:#0000000d;border:1px solid rgba(0,0,0,.1);border-radius:50%;color:#6b7280;font-size:1.5rem;font-weight:300;line-height:1;cursor:pointer;z-index:10;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;padding:0;margin:0}.dashboard-dryer__close-button:hover{background:#dc26261a;border-color:#dc26264d;color:#dc2626;transform:scale(1.1)}.dashboard-dryer__close-button:active{transform:scale(.95)}.dashboard-dryer__close-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.dashboard-dryer__title{margin:0;font-size:1.35rem;font-weight:600;letter-spacing:-.01em;text-align:center}.dashboard-dryer--finished .dashboard-dryer__title{color:#10b981}.dashboard-dryer__content{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.dashboard-dryer__icon-wrapper{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:100%}.dashboard-dryer__info{flex:1;display:flex;flex-direction:column;gap:.375rem;width:100%;align-items:center}.dashboard-dryer__status{display:flex;align-items:baseline;justify-content:center;gap:.75rem;width:100%}.dashboard-dryer__status-label{font-size:.95rem;font-weight:600;color:var(--text-secondary, #4b5563)}.dashboard-dryer__status-label--finished{color:#10b981;font-weight:700;font-size:1.1rem}.dashboard-dryer__status-value{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1f2937)}.dashboard-dryer--finished .dashboard-dryer__status-value{color:#10b981}.dashboard-dryer__details{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;width:100%;max-width:400px}.dashboard-dryer__detail{display:flex;flex-direction:column;gap:.25rem;align-items:center;text-align:center}.dashboard-dryer__detail-label{font-size:.875rem;color:var(--text-tertiary, #6b7280);font-weight:500}.dashboard-dryer__detail-value{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.dashboard-dryer--finished .dashboard-dryer__detail-value{color:#059669}.dashboard-dryer__error{padding:.75rem 1rem;background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:.75rem;color:#dc2626;font-size:.9rem}.dashboard-dryer__mock-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:.75rem;color:#2563eb;font-size:.875rem;font-weight:600}.dashboard-dryer__mock-button{padding:.5rem 1rem;background:#3b82f633;border:1px solid rgba(59,130,246,.4);border-radius:.5rem;color:#2563eb;font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.dashboard-dryer__mock-button:hover{background:#3b82f64d;border-color:#3b82f680}@media(min-width:768px){.dashboard-dryer{padding:1.5rem}.dashboard-dryer__icon-wrapper{width:140px;height:140px}.dashboard-dryer__icon-wrapper svg{width:140px;height:140px}}@media(min-width:1024px){.dashboard-dryer__icon-wrapper{width:120px;height:120px}.dashboard-dryer__icon-wrapper svg{width:120px;height:120px}}.dashboard-tesla{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease,opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1);max-width:100%;width:100%;min-height:0;position:relative;overflow:visible;will-change:transform,opacity}@media(min-width:768px){.dashboard-tesla{max-width:calc(100vw * 1.42857 * .7 - 3rem);padding:.75rem 1rem}}@media(min-width:1024px){.dashboard-tesla{max-width:350px;padding:.75rem 1rem}}.dashboard-tesla__title{margin:0 0 .25rem;font-size:1.35rem;font-weight:600;letter-spacing:-.01em;text-align:left;flex-shrink:0}.dashboard-tesla__content{display:flex;flex-direction:column;gap:.5rem;width:100%;flex:1;min-height:0}.dashboard-tesla__section{display:flex;flex-direction:column;gap:.75rem;width:100%;padding:.75rem;border-radius:.75rem;transition:transform .2s ease,box-shadow .2s ease;flex-shrink:0}.dashboard-tesla__section--battery{border-radius:.75rem}.dashboard-tesla__charging-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.dashboard-tesla__location{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.dashboard-tesla__status-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background:#0000000d;border:1px solid rgba(0,0,0,.1);border-radius:1rem;font-size:.875rem;font-weight:600;color:var(--text-secondary, #4b5563)}.dashboard-tesla__status-badge--charging{background:#22c55e1a;border-color:#22c55e4d;color:#16a34a}.dashboard-tesla__status-badge--climate{background:#3b82f61a;border-color:#3b82f64d;color:#2563eb}.dashboard-tesla__status-indicator{width:.5rem;height:.5rem;border-radius:50%;background:currentColor}.dashboard-tesla__status-indicator--charging,.dashboard-tesla__status-indicator--climate{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.dashboard-tesla__climate-header{display:flex;align-items:center;justify-content:center;gap:1rem;width:100%}.dashboard-tesla__battery-section{display:flex;flex-direction:column;gap:.5rem;width:100%}.dashboard-tesla__battery-label{font-size:.9rem;color:var(--text-primary, #1f2937);font-weight:600;margin-bottom:.25rem}.dashboard-tesla__battery-bar-container{width:100%;margin-bottom:.5rem;padding:0 .25rem}.dashboard-tesla__battery-bar{width:100%;height:2rem;background:#0000001a;border-radius:.5rem;overflow:hidden;position:relative}.dashboard-tesla__battery-fill{height:100%;transition:width .5s ease;border-radius:.5rem;position:absolute;left:0;top:0}.dashboard-tesla__battery-percentage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:1rem;font-weight:700;color:#000;z-index:1;pointer-events:none}.dashboard-tesla__charging-info,.dashboard-tesla__temperature-info{display:flex;flex-direction:column;gap:.25rem;width:100%;margin-top:.25rem}.dashboard-tesla__climate-section{display:flex;flex-direction:column;gap:.35rem;width:100%}.dashboard-tesla__climate-cards-wrapper{width:100%;padding:0 .25rem}.dashboard-tesla__climate-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:100%}.dashboard-tesla__climate-card{border:1px solid var(--glass-border, rgba(148, 163, 184, .4));border-radius:.65rem;padding:.6rem .75rem;min-height:72px;display:flex;flex-direction:column;justify-content:center;gap:.15rem;color:var(--text-primary, #1f2937);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.dashboard-tesla__climate-card-label{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, #4b5563)}.dashboard-tesla__climate-card-value{font-size:1.1rem;font-weight:700;color:inherit}.dashboard-tesla__climate-card-helper{font-size:.78rem;color:var(--text-secondary, #4b5563)}.dashboard-tesla__info-row{display:flex;flex-direction:row;align-items:baseline;gap:.5rem;text-align:left}.dashboard-tesla__info-label{font-size:.9rem;color:var(--text-secondary, #4b5563);font-weight:600;min-width:4rem}.dashboard-tesla__info-value{font-size:.9rem;font-weight:600;color:var(--text-primary, #1f2937)}.dashboard-tesla__temperature-section{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;width:100%}.dashboard-tesla__temp-item{display:flex;flex-direction:column;gap:.25rem;align-items:center;text-align:center;padding:.5rem;border-radius:.5rem;transition:transform .2s ease,box-shadow .2s ease}.dashboard-tesla__temp-label{font-size:.875rem;color:var(--text-tertiary, #6b7280);font-weight:500}.dashboard-tesla__temp-value{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1f2937)}.dashboard-tesla__climate-button{width:100%;padding:.75rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:.5rem;color:#2563eb;font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .15s ease}.dashboard-tesla__climate-button:hover:not(:disabled){background:#3b82f633;border-color:#3b82f666;transform:translateY(-1px)}.dashboard-tesla__climate-button:active:not(:disabled){transform:translateY(0)}.dashboard-tesla__climate-button:disabled{opacity:.5;cursor:not-allowed}.dashboard-tesla__climate-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.dashboard-tesla__error{padding:.75rem 1rem;background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:.75rem;color:#dc2626;font-size:.9rem}@media(min-width:768px){.dashboard-tesla{padding:1.5rem}}.dashboard-garage-door{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease;max-width:100%;width:100%;position:relative}@media(min-width:768px){.dashboard-garage-door{max-width:calc(100vw * 1.42857 * .7 - 3rem)}}@media(min-width:1024px){.dashboard-garage-door{max-width:350px}}.dashboard-garage-door__close-button{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:#0000000d;border:1px solid rgba(0,0,0,.1);border-radius:50%;color:#6b7280;font-size:1.5rem;font-weight:300;line-height:1;cursor:pointer;z-index:10;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;padding:0;margin:0}.dashboard-garage-door__close-button:hover{background:#0000001a;border-color:#0003;color:#374151;transform:scale(1.1)}.dashboard-garage-door__title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.dashboard-garage-door__content{display:flex;flex-direction:column;gap:1rem}.dashboard-garage-door__status{font-size:.875rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.dashboard-garage-door__visualization{position:relative;width:100%;height:200px;background:linear-gradient(180deg,#1e293b99,#0f172acc);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;border:1px solid rgba(255,255,255,.1);transition:transform .2s ease,box-shadow .2s ease}.dashboard-garage-door__visualization:hover{transform:translateY(-2px);box-shadow:0 20px 40px #0000004d}.dashboard-garage-door__visualization:active{transform:translateY(0)}.dashboard-garage-door-container{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;transform-origin:top center;transition:transform 15s cubic-bezier(.4,0,.2,1);z-index:2}.dashboard-garage-door-container--open{transform:translateY(-100%)}.dashboard-garage-door-segment{flex:1;background:linear-gradient(180deg,#fff,#f8fafc,#f1f5f9);border-bottom:2px solid rgba(0,0,0,.1);border-top:1px solid rgba(255,255,255,.3);position:relative;transform-origin:top center;transition:transform 15s cubic-bezier(.4,0,.2,1)}.dashboard-garage-door-segment--1{background:linear-gradient(180deg,#fff 0% 50%,#f8fafc)}.dashboard-garage-door-segment--2{background:linear-gradient(180deg,#fff,#f8fafc,#f1f5f9)}.dashboard-garage-door-segment--3{background:linear-gradient(180deg,#f8fafc,#f1f5f9,#e2e8f0)}.dashboard-garage-door-segment--4{background:linear-gradient(180deg,#f1f5f9,#e2e8f0,#cbd5e1)}.dashboard-garage-door-segment--5{background:linear-gradient(180deg,#e2e8f0,#cbd5e1,#94a3b8)}.dashboard-garage-door-segment--6{background:linear-gradient(180deg,#cbd5e1,#94a3b8,#64748b)}.dashboard-garage-door-container--opening .dashboard-garage-door-segment{transform:rotateX(-90deg)}.dashboard-garage-door-container--closing .dashboard-garage-door-segment{transform:rotateX(0)}.dashboard-garage-interior{position:absolute;bottom:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,#0f172a66,#1e293b99,#334155cc);display:flex;align-items:flex-end;justify-content:center;padding-bottom:1.5rem;opacity:1;pointer-events:auto;z-index:1}.dashboard-tesla-model-y{width:70%;height:auto;object-fit:contain;filter:drop-shadow(0 5px 10px rgba(0,0,0,.5));opacity:0;transition:opacity 5s ease}.dashboard-tesla-model-y--visible{opacity:1}.dashboard-garage-door-overlay{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:#0009;backdrop-filter:blur(8px);padding:.5rem 1rem;border-radius:999px;opacity:0;transition:opacity .3s ease;pointer-events:none}.dashboard-garage-door__visualization:hover .dashboard-garage-door-overlay{opacity:1}.dashboard-garage-door-hint{color:#ffffffe6;font-size:.85rem;font-weight:500;white-space:nowrap}.camera-lightbox__backdrop{position:fixed;inset:0;background:#0f172ad9;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:2000;animation:camera-lightbox-fade-in .2s ease}@keyframes camera-lightbox-fade-in{0%{opacity:0}to{opacity:1}}.camera-lightbox__container{width:100%;max-width:100%;max-height:90vh;background:var(--glass-bg);backdrop-filter:var(--blur-medium);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;animation:camera-lightbox-scale-in .2s ease}@keyframes camera-lightbox-scale-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.camera-lightbox__header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1);gap:1rem;background:transparent;backdrop-filter:none}.camera-lightbox__container--video .camera-lightbox__header,.camera-lightbox__container:has(.camera-lightbox__image-wrapper--video) .camera-lightbox__header{background:#0000004d!important;backdrop-filter:none!important;border-bottom:1px solid rgba(255,255,255,.05)!important}.camera-lightbox__title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}.camera-lightbox__close{border:none;background:transparent;color:var(--text-secondary);font-size:1.5rem;font-weight:300;cursor:pointer;padding:.5rem;line-height:1;border-radius:var(--radius-sm);transition:all .2s ease;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center}.camera-lightbox__close:hover,.camera-lightbox__close:focus-visible{background:#ef444426;color:var(--accent-red, #dc2626);outline:none}.camera-lightbox__content{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:1.5rem;width:100%}.camera-lightbox__image-wrapper{position:relative;width:100%;height:100%;max-height:calc(90vh - 200px);display:flex;align-items:center;justify-content:center;background:transparent;border-radius:var(--radius-md);overflow:hidden}.camera-lightbox__image-wrapper--video{position:relative;width:100%;height:100%;background:#000!important;background-color:#000!important;background-image:none!important;padding:0!important;display:flex;align-items:center;justify-content:center;filter:none!important;-webkit-filter:none!important;isolation:isolate}.camera-lightbox__image-wrapper--video .camera-lightbox__video{position:relative;width:100%;height:100%;object-fit:contain;display:block;background:#000!important;opacity:1!important;filter:none!important;-webkit-filter:none!important;mix-blend-mode:normal!important;transform:none!important;isolation:isolate}.camera-lightbox__container--video,.camera-lightbox__container:has(.camera-lightbox__image-wrapper--video){background:transparent!important;backdrop-filter:none!important;box-shadow:none!important;border:none!important;--glass-bg: transparent !important;--glass-border: transparent !important;--glass-shadow: none !important}.camera-lightbox__content--video,.camera-lightbox__content:has(.camera-lightbox__image-wrapper--video){background:transparent!important;padding:0!important;background-color:transparent!important;background-image:none!important}.camera-lightbox__backdrop--video{position:fixed;inset:0;background:#000;display:flex;align-items:center;justify-content:center;z-index:2000;padding:0;margin:0}.camera-lightbox__video--direct{width:auto;height:auto;max-width:100vw;max-height:100vh;object-fit:contain;display:block;background:#000}.camera-lightbox__close--video{position:fixed;top:1rem;right:1rem;z-index:2001;border:none;background:#0009;backdrop-filter:blur(8px);color:#fff;font-size:1.5rem;font-weight:300;cursor:pointer;padding:.75rem 1rem;line-height:1;border-radius:8px;width:auto;height:auto;transition:all .2s ease}.camera-lightbox__close--video:hover,.camera-lightbox__close--video:focus-visible{background:#ef4444cc;outline:2px solid rgba(255,255,255,.3);outline-offset:2px}.camera-lightbox__nav--video{position:fixed;top:50%;transform:translateY(-50%);z-index:2001;border:none;background:#0009;backdrop-filter:blur(8px);color:#fff;font-size:2rem;font-weight:300;cursor:pointer;padding:1rem 1.25rem;border-radius:8px;width:auto;height:auto;transition:all .2s ease}.camera-lightbox__nav--video:hover,.camera-lightbox__nav--video:focus-visible{background:#ffffffe6;color:#000;outline:2px solid rgba(255,255,255,.3);outline-offset:2px}.camera-lightbox__nav--video-prev{left:1rem}.camera-lightbox__nav--video-next{right:1rem}.camera-lightbox__video-counter{position:fixed;top:1rem;left:1rem;z-index:2001;background:#0009;backdrop-filter:blur(8px);color:#fff;padding:.5rem 1rem;border-radius:8px;font-size:.875rem;font-weight:600}.camera-lightbox__error--video{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#dc2626e6;color:#fff;padding:1.5rem 2rem;border-radius:8px;z-index:2001}.camera-lightbox__image{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}.camera-lightbox__video{max-width:100%;max-height:100%;width:100%;height:auto;display:block;border-radius:0;background:#000;opacity:1!important;filter:brightness(1) contrast(1) saturate(1)!important;-webkit-filter:brightness(1) contrast(1) saturate(1)!important;mix-blend-mode:normal!important}.camera-lightbox__video::-webkit-media-controls-enclosure{background:transparent;opacity:1!important}.camera-lightbox__video::-webkit-media-controls-panel{background:#000000bf!important;opacity:1!important;display:flex!important;mix-blend-mode:normal!important}.camera-lightbox__video::-webkit-media-controls-play-button,.camera-lightbox__video::-webkit-media-controls-current-time-display,.camera-lightbox__video::-webkit-media-controls-time-remaining-display,.camera-lightbox__video::-webkit-media-controls-timeline,.camera-lightbox__video::-webkit-media-controls-volume-slider,.camera-lightbox__video::-webkit-media-controls-mute-button,.camera-lightbox__video::-webkit-media-controls-fullscreen-button{color:#fff;opacity:1!important;display:block!important}.camera-lightbox__video::--media-controls{display:block!important}.camera-lightbox__loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000080}.camera-lightbox__spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:var(--accent-blue, #2563eb);border-radius:50%;animation:camera-lightbox-spin 1s linear infinite}@keyframes camera-lightbox-spin{to{transform:rotate(360deg)}}.camera-lightbox__error{padding:2rem;text-align:center;color:var(--accent-red, #dc2626)}.camera-lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);border:none;background:#ffffffe6;backdrop-filter:blur(10px);color:var(--text-primary);font-size:2rem;font-weight:300;cursor:pointer;padding:1rem 1.25rem;border-radius:var(--radius-md);box-shadow:0 4px 12px #0f172a33;transition:all .2s ease;z-index:10;width:3.5rem;height:3.5rem;display:flex;align-items:center;justify-content:center;line-height:1}.camera-lightbox__nav:hover,.camera-lightbox__nav:focus-visible{background:#fff;transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0f172a4d;outline:none}.camera-lightbox__nav:active{transform:translateY(-50%) scale(1.05)}.camera-lightbox__nav--prev{left:1.5rem}.camera-lightbox__nav--next{right:1.5rem}.camera-lightbox__footer{padding:1rem 1.5rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;gap:1rem}.camera-lightbox__timestamp{font-size:.875rem;color:var(--text-secondary);margin:0}.camera-lightbox__hint{font-size:.75rem;color:var(--text-tertiary);margin:0}@media(max-width:768px){.camera-lightbox__container{max-width:100%;max-height:100vh;border-radius:0;margin:0}.camera-lightbox__content{padding:1rem}.camera-lightbox__nav{width:2.5rem;height:2.5rem;font-size:1.5rem;padding:.75rem}.camera-lightbox__nav--prev{left:.5rem}.camera-lightbox__nav--next{right:.5rem}.camera-lightbox__footer{flex-direction:column;align-items:flex-start;gap:.5rem}}.dashboard-einfahrt{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease;max-width:100%;width:100%;position:relative}@media(min-width:768px){.dashboard-einfahrt{max-width:calc(100vw * 1.42857 * .7 - 3rem)}}@media(min-width:1024px){.dashboard-einfahrt{max-width:350px}}.dashboard-einfahrt__title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.dashboard-einfahrt__title--link{display:inline-block;text-decoration:none;cursor:pointer;transition:opacity .2s ease,transform .2s ease}.dashboard-einfahrt__title--link:hover{opacity:.8;transform:translate(2px)}.dashboard-einfahrt__title--link:active{opacity:.7;transform:translate(1px)}.dashboard-einfahrt__content{display:flex;flex-direction:column;gap:1rem}.dashboard-einfahrt__live-view{position:relative;width:100%;aspect-ratio:16 / 9;background:#0003;border-radius:var(--radius-lg);overflow:hidden;border:1px solid rgba(255,255,255,.1)}.dashboard-einfahrt__stream{width:100%;height:100%;object-fit:cover;display:block}.dashboard-einfahrt__gallery{display:flex;gap:.75rem;width:100%}.dashboard-einfahrt__thumbnail{position:relative;flex:1;aspect-ratio:16 / 9;border:none;background:#0003;border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;padding:0;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-einfahrt__thumbnail:hover{background:#0000004d;border-color:#fff3;box-shadow:0 4px 12px #0f172a26}.dashboard-einfahrt__thumbnail:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.dashboard-einfahrt__thumbnail-video-wrapper{position:relative;width:100%;height:100%}.dashboard-einfahrt__thumbnail-video{width:100%;height:100%;object-fit:cover;display:block}.dashboard-einfahrt__thumbnail-play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:.9;transition:opacity .2s ease,transform .2s ease}.dashboard-einfahrt__thumbnail:hover .dashboard-einfahrt__thumbnail-play-overlay{opacity:1;transform:translate(-50%,-50%) scale(1.1)}.dashboard-einfahrt__thumbnail-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 100%);padding:.5rem;display:flex;align-items:flex-end;justify-content:flex-start}.dashboard-einfahrt__thumbnail-time{color:#fffffff2;font-size:.75rem;font-weight:500;text-shadow:0 1px 2px rgba(0,0,0,.5)}.dashboard-einfahrt__gallery-loading{padding:1rem;text-align:center;color:var(--text-secondary);font-size:.875rem}.weather-hourly-chart{--weather-hourly-day-background: rgba(148, 163, 184, .07);--weather-hourly-night-background: rgba(59, 130, 246, .06);display:flex;flex-direction:column;gap:1rem;padding:1.75rem}.weather-hourly-chart__header{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;align-items:flex-end}.weather-hourly-chart__header--external{margin-bottom:.5rem}.weather-hourly-chart__eyebrow{margin:0;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);font-weight:600}.weather-hourly-chart__title{margin:.2rem 0 0;font-size:1.6rem;color:var(--text-primary)}.weather-hourly-chart__legend{display:flex;flex-wrap:wrap;gap:1.25rem;font-size:.95rem;color:var(--text-secondary)}.weather-hourly-chart__legend-item{display:inline-flex;align-items:center;gap:.45rem}.weather-hourly-chart__legend-dot{width:10px;height:10px;border-radius:999px;display:inline-flex}.weather-hourly-chart__legend-dot--temp{background:var(--pv-solar-color-strong)}.weather-hourly-chart__legend-dot--wind{background:var(--accent-blue)}.weather-hourly-chart__legend-pill{width:22px;height:8px;border-radius:8px;background:linear-gradient(90deg,var(--pv-consumption-color-strong) 0%,rgba(6,182,212,.35) 100%);display:inline-flex}.weather-hourly-chart__body{position:relative;min-height:220px}.weather-hourly-chart:not(.liquid-glass-panel) .weather-hourly-chart__body{min-height:140px}.weather-hourly-chart__empty{border-radius:var(--radius-md);border:1px dashed var(--glass-border);padding:1.25rem;text-align:center;color:var(--text-secondary)}.weather-hourly-chart__tooltip{background:#0f172aeb;color:#f8fafc;padding:.9rem 1.1rem;border-radius:var(--radius-md);box-shadow:0 18px 35px #0f172a73;font-size:.9rem;display:flex;flex-direction:column;gap:.35rem}.weather-hourly-chart__tooltip-title{font-weight:600;margin-bottom:.2rem}.weather-hourly-chart__tooltip-row{display:flex;justify-content:space-between;gap:1rem}.weather-hourly-chart__footer{display:flex;gap:1rem;flex-wrap:wrap;font-size:.9rem;color:var(--text-secondary)}.weather-hourly-chart__day-label{padding:.2rem .75rem;border-radius:999px;background:#94a3b82e}.weather-hourly-chart:not(.liquid-glass-panel){padding:.75rem .5rem;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg)}@media(min-width:1440px){.weather-hourly-chart{padding:2rem}.weather-hourly-chart:not(.liquid-glass-panel){padding:.75rem .5rem}}.dashboard-weather-card{display:flex;flex-direction:column;gap:.5rem}.dashboard-weather-card__header{display:flex}.dashboard-weather-card__title{margin:0;height:0;width:0;overflow:hidden;text-indent:-9999px}.dashboard-weather-card__status{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.dashboard-weather-card__status-text{margin:0;color:var(--text-secondary);font-size:.95rem}.dashboard-weather-card__pill{padding:.15rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;background:#3b82f626;color:#1d4ed8}.dashboard-weather-card__pill--error{background:#dc262626;color:#b91c1c}.dashboard-weather-card__chart{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg);padding:.75rem .5rem;min-height:150px;margin-top:.3rem}.dashboard-weather-card__timeline-empty{font-size:.9rem;color:var(--text-secondary)}.dashboard-weather-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;margin-top:0}.dashboard-weather-card__tooltip{padding:.5rem .75rem;background:#0f172ae6;color:#f8fafc;border-radius:var(--radius-sm);font-size:.85rem;box-shadow:0 12px 30px #0f172a40}.dashboard-weather-card__tooltip-title{font-weight:600;margin-bottom:.25rem}.dashboard-weather-card__tooltip-row{display:flex;justify-content:space-between;gap:.75rem}.dashboard-weather-card__hourly{margin-top:.5rem;width:100%}.value-card--thunderstorm{position:relative;animation:none}.value-card--thunderstorm:before{display:none}.value-card--rain-light:after,.value-card--rain-moderate:after,.value-card--rain-heavy:after,.value-card--rain-violent:after{display:none}.value-card--hail{animation:none}.value-card--storm{animation:none}.value-card--storm-with-rain{animation:none;position:relative;overflow:hidden}.value-card--storm-with-rain:after{display:none}.value-card--orkan-with-rain{animation:none;position:relative;overflow:hidden}.value-card--orkan-with-rain:after{display:none}.trash-icon{display:block}.trash-icon__recycle{animation:trashIconPulse 2s ease-in-out infinite}@keyframes trashIconPulse{0%,to{opacity:.6}50%{opacity:.9}}@media(prefers-reduced-motion:reduce){.trash-icon__recycle{animation:none}}.trash-schedule-alert-card{display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;margin-bottom:1.5rem;transition:background-color .3s ease,border-color .3s ease;max-width:100%;width:100%;position:relative;background:linear-gradient(135deg,#f9731626,#f9731614);border:2px solid rgba(249,115,22,.4)}@media(min-width:768px){.trash-schedule-alert-card{max-width:calc(100vw * 1.42857 * .7 - 3rem)}}@media(min-width:1024px){.trash-schedule-alert-card{max-width:350px}}.trash-schedule-alert-card__close-button{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:#0000000d;border:1px solid rgba(0,0,0,.1);border-radius:50%;color:#6b7280;font-size:1.5rem;font-weight:300;line-height:1;cursor:pointer;z-index:10;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;padding:0;margin:0}.trash-schedule-alert-card__close-button:hover{background:#dc26261a;border-color:#dc26264d;color:#dc2626;transform:scale(1.1)}.trash-schedule-alert-card__close-button:active{transform:scale(.95)}.trash-schedule-alert-card__close-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.trash-schedule-alert-card__title{margin:0;font-size:1.35rem;font-weight:600;letter-spacing:-.01em;text-align:center;color:#f97316e6}.trash-schedule-alert-card__title--link{display:inline-block;text-decoration:none;cursor:pointer;transition:opacity .2s ease,transform .2s ease}.trash-schedule-alert-card__title--link:hover{opacity:.8;transform:translate(2px)}.trash-schedule-alert-card__title--link:active{opacity:.7;transform:translate(1px)}.trash-schedule-alert-card__content{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.trash-schedule-alert-card__icon-wrapper{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:100%}.trash-schedule-alert-card__info{flex:1;display:flex;flex-direction:column;gap:.375rem;width:100%;align-items:center}.trash-schedule-alert-card__status{display:flex;align-items:baseline;justify-content:center;gap:.75rem;width:100%}.trash-schedule-alert-card__status-label{font-size:.95rem;font-weight:600;color:var(--text-secondary, #4b5563)}.trash-schedule-alert-card__status-value{font-size:1.1rem;font-weight:700;color:#f97316e6}.trash-schedule-alert-card__details{display:grid;grid-template-columns:1fr;gap:1rem;width:100%;max-width:400px}.trash-schedule-alert-card__detail{display:flex;flex-direction:column;gap:.25rem;align-items:center;text-align:center}.trash-schedule-alert-card__detail-label{font-size:.875rem;color:var(--text-tertiary, #6b7280);font-weight:500}.trash-schedule-alert-card__detail-value{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.trash-schedule-alert-card__error{padding:.75rem 1rem;background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:.75rem;color:#dc2626;font-size:.9rem}@media(prefers-reduced-motion:reduce){.trash-schedule-alert-card{transition:none;animation:none}.appliance-card--entering,.appliance-card--exiting{transform:none;filter:none;opacity:1}.appliance-card--hidden{display:none}}@media(min-width:768px){.trash-schedule-alert-card{padding:1.5rem}.trash-schedule-alert-card__icon-wrapper{width:140px;height:140px}.trash-schedule-alert-card__icon-wrapper svg{width:140px;height:140px}}@media(min-width:1024px){.trash-schedule-alert-card__icon-wrapper{width:120px;height:120px}.trash-schedule-alert-card__icon-wrapper svg{width:120px;height:120px}}.dashboard-page{display:flex;flex-direction:column;gap:2rem;width:100%}.dashboard-page__appliances{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:clamp(1rem,1.5vw,1.25rem);width:100%;justify-content:flex-start;justify-items:flex-start;max-width:1400px;margin:0}.dashboard-page__appliances>*{min-width:0;width:100%;margin-bottom:0;position:relative}.dashboard-page__appliances>*{transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(.4,0,.2,1),filter .35s cubic-bezier(.4,0,.2,1);will-change:opacity,transform}.appliance-card--entering{opacity:0;transform:translateY(12px) scale(.98);filter:blur(.2px);animation:applianceFadeIn .35s cubic-bezier(.4,0,.2,1) forwards}.appliance-card--exiting{opacity:0;transform:translateY(-6px) scale(.97);filter:blur(.3px);animation:applianceFadeOut .5s cubic-bezier(.4,0,.2,1) forwards}.appliance-card--visible{opacity:1;transform:translateY(0) scale(1);filter:none}.appliance-card--hidden{display:none;opacity:0;transform:translateY(0)}@keyframes applianceFadeIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes applianceFadeOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-6px) scale(.97)}}@media(prefers-reduced-motion:reduce){.dashboard-page__appliances>*{transition:none;animation:none}.appliance-card--entering,.appliance-card--exiting{transform:none;filter:none;opacity:1}.appliance-card--hidden{display:none}}@media(min-width:768px){.dashboard-page__appliances{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(1rem,1.5vw,1.25rem)}}@media(min-width:1024px){.dashboard-page__appliances{grid-template-columns:repeat(auto-fit,minmax(380px,430px));gap:clamp(1.25rem,1.5vw,1.75rem);max-width:1500px}}.dashboard-page__header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.dashboard-page__title{font-size:2rem;font-weight:700;margin:0;letter-spacing:-.02em}.dashboard-page__subtitle{font-size:1rem;margin:0;line-height:1.6}.dashboard-page__grid{display:grid;grid-template-columns:1fr;gap:1.5rem;width:100%}.dashboard-page__section{display:flex;flex-direction:column;gap:1rem;min-height:200px}.dashboard-page__section-title{font-size:1.25rem;font-weight:600;margin:0;letter-spacing:-.01em}.dashboard-page__section-title--link{display:inline-block;text-decoration:none;cursor:pointer;transition:opacity .2s ease,transform .2s ease}.dashboard-page__section-title--link:hover{opacity:.8;transform:translate(2px)}.dashboard-page__section-title--link:active{opacity:.7;transform:translate(1px)}.dashboard-page__section-content{font-size:.95rem;line-height:1.6;margin:0}@media(min-width:768px){.dashboard-page__grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.dashboard-page__section{min-height:250px}}@media(min-width:1024px){.dashboard-page__grid{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.dashboard-page__title{font-size:2.5rem}}@media(min-width:1440px){.dashboard-page{gap:2.5rem}.dashboard-page__appliances{grid-template-columns:repeat(auto-fit,minmax(400px,440px));gap:1.75rem;max-width:1600px}.dashboard-page__grid{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:2rem}.dashboard-page__section{min-height:280px}.dashboard-page__section-title{font-size:1.3rem}}@media(min-width:1920px){.dashboard-page{gap:3rem}.dashboard-page__appliances{grid-template-columns:repeat(auto-fit,minmax(420px,460px));gap:2rem;max-width:1700px}.dashboard-page__grid{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:2.25rem}.dashboard-page__section{min-height:320px}.dashboard-page__section-title{font-size:1.35rem}}.calendar-page{display:flex;flex-direction:column;gap:1.5rem}.calendar-page__header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.calendar-page__title{font-size:2rem;font-weight:700;margin:0;letter-spacing:-.02em}.calendar-page__subtitle{font-size:1rem;margin:0;line-height:1.6}.calendar-page__calendar{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;transform:none!important}.calendar-page__calendar:hover{transform:none!important}.calendar-page__calendar-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.calendar-page__calendar-header>div:nth-child(2){flex:1;display:flex;justify-content:center;align-items:center}.calendar-page__navigation{display:flex;align-items:center;gap:1rem}.calendar-page__nav-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-primary);cursor:pointer;transition:all .2s ease;padding:0}.calendar-page__nav-button:hover{background:var(--glass-bg-hover);border-color:var(--accent-blue);transform:translateY(-1px);box-shadow:var(--glass-shadow-hover)}.calendar-page__nav-button:active{transform:translateY(0)}.calendar-page__date-info{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:200px}.calendar-page__calendar-title{font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.01em}.calendar-page__week-range{font-size:.875rem;margin:0}.calendar-page__today-button{padding:.5rem 1rem;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--accent-blue),var(--accent-green));border:none;color:#fff;font-weight:500;font-size:.875rem;cursor:pointer;transition:all .2s ease}.calendar-page__today-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #2563eb4d}.calendar-page__today-button:active{transform:translateY(0)}.calendar-page__loading,.calendar-page__error{text-align:center;padding:2rem;font-size:.95rem}.calendar-page__week-view{display:flex;flex-direction:column;gap:.5rem}.calendar-page__week-header{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:.5rem;padding-right:calc(17px - .5rem)}.calendar-page__day-header{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem;border-radius:var(--radius-sm);background:#f8fafc99;border:1px solid var(--glass-border);transition:all .2s ease}.calendar-page__day-header--today{background:#2563eb1a;border-color:var(--accent-blue);box-shadow:0 2px 8px #2563eb33}.calendar-page__day-name{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.calendar-page__day-number{font-size:1.25rem;font-weight:600}.calendar-page__day-number--today{color:var(--accent-blue);font-weight:700}.calendar-page__week-grid-container{overflow-y:auto;overflow-x:hidden;height:702px;border-radius:var(--radius-sm);scroll-behavior:smooth;scrollbar-gutter:stable}.calendar-page__week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;position:relative}.calendar-page__week-day{position:relative;border-radius:var(--radius-sm);background:#f8fafc66;border:1px solid var(--glass-border);transition:all .2s ease;min-height:1872px}.calendar-page__week-day--today{background:#2563eb0d;border-color:var(--accent-blue);border-width:2px}.calendar-page__hours-grid{position:absolute;inset:0;pointer-events:none}.calendar-page__hour-marker{position:absolute;left:0;right:0;height:78px;border-top:1px solid rgba(148,163,184,.2)}.calendar-page__hour-marker--focus{background:#2563eb08;border-top-color:#94a3b84d}.calendar-page__hour-label{position:absolute;left:.5rem;top:.25rem;font-size:.7rem;font-weight:500;color:var(--text-secondary);background:var(--glass-bg);padding:.125rem .375rem;border-radius:.25rem;z-index:1}.calendar-page__hour-line{position:absolute;left:3rem;right:0;top:0;height:1px;background:#94a3b833}.calendar-page__hour-marker--focus .calendar-page__hour-line{background:#94a3b84d}.calendar-page__current-time-indicator{position:absolute;left:0;right:0;z-index:10;pointer-events:none}.calendar-page__current-time-line{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent-blue),transparent);box-shadow:0 0 4px #2563eb80}.calendar-page__current-time-label{position:absolute;left:.5rem;top:-.75rem;background:var(--accent-blue);color:#fff;font-size:.7rem;font-weight:600;padding:.25rem .5rem;border-radius:.25rem;box-shadow:0 2px 8px #2563eb66;white-space:nowrap}.calendar-page__day-events{position:absolute;inset:0;pointer-events:none}.calendar-page__event{position:absolute;left:.5rem;right:.5rem;padding:.5rem;border-radius:var(--radius-sm);background:var(--glass-bg);border:1px solid var(--glass-border);cursor:pointer;transition:all .2s ease;font-size:.875rem;pointer-events:auto;overflow:visible;z-index:5;min-height:50px;display:flex;flex-direction:column;box-sizing:border-box}.calendar-page__event[style*=width]{right:auto}.calendar-page__event--compact{padding:.375rem .5rem;min-height:50px;justify-content:center}.calendar-page__event--compact .calendar-page__event-time{margin-bottom:.125rem;font-size:.7rem}.calendar-page__event--compact .calendar-page__event-title{font-size:.8rem;margin-bottom:.125rem;line-height:1.2;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-page__event--compact .calendar-page__event-time{margin-top:0}.calendar-page__event:hover{background:var(--glass-bg-hover);border-color:var(--accent-blue);transform:translateY(-1px);box-shadow:0 4px 12px #0f172a26;z-index:6;overflow:visible;min-height:auto}.calendar-page__event:hover .calendar-page__event-title{-webkit-line-clamp:unset;white-space:normal;overflow:visible;max-height:none}.calendar-page__event--compact:hover{min-height:auto;padding:.5rem}.calendar-page__event--compact:hover .calendar-page__event-time{margin-bottom:.25rem;font-size:.75rem}.calendar-page__event--compact:hover .calendar-page__event-title{font-size:.875rem;margin-bottom:.25rem}.calendar-page__event-title{font-size:.875rem;font-weight:600;margin-bottom:.25rem;word-break:break-word;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;min-height:0}.calendar-page__event-time{font-size:.75rem;font-weight:500;white-space:nowrap;flex-shrink:0;margin-top:auto}.calendar-page__event--drag-over{background:var(--glass-bg-hover);border-color:var(--accent-blue);border-width:2px;box-shadow:0 4px 16px #2563eb4d}@media(min-width:768px){.calendar-page{gap:2rem}.calendar-page__title{font-size:2.5rem}.calendar-page__calendar{padding:2rem}.calendar-page__week-grid-container{height:702px}.calendar-page__date-info{min-width:250px}.calendar-page__calendar-title{font-size:1.75rem}.calendar-page__hour-label{font-size:.75rem}}.family-member-icons{display:flex;gap:1rem;align-items:center;justify-content:center;padding:.5rem}.family-member-icon{width:48px;height:48px;border-radius:50%;border:3px solid;background:var(--glass-bg);backdrop-filter:var(--blur-medium);display:flex;align-items:center;justify-content:center;cursor:grab;transition:all .2s ease;box-shadow:var(--glass-shadow);user-select:none;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none}.family-member-icon:active{cursor:grabbing}.family-member-icon:hover{transform:scale(1.1);box-shadow:0 4px 12px #0f172a33}.family-member-icon--touch-dragging{opacity:.7;transform:scale(1.05);z-index:1000;position:relative}.family-member-icon__placeholder{font-size:.875rem;font-weight:600;color:var(--text-primary)}.family-member-icon__image{width:100%;height:100%;object-fit:cover;border-radius:50%}.family-member-trash{width:48px;height:48px;border-radius:50%;background:var(--glass-bg);backdrop-filter:var(--blur-medium);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:var(--glass-shadow);user-select:none;margin-left:1rem;min-width:88px;min-height:88px;margin:-20px}.family-member-trash--active{width:72px;height:72px;transform:scale(1.2)}.family-member-trash__underlay{position:absolute;inset:-8px;border-radius:50%;background:#dc26264d;animation:pulse 1.5s ease-in-out infinite;z-index:-1;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.family-member-trash--active .family-member-trash__underlay{inset:-20px;background:#dc262680;animation:pulseActive 1s ease-in-out infinite}@keyframes pulseActive{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}@keyframes pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.5;transform:scale(1.1)}}.family-member-trash__icon{color:#dc2626;width:24px;height:24px;z-index:1}.family-member-trash:hover{transform:scale(1.1);box-shadow:0 4px 12px #dc26264d}@media(min-width:768px){.family-member-icon{width:56px;height:56px}.family-member-icon__placeholder{font-size:1rem}.family-member-icon__image{width:100%;height:100%}.family-member-trash{width:56px;height:56px}.family-member-trash--active{width:84px;height:84px}.family-member-trash__icon{width:28px;height:28px}.family-member-trash--active .family-member-trash__icon{width:36px;height:36px}}.event-assignment-icons{position:absolute;bottom:-24px;left:0;right:0;display:flex;gap:-10%;align-items:center;justify-content:flex-start;padding:0 .5rem;z-index:10;pointer-events:none}.event-assignment-icon{width:32px;height:32px;border-radius:50%;border:2px solid;background:var(--glass-bg);backdrop-filter:var(--blur-medium);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;box-shadow:var(--glass-shadow);pointer-events:auto;flex-shrink:0;animation:fadeInScale .3s ease;margin-left:-5%;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.event-assignment-icon:first-child{margin-left:0}@keyframes fadeInScale{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.event-assignment-icon:hover{transform:scale(1.15);box-shadow:0 4px 12px #0f172a40}.event-assignment-icon--dragging{opacity:.6;transform:scale(.95);cursor:grabbing;z-index:100}.event-assignment-icon--snap-back{animation:snapBack .3s cubic-bezier(.34,1.56,.64,1)}@keyframes snapBack{0%{transform:scale(.95);opacity:.6}to{transform:scale(1);opacity:1}}.event-assignment-icon__placeholder{font-size:.75rem;font-weight:600;color:var(--text-primary)}.event-assignment-icon__image{width:100%;height:100%;object-fit:cover;border-radius:50%}@media(min-width:768px){.event-assignment-icon{width:36px;height:36px}.event-assignment-icon__placeholder{font-size:.875rem}.event-assignment-icon__image{width:100%;height:100%}.event-assignment-icons{bottom:-28px}}.todo-page{display:flex;flex-direction:column;gap:2rem}.todo-page__header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.todo-page__title{font-size:2rem;font-weight:700;margin:0;letter-spacing:-.02em}.todo-page__subtitle{font-size:1rem;margin:0;line-height:1.6}.todo-page__container{display:flex;flex-direction:column;gap:1.5rem}.todo-page__tasks{display:flex;flex-direction:column;gap:1.5rem;flex:2;min-height:400px}.todo-page__tasks-header{display:flex;justify-content:space-between;align-items:center}.todo-page__tasks-title{font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.01em}.todo-page__tasks-list{display:flex;flex-direction:column;gap:1rem}.todo-page__task-empty{text-align:center;padding:3rem 2rem;display:flex;flex-direction:column;gap:.5rem}.todo-page__task-empty p{margin:0;font-size:.95rem;line-height:1.6}.todo-page__stats{display:flex;flex-direction:column;gap:1.5rem;flex:1}.todo-page__stats-title{font-size:1.25rem;font-weight:600;margin:0;letter-spacing:-.01em}.todo-page__stats-list{display:flex;flex-direction:column;gap:1.25rem}.todo-page__stat{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-radius:.75rem;background:#f8fafce6;border:1px solid rgba(148,163,184,.3);transition:all .2s ease}.todo-page__stat:hover{background:#fffffff2;border-color:#2563eb66;transform:translate(4px)}.todo-page__stat-label{font-size:.95rem;font-weight:500}.todo-page__stat-value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.todo-page__test-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid rgba(148,163,184,.3)}.todo-page__test-button{width:100%;padding:.875rem 1.25rem;font-size:.9375rem;font-weight:600;background:#ffffffd9;backdrop-filter:blur(15px) saturate(180%);border:1px solid rgba(148,163,184,.4);border-radius:.75rem;cursor:pointer;transition:all .2s ease;color:inherit}.todo-page__test-button:hover:not(:disabled){background:#fffffff2;border-color:#2563eb99;box-shadow:0 4px 12px #0f172a26;transform:translateY(-1px)}.todo-page__test-button:active:not(:disabled){transform:translateY(0)}.todo-page__test-button:disabled{opacity:.6;cursor:not-allowed}.todo-page__debug-panel{margin-top:2rem;display:flex;flex-direction:column;gap:1rem;padding-top:1.5rem;border-top:1px solid rgba(148,163,184,.3)}.todo-page__debug-header{display:flex;flex-direction:column;gap:.25rem}.todo-page__debug-title{margin:0;font-size:1.25rem;font-weight:600}.todo-page__debug-subtitle{margin:0;font-size:.9rem}.todo-page__debug-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.todo-page__debug-theme{margin-top:.25rem;padding:1rem;border-radius:.75rem;background:var(--glass-bg);border:1px dashed var(--glass-border);display:flex;flex-direction:column;gap:.75rem}.todo-page__debug-theme-text{font-size:.9rem;display:flex;flex-direction:column;gap:.15rem}.todo-page__debug-theme-current{font-weight:600}.todo-page__debug-theme-actions{display:flex;flex-wrap:wrap;gap:.75rem}.todo-page__debug-button{padding:.75rem 1rem;font-size:.9rem;font-weight:600;background:#ffffffe6;border:1px solid rgba(148,163,184,.4);border-radius:.75rem;cursor:pointer;transition:all .2s ease}.todo-page__debug-button:hover:not(:disabled){background:#fffffff2;border-color:#2563eb99;box-shadow:0 4px 12px #0f172a1f}.todo-page__debug-button:disabled{opacity:.6;cursor:not-allowed}.todo-page__debug-inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.todo-page__debug-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem}.todo-page__debug-field input{padding:.65rem .75rem;border-radius:.75rem;border:1px solid rgba(148,163,184,.5);background:#ffffffe6;font-size:.95rem}.todo-page__debug-label{font-weight:600}.todo-page__debug-status{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.todo-page__debug-status-card{display:flex;flex-direction:column;gap:.5rem;padding:1rem;border-radius:.75rem;background:#f8fafce6;border:1px solid rgba(148,163,184,.3)}.todo-page__debug-status-header{display:flex;justify-content:space-between;align-items:center}.todo-page__debug-status-header h4{margin:0;font-size:1rem;font-weight:600}.todo-page__debug-status-card pre{margin:0;max-height:220px;overflow:auto;background:#0f172ad9;color:#f8fafc;padding:.75rem;border-radius:.75rem;font-size:.75rem;line-height:1.35}.todo-page__debug-refresh{background:transparent;border:1px solid rgba(37,99,235,.6);border-radius:999px;padding:.35rem .75rem;font-size:.75rem;font-weight:600;color:#2563ebe6;cursor:pointer;transition:all .2s ease}.todo-page__debug-refresh:hover:not(:disabled){background:#2563eb14}.todo-page__debug-refresh:disabled{opacity:.6;cursor:not-allowed}@media(min-width:768px){.todo-page__container{flex-direction:row;align-items:flex-start}.todo-page__stats{min-width:300px}.todo-page__title{font-size:2.5rem}}.einkaufen-page{display:flex;flex-direction:column;gap:2rem}.einkaufen-page__header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.einkaufen-page__title{font-size:2rem;font-weight:700;margin:0;letter-spacing:-.02em}.einkaufen-page__subtitle{font-size:1rem;margin:0;line-height:1.6}.einkaufen-page__container{display:flex;flex-direction:column;gap:1.5rem}.einkaufen-page__list{display:flex;flex-direction:column;gap:1.5rem;flex:2;min-height:400px;transition:none}.einkaufen-page__list:hover{transform:none}.einkaufen-page__list-header{display:flex;justify-content:space-between;align-items:center}.einkaufen-page__list-title{font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.01em}.einkaufen-page__list-items{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;list-style:none;padding:0;margin:0}.einkaufen-page__list-loading,.einkaufen-page__list-error{text-align:center;padding:3rem 2rem;display:flex;flex-direction:column;gap:.5rem}.einkaufen-page__list-loading p,.einkaufen-page__list-error p{margin:0;font-size:.95rem;line-height:1.6}.einkaufen-page__list-item{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 1rem;border-radius:var(--radius-md);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .2s ease;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.einkaufen-page__list-item:hover{background:var(--glass-bg-hover);border-color:var(--accent-blue);box-shadow:0 4px 12px #0f172a26;transform:translateY(-2px)}.einkaufen-page__list-item:active{transform:translateY(0);box-shadow:var(--glass-shadow)}.einkaufen-page__list-item--processing{opacity:.6;pointer-events:none;animation:pulse .6s ease-in-out}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(.98)}}.einkaufen-page__list-item--glow-add{animation:glow-green 1.5s ease-out}.einkaufen-page__list-item--glow-remove{animation:glow-red 1.5s ease-out}@keyframes glow-green{0%{box-shadow:0 0 #10b98100;border-color:var(--glass-border)}50%{box-shadow:0 0 20px 8px #10b98199;border-color:#10b981cc;background:#10b9811a}to{box-shadow:0 0 #10b98100;border-color:var(--glass-border)}}@keyframes glow-red{0%{box-shadow:0 0 #dc262600;border-color:var(--glass-border);opacity:1;transform:scale(1)}30%{box-shadow:0 0 20px 8px #dc262699;border-color:#dc2626cc;background:#dc26261a}70%{opacity:.5;transform:scale(.95)}to{opacity:0;transform:scale(.9);box-shadow:0 0 #dc262600}}.einkaufen-page__item-content{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}.einkaufen-page__item-action{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:var(--glass-bg-hover);border:1px solid var(--glass-border);flex-shrink:0;transition:all .2s ease}.einkaufen-page__list-item:hover .einkaufen-page__item-action{background:var(--accent-blue);border-color:var(--accent-blue);transform:scale(1.1)}.einkaufen-page__item-action-icon{font-size:1.25rem;font-weight:600;line-height:1;color:var(--text-primary);transition:color .2s ease}.einkaufen-page__list-item:hover .einkaufen-page__item-action-icon{color:#fff}.einkaufen-page__item-name{font-size:.9375rem;font-weight:600;line-height:1.4;margin:0;letter-spacing:-.01em}.einkaufen-page__item-note{font-size:.8125rem;line-height:1.3;margin:0;opacity:.7}.einkaufen-page__list-empty{text-align:center;padding:3rem 2rem;display:flex;flex-direction:column;gap:.5rem}.einkaufen-page__list-empty p{margin:0;font-size:.95rem;line-height:1.6}.einkaufen-page__add-section{display:flex;flex-direction:column;gap:1.5rem;flex:2;min-height:200px;transition:none}.einkaufen-page__add-section:hover{transform:none}.einkaufen-page__add-section--collapsed{min-height:auto;gap:0}.einkaufen-page__add-section--collapsed .einkaufen-page__add-content{display:none}.einkaufen-page__add-header-wrapper{display:flex;justify-content:space-between;align-items:center}.einkaufen-page__add-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0;background:transparent;border:none;cursor:pointer;transition:opacity .2s ease}.einkaufen-page__add-header:hover{opacity:.8}.einkaufen-page__add-title{font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.01em}.einkaufen-page__add-toggle{font-size:.875rem;opacity:.7;transition:transform .3s ease}.einkaufen-page__add-content{display:flex;flex-direction:column;gap:1.5rem;padding-top:.5rem}.einkaufen-page__recent-section{display:flex;flex-direction:column;gap:.75rem}.einkaufen-page__recent-title{font-size:.9375rem;font-weight:600;margin:0;opacity:.8}.einkaufen-page__recent-items{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;list-style:none;padding:0;margin:0}.einkaufen-page__input-form{display:flex;flex-direction:column;gap:.75rem}.einkaufen-page__input-wrapper{position:relative}.einkaufen-page__input{width:100%;padding:.875rem 1rem;border-radius:var(--radius-md);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);font-size:.9375rem;color:var(--text-primary);transition:all .2s ease}.einkaufen-page__input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 3px #2563eb1a}.einkaufen-page__input::placeholder{color:var(--text-secondary);opacity:.6}.einkaufen-page__suggestions{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--glass-shadow);z-index:10;max-height:300px;overflow-y:auto}.einkaufen-page__suggestions-list{list-style:none;padding:.25rem;margin:0}.einkaufen-page__suggestion-item{padding:.75rem 1rem;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s ease}.einkaufen-page__suggestion-item:hover{background:var(--glass-bg-hover)}.einkaufen-page__submit-button{padding:.875rem 1.5rem;border-radius:var(--radius-md);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);font-size:.9375rem;font-weight:600;color:var(--text-primary);cursor:pointer;transition:all .2s ease;align-self:flex-start}.einkaufen-page__submit-button:hover{background:var(--glass-bg-hover);border-color:var(--accent-blue);transform:translateY(-1px)}.einkaufen-page__submit-button:active{transform:translateY(0)}@media(min-width:768px){.einkaufen-page__list-items{grid-template-columns:repeat(3,1fr);gap:1rem}.einkaufen-page__list-item{padding:1rem 1.25rem}.einkaufen-page__item-name{font-size:1rem}.einkaufen-page__item-note{font-size:.875rem}.einkaufen-page__recent-items{grid-template-columns:repeat(3,1fr);gap:1rem}.einkaufen-page__input-form{flex-direction:row;align-items:flex-start}.einkaufen-page__input-wrapper{flex:1}}.pv-financial{gap:1.5rem}.pv-financial__header{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.pv-financial__eyebrow{margin:0;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase}.pv-financial__title{margin:.15rem 0 0;font-size:1.3rem;font-weight:600}.pv-financial__note{margin:0;max-width:320px;font-size:.85rem}.pv-financial__table{width:100%;display:flex;flex-direction:column;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);overflow:hidden}.pv-financial__row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;padding:1rem 1.25rem;background:var(--glass-bg);border-bottom:1px solid var(--glass-border)}.pv-financial__row:nth-child(2n){background:var(--glass-bg-hover)}.pv-financial__row:last-child{border-bottom:none}.pv-financial__row--head{background:var(--glass-bg-hover);border-bottom:1px solid var(--glass-border-hover, var(--glass-border));font-size:.9rem;font-weight:600;color:var(--text-secondary)}.pv-financial__cell{display:flex;flex-direction:column;gap:.2rem}.pv-financial__cell--label{gap:.35rem}.pv-financial__cell--net{text-align:right;align-items:flex-end;justify-content:center}.pv-financial__label{font-weight:600;color:var(--text-primary)}.pv-financial__sub-label{font-size:.82rem;color:var(--text-secondary)}.pv-financial__value{font-weight:600;color:var(--text-primary)}.pv-financial__value--savings{color:var(--accent-green)}.pv-financial__meta{font-size:.82rem;color:var(--text-secondary)}.pv-financial__net--positive .pv-financial__value{color:var(--accent-green)}.pv-financial__net--negative .pv-financial__value{color:#dc2626}.pv-financial__net--neutral .pv-financial__value{color:var(--text-secondary)}.pv-financial__evcc-note{font-size:.75rem;font-weight:400;color:var(--text-secondary);display:block;margin-top:.15rem}.pv-page{display:flex;flex-direction:column;gap:1.5rem;padding:1rem}.pv-page__card{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.pv-page__card-meta{display:flex;justify-content:flex-end}.pv-page__timestamp{font-size:.9rem}.pv-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem}.pv-status-card{padding:1.25rem 1.5rem;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.2);position:relative;overflow:hidden}.pv-status-card:after{content:"";position:absolute;inset:0;opacity:.4;pointer-events:none;background:radial-gradient(circle at top right,rgba(255,255,255,.6),transparent 55%)}.pv-status-card__helper{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.pv-status-card__value{margin:.35rem 0 0;font-size:2rem;font-weight:700;transition:color .3s ease}.pv-status-card__label{margin:.15rem 0 0;font-size:.95rem;color:var(--text-secondary)}.pv-battery-bar{margin-top:1.5rem;display:flex;flex-direction:column;gap:.5rem}.pv-battery-bar__label-row{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--text-secondary)}.pv-battery-bar__track{position:relative;width:100%;height:44px;border-radius:var(--radius-lg);background:#94a3b833;border:1px solid rgba(148,163,184,.35);overflow:hidden;box-shadow:inset 0 1px 2px #0f172a14}.pv-battery-bar__fill{position:absolute;inset:0;width:0;border-radius:inherit;transition:width .4s ease,background .3s ease,opacity .3s ease;opacity:.95}.pv-battery-bar__label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:600;color:#0f172a;text-align:center;pointer-events:none}.pv-battery-bar--charging .pv-battery-bar__fill{background:linear-gradient(90deg,#10b981e6,#3b82f6e6)}.pv-battery-bar--discharging .pv-battery-bar__fill{background:linear-gradient(90deg,#f87171f2,#ef4444e6)}.pv-battery-bar--idle .pv-battery-bar__fill{background:#94a3b859}.pv-battery-bar--idle .pv-battery-bar__track{background:#e2e8f099;border-color:#94a3b84d}.pv-battery-bar--idle .pv-battery-bar__label{display:none}.pv-status-graph{margin-top:1.5rem;display:flex;flex-direction:column;gap:.75rem}.pv-status-graph__header{display:flex;justify-content:space-between;align-items:center}.pv-status-graph__title{margin:0;font-size:1rem}.pv-status-graph__legend{display:flex;gap:.75rem;flex-wrap:wrap;font-size:.85rem;color:var(--text-secondary);align-items:center}.pv-status-graph__legend-item{display:inline-flex;align-items:center;gap:.45rem;padding:.25rem .85rem;border-radius:999px;border:1px solid var(--glass-border);background:#ffffffb3;font-weight:600;letter-spacing:.01em;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease;box-shadow:0 8px 16px #0f172a14}[data-theme=dark] .pv-status-graph__legend-item{background:#0f172abf;border-color:#60a5fa66;box-shadow:0 8px 22px #02061759}.pv-status-graph__legend-item:before{content:"";width:1.1rem;height:.35rem;border-radius:999px;border:1px solid transparent;box-shadow:0 0 6px #0f172a1f}.pv-status-graph__legend-item--solar:before{background:linear-gradient(135deg,var(--pv-solar-color-strong),var(--pv-solar-color-soft));border-color:#facc15a6;box-shadow:0 0 12px var(--pv-solar-color-soft)}.pv-status-graph__legend-item--consumption:before{background:linear-gradient(135deg,var(--pv-consumption-color-strong),var(--pv-consumption-color-soft));border-color:#06b6d499;box-shadow:0 0 12px var(--pv-consumption-color-soft)}.pv-status-graph__legend-item--battery:before{background:linear-gradient(135deg,var(--pv-battery-color-strong),var(--pv-battery-color-soft));border-color:var(--pv-battery-color-strong);box-shadow:0 0 12px var(--pv-battery-color-soft)}.pv-day-overview{gap:1.5rem}.pv-day-overview__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.pv-day-overview__eyebrow{margin:0;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase}.pv-day-overview__title{margin:.15rem 0 0;font-size:1.4rem;font-weight:600}.pv-day-overview__timestamp{font-size:.9rem}.pv-day-overview__kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.pv-day-overview__kpi{padding:1rem;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;gap:.2rem}.pv-day-overview__kpi-label{font-size:.85rem;color:var(--text-secondary)}.pv-day-overview__kpi-value{font-size:1.2rem;font-weight:600;color:var(--text-primary)}.pv-day-overview__kpi-trend{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:500}.pv-day-overview__kpi-trend-arrow{font-size:.75rem}.pv-day-overview__kpi-trend-value{font-variant-numeric:tabular-nums}.pv-day-overview__kpi-trend-label{color:var(--text-secondary);font-size:.78rem}.pv-day-overview__kpi-trend--positive{color:var(--accent-green)}.pv-day-overview__kpi-trend--negative{color:#dc2626}.pv-day-overview__kpi-trend--neutral{color:var(--text-secondary)}.pv-day-overview__graph{display:flex;flex-direction:column;gap:.75rem}.pv-day-overview__graph-header{display:flex;justify-content:space-between;align-items:baseline}.pv-day-overview__graph-title{margin:0;font-size:1.1rem}.pv-day-overview__graph-subtitle{margin:.15rem 0 0;font-size:.9rem}.pv-day-overview__graph-empty{padding:1.5rem;border-radius:var(--radius-md);border:1px dashed rgba(148,163,184,.6);text-align:center}.garage-door-section{padding:1.75rem;display:flex;flex-direction:column;gap:1.5rem}.garage-door-loading{text-align:center;color:var(--text-secondary);padding:2rem}.garage-door-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem}.garage-door-eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;margin:0;color:var(--text-secondary)}.garage-door-title{margin:.25rem 0 0;font-size:clamp(1.4rem,2vw,1.8rem);color:var(--text-primary)}.garage-door-status-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:999px;background:#fffc;border:1px solid rgba(148,163,184,.4);font-size:.9rem;font-weight:600;color:var(--text-primary)}.garage-door-status-indicator{width:.75rem;height:.75rem;border-radius:999px;background:#64748b;box-shadow:0 0 8px #64748b80;transition:background .3s ease,box-shadow .3s ease}.garage-door-status-indicator--open{background:#10b981;box-shadow:0 0 10px #10b981a6}.garage-door-status-indicator--closed{background:#64748b;box-shadow:0 0 8px #64748b80}.garage-door-visualization{position:relative;width:100%;max-width:50%;height:300px;margin:0 auto;background:linear-gradient(180deg,#1e293b99,#0f172acc);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;border:1px solid rgba(255,255,255,.1);transition:transform .2s ease,box-shadow .2s ease}.garage-door-visualization:hover{transform:translateY(-2px);box-shadow:0 20px 40px #0000004d}.garage-door-visualization:active{transform:translateY(0)}.garage-door-container{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;transform-origin:top center;transition:transform 15s cubic-bezier(.4,0,.2,1);z-index:2}.garage-door-container--open{transform:translateY(-100%)}.garage-door-segment{flex:1;background:linear-gradient(180deg,#fff,#f8fafc,#f1f5f9);border-bottom:2px solid rgba(0,0,0,.1);border-top:1px solid rgba(255,255,255,.3);position:relative;transform-origin:top center;transition:transform 15s cubic-bezier(.4,0,.2,1)}.garage-door-segment--1{background:linear-gradient(180deg,#fff 0% 50%,#f8fafc)}.garage-door-segment--2{background:linear-gradient(180deg,#fff,#f8fafc,#f1f5f9)}.garage-door-segment--3{background:linear-gradient(180deg,#f8fafc,#f1f5f9,#e2e8f0)}.garage-door-segment--4{background:linear-gradient(180deg,#f1f5f9,#e2e8f0,#cbd5e1)}.garage-door-segment--5{background:linear-gradient(180deg,#e2e8f0,#cbd5e1,#94a3b8)}.garage-door-segment--6{background:linear-gradient(180deg,#cbd5e1,#94a3b8,#64748b)}.garage-door-container--opening .garage-door-segment{transform:rotateX(-90deg)}.garage-door-container--closing .garage-door-segment{transform:rotateX(0)}.garage-interior{position:absolute;bottom:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,#0f172a66,#1e293b99,#334155cc);display:flex;align-items:center;justify-content:center;opacity:1;pointer-events:auto;z-index:1}.tesla-model-y{width:70%;max-width:280px;height:auto;object-fit:contain;filter:drop-shadow(0 10px 20px rgba(0,0,0,.5));opacity:0;transition:opacity 5s ease}.tesla-model-y--visible{opacity:1}.garage-door-overlay{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:#0009;backdrop-filter:blur(8px);padding:.5rem 1rem;border-radius:999px;opacity:0;transition:opacity .3s ease;pointer-events:none}.garage-door-visualization:hover .garage-door-overlay{opacity:1}.garage-door-hint{color:#ffffffe6;font-size:.85rem;font-weight:500;white-space:nowrap}.evcc-costs{display:flex;flex-direction:column;gap:1.5rem}.evcc-costs__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.evcc-costs__eyebrow{margin:0;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase}.evcc-costs__title{margin:.15rem 0 0;font-size:1.3rem;font-weight:600}.evcc-costs__loading,.evcc-costs__error{padding:1.5rem;text-align:center;color:var(--text-secondary)}.evcc-costs__error{background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:var(--radius-lg);color:#dc2626}.evcc-costs__periods{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.evcc-costs__period-card{padding:1.25rem;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);text-align:center}.evcc-costs__period-label{margin:0 0 .5rem;font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.evcc-costs__period-value{margin:0 0 .25rem;font-size:1.5rem;font-weight:600;color:var(--text-primary)}.evcc-costs__period-energy{margin:0;font-size:.85rem;color:var(--text-secondary)}.evcc-costs__period-autarkie{color:var(--text-secondary);opacity:.8}.evcc-costs__date-range{padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg)}.evcc-costs__date-form{display:flex;flex-direction:column;gap:.75rem}.evcc-costs__date-inputs{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.evcc-costs__date-inputs label{display:flex;flex-direction:column;gap:.35rem;flex:1;min-width:150px}.evcc-costs__date-inputs label span{font-size:.85rem;color:var(--text-secondary);font-weight:500}.evcc-costs__date-inputs input[type=date]{padding:.5rem .75rem;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);color:var(--text-primary);font-size:.95rem}.evcc-costs__date-inputs button{padding:.5rem 1.25rem;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);color:var(--text-primary);font-weight:500;cursor:pointer;transition:all .2s ease}.evcc-costs__date-inputs button:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.evcc-costs__date-inputs button:disabled{opacity:.5;cursor:not-allowed}.evcc-costs__range-details{padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg)}.evcc-costs__range-title{margin:0 0 .75rem;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.evcc-costs__daily-summary{margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--glass-border)}.evcc-costs__daily-summary p{margin:0;font-size:.95rem;color:var(--text-primary)}.evcc-costs__sessions{display:flex;flex-direction:column;gap:1rem}.evcc-costs__sessions-title{margin:0;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.evcc-costs__sessions-empty,.evcc-costs__range-empty{padding:1.5rem;text-align:center;color:var(--text-secondary);font-style:italic}.evcc-costs__range-sessions{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--glass-border)}.evcc-costs__range-sessions-title{margin:0;font-size:.9rem;color:var(--text-secondary)}.evcc-costs__sessions-list{display:flex;flex-direction:column;gap:.75rem}.evcc-costs__session-card{padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.evcc-costs__session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--glass-border)}.evcc-costs__session-date{font-weight:600;color:var(--text-primary);font-size:.95rem}.evcc-costs__session-vehicle{font-size:.85rem;color:var(--text-secondary);padding:.25rem .5rem;background:var(--glass-bg-hover);border-radius:var(--radius-sm)}.evcc-costs__session-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem}.evcc-costs__session-details>div{display:flex;flex-direction:column;gap:.25rem}.evcc-costs__session-label{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.evcc-costs__session-details strong{font-size:1rem;font-weight:600;color:var(--text-primary)}.evcc-costs__session-details span:not(.evcc-costs__session-label){font-size:.9rem;color:var(--text-secondary)}.evcc-page{display:flex;flex-direction:column;gap:1.5rem;padding-bottom:4rem}.evcc-primary{padding:1.75rem;display:flex;flex-direction:column;gap:1.5rem}.evcc-primary--collapsed{gap:.75rem}.evcc-primary__header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;align-items:flex-start}.evcc-primary__eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;margin:0;color:var(--text-secondary)}.evcc-primary__title{margin:0;font-size:clamp(1.8rem,2.6vw,2.4rem);color:var(--text-primary)}.evcc-primary__subtitle{color:var(--text-secondary);font-size:.9rem}.evcc-primary__status-text{margin:0;color:var(--text-secondary);font-size:.85rem}.evcc-primary__update{font-size:.95rem;color:var(--text-secondary);display:flex;align-items:center;gap:.35rem}.evcc-primary__update strong{font-size:.95rem;color:var(--text-primary)}.evcc-primary__body{display:flex;flex-direction:column;gap:1.25rem}.evcc-primary__power{display:flex;flex-direction:column;gap:1rem}.evcc-power-block span{font-size:.85rem;color:var(--text-secondary)}.evcc-power-block strong{font-size:2.3rem;color:var(--text-primary)}.evcc-power-block small{color:var(--text-secondary)}.evcc-mode-selector{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.evcc-mode-pill{border:none;border-radius:.95rem;padding:.55rem .5rem;font-weight:600;text-align:center;text-transform:uppercase;letter-spacing:.05em;font-size:.9rem;color:#0f172a;cursor:pointer;opacity:.85;transition:transform .15s ease,opacity .15s ease;display:flex;align-items:center;justify-content:center;gap:.4rem}.evcc-mode-pill--gray{background:linear-gradient(135deg,#e2e8f0,#cbd5f5)}.evcc-mode-pill--yellow{background:linear-gradient(135deg,#fef3c7,#fde68a)}.evcc-mode-pill--amber{background:linear-gradient(135deg,#fcd34d,#f59e0b)}.evcc-mode-pill--orange{background:linear-gradient(135deg,#f97316,#fb923c)}.evcc-mode-pill--active{opacity:1;transform:translateY(-2px);box-shadow:0 15px 30px #0f172a40}.evcc-mode-pill:disabled{opacity:.5;cursor:not-allowed}.evcc-mode-pill__label{color:inherit}.evcc-mode-pill__indicator{width:.55rem;height:.55rem;border-radius:999px;background:#94a3b866;box-shadow:0 0 6px #94a3b84d;transition:background .2s ease,box-shadow .2s ease}.evcc-mode-pill__indicator--active{background:var(--accent-green);box-shadow:0 0 10px #10b98199}.evcc-battery{display:flex;flex-direction:column;gap:.5rem}.evcc-primary__battery{width:100%}.evcc-battery__head{display:flex;justify-content:space-between;color:var(--text-secondary);font-size:.85rem}.evcc-battery__bar{width:100%;height:28px;border-radius:999px;background:#94a3b840;overflow:hidden;position:relative}.evcc-battery__fill{height:100%;border-radius:999px;transition:width .5s ease}.evcc-primary__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;border-top:1px solid rgba(148,163,184,.25);padding-top:1.25rem}.evcc-primary__stats span{display:block;color:var(--text-secondary);font-size:.8rem}.evcc-primary__stats strong{font-size:1.1rem;color:var(--text-primary)}.evcc-control{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.evcc-control__group{display:flex;flex-direction:column;gap:.5rem}.evcc-control__group-header h3{margin:0;font-size:1.05rem}.evcc-control__group-header p,.evcc-control__hint{margin:0;color:var(--text-secondary);font-size:.9rem}.evcc-control__segmented{display:flex;flex-wrap:wrap;gap:.5rem}.evcc-control__option{flex:1 1 140px;border-radius:999px;padding:.6rem 1rem;border:1px solid rgba(148,163,184,.4);background:#fff9;cursor:pointer;transition:all .2s ease}.evcc-control__option--active{border-color:var(--accent-blue);background:#2563eb1a;color:var(--accent-blue);box-shadow:0 10px 30px #2563eb33}.evcc-control__option:disabled{opacity:.6;cursor:not-allowed}.evcc-control__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.evcc-control__field{display:flex;flex-direction:column;gap:.5rem}.evcc-control__field label{font-size:.9rem;color:var(--text-secondary)}.evcc-control__field input[type=range]{width:100%}.evcc-control__field-footer{display:flex;align-items:center;justify-content:space-between;font-weight:600}.evcc-control__field-footer button,.evcc-control__number-field button{border:none;border-radius:999px;padding:.45rem 1.25rem;background:linear-gradient(135deg,#2563eb,#10b981);color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease}.evcc-control__field-footer button:disabled,.evcc-control__number-field button:disabled{opacity:.5;cursor:not-allowed}.evcc-control__field-footer button:not(:disabled):hover,.evcc-control__number-field button:not(:disabled):hover{transform:translateY(-1px)}.evcc-control__number-field{display:flex;gap:.5rem;align-items:center}.evcc-control__number-field input{width:100%;padding:.5rem .75rem;border-radius:.75rem;border:1px solid rgba(148,163,184,.5);background:#fffc}.evcc-placeholder{padding:2rem;text-align:center;font-size:1rem}.evcc-empty{padding:2.5rem;display:flex;flex-direction:column;gap:1rem;text-align:center}.evcc-empty__title{margin:0;font-size:1.5rem;color:var(--text-primary)}.evcc-empty__subtitle{margin:0;color:var(--text-secondary);font-size:1rem}.evcc-empty__actions button{border:none;border-radius:999px;padding:.6rem 1.6rem;background:linear-gradient(135deg,#2563eb,#10b981);color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease}.evcc-empty__actions button:disabled{opacity:.6;cursor:not-allowed}.evcc-empty__actions button:not(:disabled):hover{transform:translateY(-1px)}.tesla-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}.tesla-stat-card{padding:1.5rem;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.2);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:.75rem}.tesla-stat-card:after{content:"";position:absolute;inset:0;opacity:.4;pointer-events:none;background:radial-gradient(circle at top right,rgba(255,255,255,.6),transparent 55%)}.tesla-stat-card--range{background:linear-gradient(135deg,#0ea5e940,#3b82f626);box-shadow:0 20px 40px #0ea5e926}.tesla-stat-card--locked{background:linear-gradient(135deg,#f8fafc66,#0ea5e914);box-shadow:0 20px 40px #0f172a14}.tesla-stat-card--locked-active{background:linear-gradient(135deg,#10b98140,#22c55e26);box-shadow:0 20px 40px #10b98126}.tesla-stat-card--locked-inactive{background:linear-gradient(135deg,#f9731640,#fb923c26);box-shadow:0 20px 40px #f9731626}.tesla-stat-helper{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.tesla-stat-value{margin:0;font-size:2rem;color:var(--text-primary);font-weight:700}.tesla-stat-label{margin:0;font-size:.95rem;color:var(--text-secondary)}.tesla-battery-bar{width:100%;height:28px;border-radius:999px;background:#94a3b840;overflow:hidden;position:relative;margin:.25rem 0}.tesla-battery-fill{height:100%;border-radius:999px;transition:width .5s ease,background .3s ease}.tesla-climate-section{padding:1.75rem;display:flex;flex-direction:column;gap:1.5rem}.tesla-climate-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem}.tesla-climate-eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;margin:0;color:var(--text-secondary)}.tesla-climate-title{margin:.25rem 0 0;font-size:clamp(1.4rem,2vw,1.8rem);color:var(--text-primary)}.tesla-climate-status-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:999px;background:#fffc;border:1px solid rgba(148,163,184,.4);font-size:.9rem;font-weight:600;color:var(--text-primary)}.tesla-climate-status-indicator{width:.75rem;height:.75rem;border-radius:999px;background:#64748b;box-shadow:0 0 8px #64748b80}.tesla-climate-status-indicator--on{background:#10b981;box-shadow:0 0 10px #10b981a6;animation:tesla-pulse 2s ease-in-out infinite}.tesla-climate-status-indicator--off{background:#64748b;box-shadow:0 0 8px #64748b80}@keyframes tesla-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.95)}}.tesla-climate-temps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem}.tesla-temp-card{padding:1.5rem;border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.2);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:.75rem}.tesla-temp-card:after{content:"";position:absolute;inset:0;opacity:.4;pointer-events:none;background:radial-gradient(circle at top right,rgba(255,255,255,.6),transparent 55%)}.tesla-temp-helper{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.tesla-temp-value{margin:0;font-size:2rem;color:var(--text-primary);font-weight:700}.tesla-temp-label{margin:0;font-size:.95rem;color:var(--text-secondary)}.tesla-climate-control{display:flex;justify-content:center;padding-top:1rem;border-top:1px solid rgba(148,163,184,.25)}.tesla-climate-toggle{border:none;border-radius:999px;padding:.75rem 2rem;background:linear-gradient(135deg,#2563eb,#10b981);color:#fff;font-weight:600;font-size:1rem;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 10px 30px #2563eb4d;min-width:200px}.tesla-climate-toggle--on{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 10px 30px #ef44444d}.tesla-climate-toggle:disabled{opacity:.5;cursor:not-allowed;transform:none}.tesla-climate-toggle:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 15px 40px #2563eb66}.tesla-climate-toggle--on:not(:disabled):hover{box-shadow:0 15px 40px #ef444466}.tesla-stat-charging-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem}.tesla-stat-charging-indicator{width:.75rem;height:.75rem;border-radius:999px;background:#64748b;box-shadow:0 0 8px #64748b80;flex-shrink:0}.tesla-stat-charging-indicator--active{background:#10b981;box-shadow:0 0 10px #10b981a6;animation:tesla-charging-pulse 2s ease-in-out infinite}@keyframes tesla-charging-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.tesla-stat-charging-details{display:flex;flex-direction:column;gap:.4rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.2)}.tesla-stat-charging-detail{display:flex;justify-content:space-between;align-items:center;gap:.5rem;font-size:.85rem}.tesla-stat-charging-detail span{color:var(--text-secondary)}.tesla-stat-charging-detail strong{color:var(--text-primary);font-weight:600}.filter-contamination-gauge{display:flex;flex-direction:column;gap:1.25rem;align-items:center}.filter-contamination-gauge__status{display:flex;flex-direction:column;gap:.35rem;text-align:center}.filter-contamination-gauge__status-label{margin:0;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary)}.filter-contamination-gauge__status-value{margin:0;font-size:1.9rem;font-weight:700;color:var(--text-primary)}.filter-contamination-gauge__status-hint{margin:0;color:var(--text-secondary)}.filter-contamination-gauge__legend{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;font-weight:600;color:var(--text-secondary)}.filter-contamination-gauge__legend-item{display:inline-flex;align-items:center;gap:.4rem}.filter-contamination-gauge__legend-dot{width:.75rem;height:.75rem;border-radius:999px;display:inline-flex}.filter-contamination-gauge__legend-dot--clean{background:#10b981}.filter-contamination-gauge__legend-dot--warning{background:#f59e0b}.filter-contamination-gauge__legend-dot--critical{background:#ef4444}@media(min-width:768px){.filter-contamination-gauge__status{text-align:center}}.filter-contamination-chart__wrapper{position:relative;height:360px;border-radius:var(--radius-lg);overflow:hidden;background:linear-gradient(180deg,#bfdbfe59,#3b82f626);padding:.75rem}.filter-contamination-chart__wrapper:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.6),transparent 50%);opacity:.6;pointer-events:none}.filter-contamination-chart__wrapper>*{position:relative;z-index:1}.filter-contamination-chart__loading,.filter-contamination-chart__empty{padding:2.5rem;text-align:center;color:var(--text-secondary);background:#fff9;border-radius:var(--radius-lg);border:1px dashed rgba(148,163,184,.6);height:360px;display:flex;align-items:center;justify-content:center}.filter-contamination-chart__tooltip{padding:.75rem 1rem;background:#0f172ae6;color:#f8fafc;border-radius:var(--radius-md);box-shadow:0 15px 35px #0f172a59}.filter-contamination-chart__tooltip-title{font-weight:600;margin-bottom:.5rem;font-size:.9rem}.filter-contamination-chart__tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.9rem}.filter-contamination-chart__tooltip-label{flex:1;color:#f8fafccc}.filter-contamination-chart__tooltip-value{font-weight:600}.pool-page{display:flex;flex-direction:column;gap:1.5rem;padding-bottom:calc(5rem + env(safe-area-inset-bottom))}.pool-page__header{display:flex;flex-direction:column;gap:.75rem}.pool-page__eyebrow{font-size:.85rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.25rem}.pool-page__title{font-size:2rem;margin:0;color:var(--text-primary)}.pool-page__subtitle{margin:0;color:var(--text-secondary);max-width:640px}.pool-page__status{font-size:.95rem;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem}.pool-page__status-dot{display:inline-flex;width:.75rem;height:.75rem;border-radius:999px;margin-left:.5rem;background:linear-gradient(135deg,#38bdf8,#22d3ee);animation:pool-page-pulse 1.2s ease-in-out infinite}@keyframes pool-page-pulse{0%{transform:scale(.8);opacity:.5}50%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:.5}}.pool-page__status-error{color:#dc2626;font-weight:600}.pool-page__stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem}.pool-page__control-section{padding:1.5rem;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:1.25rem;border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.pool-page__control-statusbar{display:flex;flex-direction:column;gap:.75rem}.pool-page__control-badges{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.pool-page__status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border-radius:999px;font-size:.85rem;font-weight:600;border:1px solid var(--glass-border);color:var(--text-secondary);background:var(--glass-bg)}.pool-page__status-pill--ok{border-color:#10b98166;color:var(--accent-green)}.pool-page__status-pill--error{border-color:#dc262666;color:#dc2626}.pool-page__status-pill--pending{border-style:dashed;color:var(--text-tertiary)}.pool-page__control-updated{font-size:.85rem;color:var(--text-secondary)}.pool-page__control-actions{display:flex;align-items:center;gap:.75rem}.pool-page__control-refresh-button{border:1px solid rgba(148,163,184,.5);background:transparent;color:var(--text-primary);border-radius:var(--radius-md);padding:.45rem .9rem;font-weight:600;transition:border-color .2s ease,color .2s ease}.pool-page__control-refresh-button:disabled{opacity:.6;cursor:not-allowed}.pool-page__control-refresh-button:not(:disabled):hover{border-color:var(--accent-blue);color:var(--accent-blue)}.pool-page__control-error{margin:0;padding:.75rem 1rem;border-radius:var(--radius-md);background:#dc26261a;color:#dc2626;font-weight:600}.pool-page__control-grid{display:grid;grid-template-columns:1fr;gap:1rem}.pool-page__control-card{border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:1.25rem;background:var(--glass-bg);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;gap:1rem}.pool-page__control-card-header{display:flex;flex-direction:column;gap:.4rem}.pool-page__control-card-label{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.pool-page__control-card-value{margin:0;font-size:1.75rem;font-weight:700;color:var(--text-primary)}.pool-page__control-card-helper{margin:0;font-size:.9rem;color:var(--text-secondary)}.pool-page__control-button-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.pool-page__control-button-grid--gear{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.pool-page__control-button{border:1px solid rgba(255,255,255,.65);border-radius:1rem;padding:.85rem 1.35rem;min-height:3.25rem;background:#ffffffb3;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;gap:.6rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(20px);box-shadow:0 15px 35px #0f172a1f;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.pool-page__control-button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.pool-page__control-button:not(:disabled):hover{border-color:#22c55e66;box-shadow:0 25px 45px #0f172a2e}.pool-page__control-button--active{border-color:#22c55eb3;box-shadow:0 30px 60px #10b98159}.pool-page__control-button--summer{background:linear-gradient(135deg,#fde0478c,#fbbf2459);color:#7c2d12}.pool-page__control-button--cooldown{background:linear-gradient(135deg,#e2e8f0cc,#94a3b873);color:#1f2937}.pool-page__control-button--off{background:linear-gradient(135deg,#fecacad9,#f871718c);color:#7f1d1d}.pool-page__control-button--heating{background:linear-gradient(135deg,#fed7aad9,#fb923c8c);color:#7c2d12}.pool-page__control-button--nightfreeze{background:linear-gradient(135deg,#bfdbfed9,#7dd3fc8c);color:#0c4a6e}.pool-page__control-button--freeze{background:linear-gradient(135deg,#7dd3fcd9,#3b82f68c);color:#0c4a6e}.pool-page__control-button--deepfreeze{background:linear-gradient(135deg,#3b82f6d9,#2563eba6);color:#eff6ff}.pool-page__control-button--STOP{background:linear-gradient(135deg,#fecacae6,#ef44448c);color:#7f1d1d}.pool-page__control-button--LOW{background:linear-gradient(135deg,#bbf7d0d9,#22c55e8c);color:#065f46}.pool-page__control-button--MEDIUM{background:linear-gradient(135deg,#fef08ad9,#facc158c);color:#78350f}.pool-page__control-button--HIGH{background:linear-gradient(135deg,#fed7aad9,#f973168c);color:#7c2d12}.pool-page__control-button-label{font-size:.95rem}.pool-page__control-button-dot{width:.55rem;height:.55rem;border-radius:999px;background:#111827;box-shadow:0 0 6px #0f172a4d}.pool-page__control-button-dot--active{background:#22c55e;box-shadow:0 0 8px #22c55ea6}.pool-page__control-button-spinner{position:absolute;top:.6rem;right:.6rem;width:.75rem;height:.75rem;border-radius:999px;border:2px solid rgba(255,255,255,.6);border-top-color:#0f172a80;animation:pool-page-spinner .75s linear infinite}@keyframes pool-page-spinner{to{transform:rotate(360deg)}}.pool-page__control-footnotes{display:flex;flex-direction:column;gap:.25rem}.pool-page__control-progress{margin:0;font-size:.85rem;color:var(--text-secondary)}.pool-page__control-alert{margin:0;font-size:.9rem;color:#dc2626;font-weight:600}.pool-page__control-note{margin:0;font-size:.85rem;color:var(--text-secondary)}.pool-page__pump-power-live{margin-top:.75rem;text-align:center;display:flex;flex-direction:column;gap:.15rem;font-size:.9rem;color:var(--text-secondary)}.pool-page__pump-power-value{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.pool-page__pump-power-timestamp{font-size:.85rem;color:var(--text-tertiary)}.pool-page__pump-power-error{color:#dc2626;font-weight:600}.pool-page__stat-card--water{--value-card-start: rgba(14, 165, 233, .25);--value-card-end: rgba(59, 130, 246, .15);--value-card-shadow: rgba(14, 165, 233, .15)}.pool-page__stat-card--air{--value-card-start: rgba(125, 211, 252, .3);--value-card-end: rgba(14, 165, 233, .1);--value-card-shadow: rgba(125, 211, 252, .2)}.pool-page__stat-card--pump{--value-card-start: rgba(248, 250, 252, .4);--value-card-end: rgba(14, 165, 233, .08);--value-card-shadow: rgba(15, 23, 42, .12)}.pool-page__stat-card--heat{--value-card-start: rgba(251, 146, 60, .25);--value-card-end: rgba(249, 115, 22, .15);--value-card-shadow: rgba(249, 115, 22, .2)}.pool-page__stat-helper{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.pool-page__stat-value{margin:.35rem 0 0;font-size:2rem;color:var(--text-primary);font-weight:700}.pool-page__stat-label{margin:.15rem 0 0;font-size:.95rem;color:var(--text-secondary)}.pool-page__filter-card{padding:1.5rem}.pool-page__filter-header{margin-bottom:1.5rem}.pool-page__filter-title{margin:0;font-size:1.4rem;color:var(--text-primary)}.pool-page__filter-content{display:flex;flex-direction:column;gap:2rem}.pool-page__filter-gauge{display:flex;justify-content:center;align-items:center}.pool-page__filter-chart{flex:1}.pool-page__chart-card{padding:1.5rem}.pool-page__chart-header{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.pool-page__chart-title{margin:0;font-size:1.4rem;color:var(--text-primary)}.pool-page__chart-subtitle{margin:0;color:var(--text-secondary)}.pool-page__chart-legend{display:flex;gap:1rem;flex-wrap:wrap}.pool-page__legend-item{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--text-secondary)}.pool-page__legend-dot{width:.75rem;height:.75rem;border-radius:999px;display:inline-flex}.pool-page__legend-dot--water{background:#38bdf8}.pool-page__legend-dot--air{background:#a3e635}.pool-page__chart-wrapper{position:relative;height:360px;border-radius:var(--radius-lg);overflow:hidden;background:linear-gradient(180deg,#bfdbfe59,#3b82f626);padding:.75rem;flex:1}.pool-page__chart-wrapper:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.6),transparent 50%);opacity:.6;pointer-events:none}.pool-page__chart-wrapper>*{position:relative;z-index:1}.pool-page__chart-loading,.pool-page__chart-empty{padding:2.5rem;text-align:center;color:var(--text-secondary);background:#fff9;border-radius:var(--radius-lg);border:1px dashed rgba(148,163,184,.6)}.pool-page__tooltip{padding:.75rem 1rem;background:#0f172ae6;color:#f8fafc;border-radius:var(--radius-md);box-shadow:0 15px 35px #0f172a59}.pool-page__tooltip-title{font-weight:600;margin-bottom:.5rem;font-size:.9rem}.pool-page__tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.9rem}.pool-page__tooltip-dot{width:.5rem;height:.5rem;border-radius:999px;margin-right:.35rem}.pool-page__tooltip-label{flex:1;display:flex;align-items:center;gap:.35rem;color:#f8fafccc}.pool-page__tooltip-value{font-weight:600}.pool-page__chart-content{display:flex;flex-direction:column;gap:1.25rem}.pool-page__trend-panel{border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:1rem 1.1rem;background:var(--glass-bg);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;gap:1rem}.pool-page__trend-list-label{font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.pool-page__trend-list-value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.pool-page__trend-temp-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.pool-page__trend-temp{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg)}.pool-page__trend-loss-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem .15rem 0;border-top:1px dashed rgba(148,163,184,.35)}.pool-page__trend-loss-value{font-size:1.2rem;font-weight:600}.pool-page__trend-loss-value--positive{color:var(--accent-green)}.pool-page__trend-loss-value--warning{color:#fb923c}.pool-page__trend-loss-value--negative{color:#dc2626}.pool-page__trend-loss-value--neutral{color:var(--text-secondary)}.pool-page__heating-card{display:flex;flex-direction:column;gap:.75rem}.pool-page__heating-header{display:flex;justify-content:space-between;align-items:flex-start}.pool-page__heating-label{margin:0;font-size:.9rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}.pool-page__heating-value{margin:.15rem 0 0;font-size:1.1rem;font-weight:600}.pool-page__heating-value--positive{color:var(--accent-green)}.pool-page__heating-value--negative{color:#dc2626}.pool-page__heating-value--neutral{color:var(--text-primary)}.pool-page__heating-chart{height:105px;border-radius:var(--radius-md);border:1px solid rgba(148,163,184,.4);background:linear-gradient(180deg,#fb923c14,#f8fafc66);padding:.35rem .35rem .25rem;position:relative}.pool-page__heating-chart-value{position:absolute;top:.35rem;right:.55rem;font-size:.95rem;font-weight:600;color:var(--text-secondary)}.pool-page__heating-chart-value--positive{color:var(--accent-green)}.pool-page__heating-chart-value--negative{color:#dc2626}.pool-page__heating-chart-value--neutral{color:var(--text-secondary)}.pool-page__heating-placeholder{margin:0;font-size:.85rem;color:var(--text-secondary);text-align:center;padding:2rem .5rem}.pool-page__chart-area{flex:1;min-width:0;display:flex}.pool-page__chart-empty-panel{border-radius:var(--radius-lg);border:1px dashed rgba(148,163,184,.6);background:#fff9;padding:2rem;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--text-secondary)}@media(min-width:768px){.pool-page__header{flex-direction:row;justify-content:space-between;align-items:flex-end}.pool-page__control-statusbar{flex-direction:row;justify-content:space-between;align-items:center}.pool-page__control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pool-page__chart-header{flex-direction:row;justify-content:space-between;align-items:flex-end}.pool-page__filter-content{flex-direction:row;align-items:flex-start;gap:2.5rem}.pool-page__filter-gauge{flex:0 0 auto;min-width:320px}.pool-page__filter-chart{flex:1;min-width:0}.pool-page__chart-content{flex-direction:row;align-items:stretch;gap:1.5rem}.pool-page__trend-panel{flex:0 0 280px;align-self:stretch}.pool-page__chart-area{min-height:360px}}@media(min-width:1024px){.pool-page__trend-panel{flex-basis:320px}}.trash-schedule-overview{display:flex;flex-direction:column;gap:1rem}.trash-schedule-overview__loading,.trash-schedule-overview__error,.trash-schedule-overview__empty{padding:1rem;text-align:center;color:var(--text-secondary, #4b5563);font-size:.95rem}.trash-schedule-overview__error{color:var(--accent-red, #dc2626)}.trash-schedule-overview__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.trash-schedule-overview__card{background:var(--glass-bg, rgba(255, 255, 255, .85));backdrop-filter:var(--blur-medium, blur(15px) saturate(180%));border:1px solid var(--glass-border, rgba(148, 163, 184, .4));border-radius:var(--radius-md, 1rem);padding:.75rem;box-shadow:var(--glass-shadow, 0 25px 60px rgba(15, 23, 42, .12));transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;gap:.375rem}.trash-schedule-overview__card:hover{background:var(--glass-bg-hover, rgba(255, 255, 255, .95));border-color:var(--glass-border, rgba(148, 163, 184, .6));box-shadow:0 30px 70px #0f172a2e}.trash-schedule-overview__card--today{border-color:var(--accent-red, #dc2626);background:linear-gradient(135deg,#dc26261a,#dc26260d)}.trash-schedule-overview__card--tomorrow{border-color:var(--accent-orange, #f97316);background:linear-gradient(135deg,#f973161a,#f973160d)}.trash-schedule-overview__card--upcoming{border-color:var(--accent-blue, #2563eb);background:linear-gradient(135deg,#2563eb1a,#2563eb0d)}.trash-schedule-overview__card-category{font-size:.9375rem;font-weight:600;color:var(--text-primary, #1f2937);margin:0;letter-spacing:-.01em}.trash-schedule-overview__card-date{font-size:.8125rem;color:var(--text-secondary, #4b5563);margin:0}.trash-schedule-overview__card-days{font-size:.75rem;color:var(--text-tertiary, #6b7280);margin:0;font-weight:500}@media(min-width:768px){.trash-schedule-overview__grid{grid-template-columns:repeat(4,1fr);gap:.875rem}.trash-schedule-overview__card{padding:.875rem}.trash-schedule-overview__card-category{font-size:1rem}.trash-schedule-overview__card-date{font-size:.875rem}.trash-schedule-overview__card-days{font-size:.8125rem}}.level-up-animation{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden}.level-up-animation__aura{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(255,215,0,.8) 0%,rgba(255,165,0,.6) 50%,transparent 100%);animation:level-up-aura-pulse .5s ease-in-out infinite;opacity:0;transform:scale(.5)}.level-up-animation__aura--charging{opacity:1;animation:level-up-aura-charge 2s ease-out forwards}.level-up-animation__aura--transforming{animation:level-up-aura-transform 3s ease-in-out infinite;opacity:1;transform:scale(1.5)}.level-up-animation__aura--complete{animation:level-up-aura-complete 1s ease-out forwards}.level-up-animation__energy{position:absolute;width:100%;height:100%;background:radial-gradient(circle at center,rgba(255,215,0,.4) 0%,rgba(255,165,0,.3) 30%,rgba(255,69,0,.2) 60%,transparent 100%);opacity:0;transform:scale(.3)}.level-up-animation__energy--charging{animation:level-up-energy-charge 2s ease-out forwards}.level-up-animation__energy--transforming{animation:level-up-energy-transform 3s ease-in-out infinite;opacity:1}.level-up-animation__energy--complete{animation:level-up-energy-complete 1s ease-out forwards}.level-up-animation__lightning{position:absolute;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.8) 50%,transparent 100%),linear-gradient(0deg,transparent 0%,rgba(255,255,255,.6) 50%,transparent 100%);opacity:0;transform:rotate(45deg)}.level-up-animation__lightning--transforming{animation:level-up-lightning .3s ease-in-out infinite;opacity:.6}.level-up-animation__text{position:relative;z-index:10;text-align:center;color:#fff;text-shadow:0 0 10px rgba(255,215,0,1),0 0 20px rgba(255,165,0,1),0 0 30px rgba(255,69,0,1),0 0 40px rgba(255,0,0,.8);animation:level-up-text-appear 1s ease-out forwards;opacity:0;transform:scale(.5)}.level-up-animation__name{font-size:3rem;font-weight:900;font-family:Courier New,Monaco,monospace;letter-spacing:.2em;margin-bottom:1rem;text-transform:uppercase;animation:level-up-text-bounce .5s ease-in-out infinite}.level-up-animation__level-up{font-size:4rem;font-weight:900;font-family:Courier New,Monaco,monospace;letter-spacing:.15em;color:gold;margin-bottom:.5rem;animation:level-up-text-pulse .3s ease-in-out infinite}.level-up-animation__level{font-size:2.5rem;font-weight:700;font-family:Courier New,Monaco,monospace;letter-spacing:.1em;color:orange}.level-up-animation__particles{position:absolute;width:100%;height:100%;pointer-events:none}.level-up-animation__particle{position:absolute;width:8px;height:8px;background:radial-gradient(circle,gold,orange);border-radius:50%;top:50%;left:50%;opacity:0;box-shadow:0 0 10px #ffd700cc}.level-up-animation__particles--transforming .level-up-animation__particle{animation:level-up-particle var(--delay, 0s) .5s ease-out forwards}@keyframes level-up-aura-charge{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes level-up-aura-transform{0%,to{transform:scale(1.5) rotate(0);opacity:1}50%{transform:scale(2) rotate(180deg);opacity:.9}}@keyframes level-up-aura-complete{0%{opacity:1;transform:scale(1.5)}to{opacity:0;transform:scale(3)}}@keyframes level-up-energy-charge{0%{opacity:0;transform:scale(.3)}to{opacity:.6;transform:scale(1)}}@keyframes level-up-energy-transform{0%,to{transform:scale(1) rotate(0);opacity:.6}50%{transform:scale(1.3) rotate(360deg);opacity:.8}}@keyframes level-up-energy-complete{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes level-up-lightning{0%,to{opacity:.3;transform:rotate(45deg) scale(1)}50%{opacity:.8;transform:rotate(45deg) scale(1.2)}}@keyframes level-up-text-appear{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes level-up-text-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes level-up-text-pulse{0%,to{transform:scale(1);text-shadow:0 0 10px rgba(255,215,0,1),0 0 20px rgba(255,165,0,1),0 0 30px rgba(255,69,0,1)}50%{transform:scale(1.1);text-shadow:0 0 20px rgba(255,215,0,1),0 0 40px rgba(255,165,0,1),0 0 60px rgba(255,69,0,1),0 0 80px rgba(255,0,0,1)}}@keyframes level-up-particle{0%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) scale(0) rotate(720deg)}}.level-up-animation__particle:nth-child(1){animation:level-up-particle-1 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(2){animation:level-up-particle-2 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(3){animation:level-up-particle-3 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(4){animation:level-up-particle-4 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(5){animation:level-up-particle-5 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(6){animation:level-up-particle-6 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(7){animation:level-up-particle-7 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(8){animation:level-up-particle-8 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(9){animation:level-up-particle-9 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(10){animation:level-up-particle-10 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(11){animation:level-up-particle-11 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(12){animation:level-up-particle-12 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(13){animation:level-up-particle-13 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(14){animation:level-up-particle-14 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(15){animation:level-up-particle-15 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(16){animation:level-up-particle-16 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(17){animation:level-up-particle-17 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(18){animation:level-up-particle-18 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(19){animation:level-up-particle-19 .5s .5s ease-out forwards}.level-up-animation__particle:nth-child(20){animation:level-up-particle-20 .5s .5s ease-out forwards}@keyframes level-up-particle-1{0%{opacity:1;transform:translate(-50%,-50%) translate(150px,-180px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(150px,-180px) scale(0) rotate(720deg)}}@keyframes level-up-particle-2{0%{opacity:1;transform:translate(-50%,-50%) translate(-150px,-180px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-150px,-180px) scale(0) rotate(720deg)}}@keyframes level-up-particle-3{0%{opacity:1;transform:translate(-50%,-50%) translate(180px,150px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(180px,150px) scale(0) rotate(720deg)}}@keyframes level-up-particle-4{0%{opacity:1;transform:translate(-50%,-50%) translate(-180px,150px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-180px,150px) scale(0) rotate(720deg)}}@keyframes level-up-particle-5{0%{opacity:1;transform:translate(-50%,-50%) translate(200px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(200px) scale(0) rotate(720deg)}}@keyframes level-up-particle-6{0%{opacity:1;transform:translate(-50%,-50%) translate(-200px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-200px) scale(0) rotate(720deg)}}@keyframes level-up-particle-7{0%{opacity:1;transform:translate(-50%,-50%) translateY(-200px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translateY(-200px) scale(0) rotate(720deg)}}@keyframes level-up-particle-8{0%{opacity:1;transform:translate(-50%,-50%) translateY(200px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translateY(200px) scale(0) rotate(720deg)}}@keyframes level-up-particle-9{0%{opacity:1;transform:translate(-50%,-50%) translate(120px,-160px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(120px,-160px) scale(0) rotate(720deg)}}@keyframes level-up-particle-10{0%{opacity:1;transform:translate(-50%,-50%) translate(-120px,-160px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-120px,-160px) scale(0) rotate(720deg)}}@keyframes level-up-particle-11{0%{opacity:1;transform:translate(-50%,-50%) translate(160px,120px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(160px,120px) scale(0) rotate(720deg)}}@keyframes level-up-particle-12{0%{opacity:1;transform:translate(-50%,-50%) translate(-160px,120px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-160px,120px) scale(0) rotate(720deg)}}@keyframes level-up-particle-13{0%{opacity:1;transform:translate(-50%,-50%) translate(100px,170px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(100px,170px) scale(0) rotate(720deg)}}@keyframes level-up-particle-14{0%{opacity:1;transform:translate(-50%,-50%) translate(-100px,170px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-100px,170px) scale(0) rotate(720deg)}}@keyframes level-up-particle-15{0%{opacity:1;transform:translate(-50%,-50%) translate(170px,-100px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(170px,-100px) scale(0) rotate(720deg)}}@keyframes level-up-particle-16{0%{opacity:1;transform:translate(-50%,-50%) translate(-170px,-100px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-170px,-100px) scale(0) rotate(720deg)}}@keyframes level-up-particle-17{0%{opacity:1;transform:translate(-50%,-50%) translate(80px,190px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(80px,190px) scale(0) rotate(720deg)}}@keyframes level-up-particle-18{0%{opacity:1;transform:translate(-50%,-50%) translate(-80px,190px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-80px,190px) scale(0) rotate(720deg)}}@keyframes level-up-particle-19{0%{opacity:1;transform:translate(-50%,-50%) translate(190px,-80px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(190px,-80px) scale(0) rotate(720deg)}}@keyframes level-up-particle-20{0%{opacity:1;transform:translate(-50%,-50%) translate(-190px,-80px) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) translate(-190px,-80px) scale(0) rotate(720deg)}}@media(min-width:768px){.level-up-animation__name{font-size:4rem}.level-up-animation__level-up{font-size:5rem}.level-up-animation__level{font-size:3rem}}.trash-level-dashboard{display:flex;flex-direction:column;gap:1rem}.trash-level-dashboard__loading,.trash-level-dashboard__error,.trash-level-dashboard__empty{padding:1rem;text-align:center;color:var(--text-secondary, #4b5563);font-size:.95rem}.trash-level-dashboard__error{color:var(--accent-red, #dc2626)}.trash-level-dashboard__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.trash-level-dashboard__card{background:var(--glass-bg, rgba(255, 255, 255, .85));backdrop-filter:var(--blur-medium, blur(15px) saturate(180%));border:2px solid var(--glass-border, rgba(148, 163, 184, .4));border-radius:var(--radius-md, 1rem);padding:1rem;box-shadow:var(--glass-shadow, 0 25px 60px rgba(15, 23, 42, .12));display:flex;gap:1rem;align-items:flex-start;position:relative;overflow:hidden}.trash-level-dashboard__card:before{content:"";position:absolute;inset:0;border:1px solid rgba(0,0,0,.1);border-radius:var(--radius-md, 1rem);pointer-events:none;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}.trash-level-dashboard__avatar-container{flex-shrink:0;width:64px;height:64px;display:flex;align-items:center;justify-content:center}.trash-level-dashboard__avatar{width:56px;height:56px;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;border:2px solid var(--text-primary, #1f2937);border-radius:4px;position:relative;background-color:var(--glass-bg, rgba(255, 255, 255, .95))}.trash-level-dashboard__avatar--basti{background:linear-gradient(135deg,#3b82f6,#2563eb,#1e40af);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__avatar--konrad{background:linear-gradient(135deg,#10b981,#059669,#047857);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__avatar--laura{background:linear-gradient(135deg,#f472b6,#ec4899,#db2777);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__avatar--melli{background:linear-gradient(135deg,#a78bfa,#8b5cf6,#7c3aed);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__avatar--josef{background:linear-gradient(135deg,#f59e0b,#d97706,#b45309);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__avatar--gabi{background:linear-gradient(135deg,#ef4444,#dc2626,#b91c1c);box-shadow:inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 0 0 2px var(--text-primary, #1f2937)}.trash-level-dashboard__info{flex:1;display:flex;flex-direction:column;gap:.5rem;min-width:0}.trash-level-dashboard__name{font-size:1rem;font-weight:700;color:var(--text-primary, #1f2937);margin:0;font-family:Courier New,Monaco,monospace;letter-spacing:.05em;text-transform:uppercase}.trash-level-dashboard__level-bar{display:flex;gap:2px;align-items:center;width:100%}.trash-level-dashboard__level-segment{flex:1;height:12px;background:var(--glass-border, rgba(148, 163, 184, .3));border:1px solid var(--text-tertiary, #6b7280);border-radius:2px;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;transition:all .2s ease}.trash-level-dashboard__level-segment--active{background:linear-gradient(135deg,#10b981,#059669);border-color:#047857;box-shadow:inset 0 1px #ffffff4d,inset 0 -1px #0003,0 0 4px #10b9814d}.trash-level-dashboard__level-text{font-size:.75rem;font-weight:600;color:var(--text-secondary, #4b5563);margin:0;font-family:Courier New,Monaco,monospace;letter-spacing:.05em}@media(min-width:768px){.trash-level-dashboard__grid{grid-template-columns:repeat(3,1fr);gap:1.25rem}.trash-level-dashboard__card{padding:1.25rem;gap:1.25rem}.trash-level-dashboard__avatar-container{width:80px;height:80px}.trash-level-dashboard__avatar{width:72px;height:72px}.trash-level-dashboard__name{font-size:1.125rem}.trash-level-dashboard__level-segment{height:14px}.trash-level-dashboard__level-text{font-size:.8125rem}}@media(min-width:1440px){.trash-level-dashboard__grid{gap:1.5rem}.trash-level-dashboard__card{padding:1.5rem}}.muellabholung-page{display:flex;flex-direction:column;gap:1.5rem;padding-bottom:calc(5rem + env(safe-area-inset-bottom))}.muellabholung-page__header{display:flex;flex-direction:column;gap:.75rem}.muellabholung-page__eyebrow{font-size:.85rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary, #6b7280);margin-bottom:.25rem}.muellabholung-page__status{font-size:.95rem;color:var(--text-secondary, #4b5563);display:flex;align-items:center;gap:.5rem}.muellabholung-page__status-dot{display:inline-flex;width:.75rem;height:.75rem;border-radius:999px;margin-left:.5rem;background:linear-gradient(135deg,#38bdf8,#22d3ee);animation:muellabholung-page-pulse 1.2s ease-in-out infinite}@keyframes muellabholung-page-pulse{0%{transform:scale(.8);opacity:.5}50%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:.5}}.muellabholung-page__status-error{color:var(--accent-red, #dc2626);font-weight:600}.muellabholung-page__overview-section,.muellabholung-page__levels-section{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.muellabholung-page__section-title{font-size:1.25rem;font-weight:600;margin:0;letter-spacing:-.01em}@media(min-width:768px){.muellabholung-page__overview-section,.muellabholung-page__levels-section{padding:1.75rem}.muellabholung-page__section-title{font-size:1.5rem}}.pv-forecast-dashboard{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;border-radius:var(--radius-lg, 1rem);min-height:0}.pv-forecast-dashboard__empty{padding:2rem;text-align:center;font-size:.95rem}.pv-forecast-dashboard__header{display:flex;flex-direction:column;gap:.25rem}.pv-forecast-dashboard__title{font-size:1.5rem;font-weight:600;margin:0}.pv-forecast-dashboard__day-label{font-size:.9rem;font-weight:400}.pv-forecast-dashboard__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.pv-forecast-dashboard__stat{display:flex;flex-direction:column;gap:.25rem;padding:1rem;border-radius:var(--radius-md, .75rem);background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.pv-forecast-dashboard__stat-label{font-size:.85rem;font-weight:500;opacity:.8}.pv-forecast-dashboard__stat-value{font-size:1.25rem;font-weight:600;color:#fbbf24}.pv-forecast-dashboard__graph-container{display:flex;flex-direction:column;gap:.75rem}.pv-forecast-dashboard__graph-header{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}.pv-forecast-dashboard__toggles{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.pv-forecast-dashboard__graph-title{font-size:1rem;font-weight:600;margin:0}.pv-forecast-dashboard__toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.85rem;user-select:none}.pv-forecast-dashboard__toggle-input{width:1rem;height:1rem;cursor:pointer;accent-color:#fbbf24}.pv-forecast-dashboard__toggle-label{cursor:pointer;opacity:.8}.pv-forecast-dashboard__graph{width:100%;height:280px;min-height:280px;border-radius:var(--radius-md, .75rem);overflow:hidden;background:#0003;padding:.5rem}.pv-forecast-dashboard__legend{display:flex;flex-wrap:wrap;gap:1rem;font-size:.85rem;padding:0 .5rem}.pv-forecast-dashboard__legend-item{display:flex;align-items:center;gap:.5rem}.pv-forecast-dashboard__legend-item--adjusted:before{content:"";display:block;width:1rem;height:.5rem;background:linear-gradient(135deg,#fbbf24,#fbbf244d);border-radius:2px}.pv-forecast-dashboard__legend-item--theoretical:before{content:"";display:block;width:1rem;height:2px;background:#fbbf24;opacity:.6;border-top:2px dashed #fbbf24}.pv-forecast-dashboard__legend-item--live:before{content:"";display:block;width:1rem;height:2px;background:#10b981;border-radius:2px}.pv-forecast-dashboard__tooltip-value--live{color:#10b981}.pv-forecast-dashboard__tooltip{background:#0f172af2;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md, .75rem);padding:.75rem;box-shadow:0 4px 12px #0000004d;backdrop-filter:blur(8px);min-width:180px}.pv-forecast-dashboard__tooltip-title{font-size:.9rem;font-weight:600;color:#ffffffe6;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.pv-forecast-dashboard__tooltip-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:.5rem}.pv-forecast-dashboard__tooltip-row:first-of-type{margin-top:0}.pv-forecast-dashboard__tooltip-label{font-size:.8rem;color:#ffffffb3}.pv-forecast-dashboard__tooltip-value{font-size:.85rem;font-weight:600;color:#ffffffe6}.pv-forecast-dashboard__tooltip-value--adjusted{color:#fbbf24}.pv-forecast-dashboard__tooltip-value--theoretical{color:#fbbf24b3}.pv-forecast-page{display:flex;flex-direction:column;gap:1.5rem;padding-bottom:calc(5rem + env(safe-area-inset-bottom))}.pv-forecast-page__header{display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;border-radius:var(--radius-lg, 1rem)}.pv-forecast-page__title{font-size:2rem;font-weight:700;margin:0;color:var(--text-primary, #0f172a)}.pv-forecast-page__subtitle{font-size:.95rem;margin:0;color:var(--text-secondary, #64748b);max-width:640px}.pv-forecast-page__last-update{font-size:.85rem;margin-top:.25rem}.pv-forecast-page__error,.pv-forecast-page__loading{padding:1.5rem;border-radius:var(--radius-lg, 1rem);text-align:center}.pv-forecast-page__retry-button{margin-top:1rem;padding:.5rem 1rem;border-radius:var(--radius-md, .75rem);border:1px solid rgba(255,255,255,.3);background:#ffffff1a;color:var(--text-primary, #0f172a);cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s ease}.pv-forecast-page__retry-button:hover{background:#fff3;transform:translateY(-1px)}.pv-forecast-page__retry-button:active{transform:translateY(0)}.pv-forecast-page__content{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.pv-forecast-page__dashboard-wrapper{min-width:0}.weather-warning-card{display:flex;flex-direction:column;gap:.85rem;padding:1.5rem;min-height:100%}.weather-warning-card__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.weather-warning-card__eyebrow{margin:0;text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;color:var(--text-tertiary)}.weather-warning-card__title{margin:.15rem 0 0;font-size:1.45rem;color:var(--text-primary)}.weather-warning-card__severity{display:inline-flex;padding:.3rem .75rem;border-radius:999px;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.weather-warning-card__severity--red{background:#f8717140;color:#b91c1c}.weather-warning-card__severity--orange{background:#fbbf2440;color:#92400e}.weather-warning-card__severity--yellow{background:#fde68a40;color:#92400e}.weather-warning-card__severity--green{background:#6ee7b740;color:#047857}.weather-warning-card__window{margin:0;color:var(--text-secondary);font-size:.95rem}.weather-warning-card__description{margin:0;color:var(--text-primary);font-size:1rem;line-height:1.5}.weather-warning-card__instruction{margin:0;color:var(--text-secondary);font-size:.95rem}.weather-warning-card__footer{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center;margin-top:auto}.weather-warning-card__cta{padding:.45rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--glass-border);text-decoration:none;font-weight:600;color:var(--accent-blue);transition:background .2s ease}.weather-warning-card__cta:hover{background:#2563eb14}.weather-warning-card__badge{display:inline-flex;padding:.3rem .6rem;border-radius:999px;background:#2563eb1f;color:#1d4ed8;font-size:.85rem;font-weight:600}.weather-warning-card__history{font-size:.85rem;color:var(--text-tertiary)}.weather-warning-card--loading{position:relative;overflow:hidden}.weather-warning-card__skeleton{width:100%;height:6rem;border-radius:var(--radius-md);background:linear-gradient(90deg,#94a3b826,#94a3b840,#94a3b826);animation:weather-warning-card-pulse 1.4s ease-in-out infinite}@keyframes weather-warning-card-pulse{0%{transform:translate(-25%)}to{transform:translate(25%)}}.weather-multi-day{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.weather-multi-day__header{display:flex;justify-content:space-between;align-items:flex-start}.weather-multi-day__eyebrow{margin:0;text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;color:var(--text-tertiary)}.weather-multi-day__title{margin:.2rem 0 0;font-size:1.3rem;color:var(--text-primary)}.weather-multi-day__scroller{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.weather-multi-day__empty{margin:0;color:var(--text-secondary);font-size:.95rem}.weather-multi-day__card{border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:1rem;display:flex;flex-direction:column;gap:.75rem;background:var(--glass-bg);backdrop-filter:var(--blur-light);-webkit-backdrop-filter:var(--blur-light);box-shadow:var(--glass-shadow)}.weather-multi-day__card-header{display:flex;flex-direction:column;gap:.2rem}.weather-multi-day__card-date{margin:0;font-weight:600;color:var(--text-primary)}.weather-multi-day__card-text{margin:0;color:var(--text-secondary);font-size:.9rem}.weather-multi-day__card-icon{display:flex;align-items:center;justify-content:center;height:48px}.weather-multi-day__card-icon img{height:42px;width:42px;object-fit:contain}.weather-multi-day__card-temp{margin:0;font-size:1.4rem;font-weight:700;color:var(--text-primary)}.weather-multi-day__card-temp span{color:var(--text-secondary);font-weight:500;margin-left:.35rem}.weather-multi-day__card-badges{display:flex;flex-wrap:wrap;gap:.4rem}.weather-multi-day__pill{display:inline-flex;padding:.25rem .6rem;border-radius:999px;background:color-mix(in srgb,var(--accent-blue) 15%,transparent);color:var(--accent-blue);font-size:.85rem;font-weight:600}.weather-multi-day__cloud p,.weather-multi-day__wind p{margin:0;color:var(--text-secondary);font-size:.85rem}.weather-multi-day__cloud-bar{height:6px;border-radius:999px;background:#94a3b840;overflow:hidden;margin-top:.35rem}.weather-multi-day__cloud-bar span{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#2563eb)}.weather-multi-day__wind{display:flex;align-items:center;gap:.35rem}.weather-multi-day__wind strong{color:var(--text-primary);font-size:.95rem}.weather-multi-day--loading{align-items:center;justify-content:center}.weather-multi-day__skeleton{width:100%;height:120px;border-radius:var(--radius-lg);background:linear-gradient(90deg,#94a3b826,#94a3b84d,#94a3b826);animation:weather-multi-day-skeleton 1.4s ease-in-out infinite}@keyframes weather-multi-day-skeleton{0%{transform:translate(-25%)}to{transform:translate(25%)}}.weather-rain-map{position:relative;width:100%;height:600px;border-radius:var(--radius-lg);overflow:hidden;background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);isolation:isolate}.weather-rain-map__container{width:100%;height:100%;position:relative;z-index:1}.weather-rain-map__loading,.weather-rain-map__error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:1.5rem 2rem;box-shadow:var(--glass-shadow)}.weather-rain-map__loading p,.weather-rain-map__error p{margin:0;color:var(--text-primary);font-size:1rem;font-weight:500}.weather-rain-map__error p{color:var(--accent-red, #dc2626)}@media(min-width:768px){.weather-rain-map{height:600px}}@media(min-width:1440px){.weather-rain-map{height:700px}}@media(min-width:1920px){.weather-rain-map{height:800px}}:root[data-theme=dark] .weather-rain-map .mapboxgl-map{color-scheme:dark}.weather-rain-map .mapboxgl-ctrl-group{background:var(--glass-bg);backdrop-filter:var(--blur-medium);-webkit-backdrop-filter:var(--blur-medium);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.weather-rain-map .mapboxgl-ctrl-group button{color:var(--text-primary)}.weather-rain-map .mapboxgl-ctrl-group button:hover{background:var(--glass-bg-hover)}.weather-rain-map__controls{position:absolute;bottom:.75rem;right:.75rem;z-index:2000!important;width:auto;max-width:320px;background:var(--glass-bg, rgba(255, 255, 255, .95))!important;backdrop-filter:var(--blur-medium, blur(10px));-webkit-backdrop-filter:var(--blur-medium, blur(10px));border:1px solid var(--glass-border, rgba(148, 163, 184, .3))!important;border-radius:var(--radius-md);padding:.625rem .875rem;box-shadow:var(--glass-shadow, 0 8px 32px rgba(0, 0, 0, .1));pointer-events:auto;opacity:1!important;visibility:visible!important;display:block!important}.weather-rain-map__controls-inner{display:flex;flex-direction:column;gap:.5rem}.weather-rain-map__time-display{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.weather-rain-map__time-offset{font-size:.75rem;font-weight:600;color:var(--text-primary)}.weather-rain-map__time-absolute{font-size:.75rem;color:var(--text-secondary)}.weather-rain-map__slider-container{width:100%}.weather-rain-map__slider{width:100%;height:4px;border-radius:2px;background:#94a3b866!important;outline:none;-webkit-appearance:none;appearance:none;cursor:pointer}.weather-rain-map__slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent-primary, #3b82f6)!important;border:2px solid white!important;cursor:pointer;box-shadow:0 2px 4px #0000004d;transition:all .2s ease}.weather-rain-map__slider::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 3px 6px #0006}.weather-rain-map__slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent-primary, #3b82f6)!important;border:2px solid white!important;cursor:pointer;box-shadow:0 2px 4px #0000004d;transition:all .2s ease}.weather-rain-map__slider::-moz-range-thumb:hover{transform:scale(1.15);box-shadow:0 3px 6px #0006}.weather-rain-map__controls-buttons{display:flex;gap:.375rem;flex-wrap:wrap;justify-content:flex-start}.weather-rain-map__button{padding:.375rem .625rem;font-size:.75rem;font-weight:500;color:var(--text-primary);background:var(--glass-bg-hover);border:1px solid var(--glass-border);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s ease;backdrop-filter:var(--blur-small);-webkit-backdrop-filter:var(--blur-small)}.weather-rain-map__button:hover{background:var(--glass-bg-active);transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.weather-rain-map__button:active{transform:translateY(0)}.weather-rain-map__button--play{background:var(--accent-primary, #3b82f6);color:#fff;border-color:var(--accent-primary, #3b82f6);font-size:.875rem;min-width:2rem;padding:.375rem .5rem}.weather-rain-map__button--play:hover{background:var(--accent-primary-hover, #2563eb);border-color:var(--accent-primary-hover, #2563eb)}@media(max-width:767px){.weather-rain-map__controls{bottom:.5rem;right:.5rem;left:auto;max-width:280px;padding:.5rem .75rem}.weather-rain-map__controls-buttons{gap:.25rem}.weather-rain-map__button{padding:.25rem .5rem;font-size:.6875rem}.weather-rain-map__button--play{min-width:1.75rem;padding:.25rem .375rem}}.weather-rain-map__home-marker{position:relative;display:flex;flex-direction:column;align-items:center;cursor:pointer;z-index:100}.weather-rain-map__home-marker-pin{width:24px;height:24px;background:var(--accent-primary, #3b82f6);border:3px solid white;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 8px #0000004d;position:relative}.weather-rain-map__home-marker-pin:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(45deg);width:8px;height:8px;background:#fff;border-radius:50%}.weather-rain-map__home-marker-label{margin-top:4px;padding:.25rem .5rem;background:var(--glass-bg, rgba(255, 255, 255, .9));backdrop-filter:var(--blur-small, blur(8px));-webkit-backdrop-filter:var(--blur-small, blur(8px));border:1px solid var(--glass-border, rgba(148, 163, 184, .3));border-radius:var(--radius-sm, .25rem);font-size:.75rem;font-weight:600;color:var(--text-primary);white-space:nowrap;box-shadow:0 2px 4px #0000001a;pointer-events:none}:root[data-theme=dark] .weather-rain-map__home-marker-label{background:var(--glass-bg, rgba(15, 23, 42, .9));color:var(--text-primary)}.weather-page{display:flex;flex-direction:column;gap:1.75rem;padding-bottom:calc(4rem + env(safe-area-inset-bottom))}.weather-page__header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem}.weather-page__eyebrow{font-size:.85rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin:0}.weather-page__title{margin:.25rem 0 0;font-size:2.25rem;color:var(--text-primary)}.weather-page__status-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;color:var(--text-secondary);font-size:.95rem}.weather-page__status-error{color:#dc2626;font-weight:600}.weather-page__warning,.weather-page__hourly{width:100%}.weather-page__nowcast{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.weather-page__nowcast-header{display:flex;flex-direction:column;gap:1rem}.weather-page__nowcast-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.9rem}.weather-page__nowcast-card{--value-card-start: rgba(59, 130, 246, .2);--value-card-end: rgba(14, 165, 233, .08);--value-card-shadow: rgba(14, 165, 233, .2)}.weather-page__day-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.weather-page__panel-title{margin:0;font-size:1.35rem;color:var(--text-primary)}.weather-page__panel-subtitle{margin:.2rem 0 0;color:var(--text-secondary);font-size:.95rem}.weather-page__panel-subtitle--muted{color:var(--text-tertiary)}.weather-page__badge{display:inline-flex;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.weather-page__badge--warning{background:#fbbf2433;color:#b45309}.weather-page__badge--muted{background:#94a3b833;color:var(--text-secondary)}.weather-page__chart{position:relative;height:320px}.weather-page__empty-state{padding:1.5rem;border-radius:var(--radius-md);border:1px dashed var(--glass-border);text-align:center;color:var(--text-secondary);background:var(--glass-bg);backdrop-filter:var(--blur-light);-webkit-backdrop-filter:var(--blur-light)}.weather-page__empty-state--compact{padding:.75rem;border:none;background:transparent;text-align:left}.weather-page__tooltip{background:#0f172ae6;color:#f8fafc;padding:.75rem 1rem;border-radius:var(--radius-md);box-shadow:0 15px 35px #0f172a59;font-size:.9rem}.weather-page__tooltip-title{font-weight:600;margin-bottom:.35rem}.weather-page__tooltip-row{display:flex;justify-content:space-between;gap:.75rem}.weather-page__tooltip-label{color:#f8fafcb3}@media(min-width:1440px){.weather-page__day-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@keyframes thunder-flash{0%,99%{opacity:1;filter:brightness(1);transform:scale(1)}49%,51%{opacity:1;filter:brightness(1.8);transform:scale(1.02)}50%{opacity:1;filter:brightness(2);transform:scale(1.03)}}.value-card--thunderstorm{position:relative;animation:thunder-flash var(--thunder-duration, 20s) ease-in-out infinite;animation-delay:var(--thunder-delay, 0s)}.value-card--thunderstorm:before{content:"";position:absolute;inset:0;background:#ffffff4d;opacity:0;animation:thunder-flash var(--thunder-duration, 20s) ease-in-out infinite;animation-delay:var(--thunder-delay, 0s);pointer-events:none;border-radius:inherit}@keyframes rain-shimmer{0%{background-position:0% 0%}to{background-position:0% 100%}}.value-card--rain-light,.value-card--rain-moderate,.value-card--rain-heavy,.value-card--rain-violent{position:relative;overflow:hidden}.value-card--rain-light:after,.value-card--rain-moderate:after,.value-card--rain-heavy:after,.value-card--rain-violent:after{content:"";position:absolute;top:-100%;left:0;right:0;height:200%;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.1) 25%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.1) 75%,transparent 100%);background-size:100% 20px;animation:rain-shimmer 3s linear infinite;pointer-events:none}.value-card--rain-heavy:after,.value-card--rain-violent:after{animation-duration:2s;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.15) 25%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.15) 75%,transparent 100%);background-size:100% 15px}.value-card--rain-violent:after{animation-duration:1.5s}@keyframes hail-pulse{0%,99%{transform:scale(1);filter:brightness(1);box-shadow:inherit}49%,51%{transform:scale(1.015);filter:brightness(1.3);box-shadow:0 0 20px #fff6}50%{transform:scale(1.02);filter:brightness(1.4);box-shadow:0 0 25px #ffffff80}}.value-card--hail{animation:hail-pulse var(--hail-duration, 5s) ease-in-out infinite;animation-delay:var(--hail-delay, 0s)}@keyframes storm-wind{0%,to{transform:translate(0)}25%{transform:translate(-1px)}75%{transform:translate(1px)}}.value-card--storm{animation:storm-wind 3.5s ease-in-out infinite}.value-card--storm-with-rain{animation:storm-wind 3.5s ease-in-out infinite;position:relative;overflow:hidden}.value-card--storm-with-rain:after{content:"";position:absolute;top:-100%;left:0;right:0;height:200%;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.1) 25%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.1) 75%,transparent 100%);background-size:100% 20px;animation:rain-shimmer 2.5s linear infinite;pointer-events:none}.value-card--orkan-with-rain{animation:storm-wind 2.5s ease-in-out infinite;position:relative;overflow:hidden}.value-card--orkan-with-rain:after{content:"";position:absolute;top:-100%;left:0;right:0;height:200%;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.15) 25%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.15) 75%,transparent 100%);background-size:100% 15px;animation:rain-shimmer 1.75s linear infinite;pointer-events:none}.camera-snapshot-gallery{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.1);flex-shrink:0}.camera-snapshot-gallery__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.camera-snapshot-gallery__title{font-size:1rem;font-weight:600;color:var(--text-primary);margin:0}.camera-snapshot-gallery__actions{display:flex;gap:.5rem}.camera-snapshot-gallery__action-button{padding:.375rem .75rem;font-size:.875rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all .2s ease}.camera-snapshot-gallery__action-button:hover:not(:disabled){background:#ffffff26;border-color:#ffffff4d}.camera-snapshot-gallery__action-button:disabled{opacity:.5;cursor:not-allowed}.camera-snapshot-gallery__grid{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(5,1fr);gap:.75rem;min-height:0}.camera-snapshot-gallery__thumbnail-wrapper{position:relative;width:100%;aspect-ratio:16 / 9}.camera-snapshot-gallery__thumbnail-wrapper--selected{outline:2px solid var(--accent-blue, #3b82f6);outline-offset:2px;border-radius:var(--radius-sm)}.camera-snapshot-gallery__checkbox{position:absolute;top:.5rem;left:.5rem;z-index:10;width:1.25rem;height:1.25rem;cursor:pointer;accent-color:var(--accent-blue, #3b82f6)}.camera-snapshot-gallery__thumbnail{position:relative;width:100%;aspect-ratio:16 / 9;border:none;background:#0003;border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;padding:0;transition:all .2s ease}.camera-snapshot-gallery__thumbnail:hover{transform:scale(1.05);box-shadow:0 4px 12px #0f172a33;z-index:1}.camera-snapshot-gallery__thumbnail:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.camera-snapshot-gallery__thumbnail-image{width:100%;height:100%;object-fit:cover;display:block}.camera-snapshot-gallery__video-thumbnail-wrapper{position:relative;width:100%;height:100%;overflow:hidden}.camera-snapshot-gallery__thumbnail-video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.camera-snapshot-gallery__video-play-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0000004d;backdrop-filter:blur(2px);color:var(--text-primary);transition:all .2s ease}.camera-snapshot-gallery__thumbnail:hover .camera-snapshot-gallery__video-play-overlay{background:#0006}.camera-snapshot-gallery__video-play-overlay svg{filter:drop-shadow(0 4px 8px rgba(0,0,0,.4));transition:transform .2s ease}.camera-snapshot-gallery__thumbnail:hover .camera-snapshot-gallery__video-play-overlay svg{transform:scale(1.1)}.camera-snapshot-gallery__thumbnail-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);padding:.5rem;opacity:0;transition:opacity .2s ease;display:flex;justify-content:space-between;align-items:center}.camera-snapshot-gallery__thumbnail:hover .camera-snapshot-gallery__thumbnail-overlay{opacity:1}.camera-snapshot-gallery__delete-button{background:#dc2626cc;border:none;border-radius:50%;width:1.5rem;height:1.5rem;color:#fff;font-size:1.25rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;padding:0;flex-shrink:0}.camera-snapshot-gallery__delete-button:hover:not(:disabled){background:#dc2626;transform:scale(1.1)}.camera-snapshot-gallery__delete-button:disabled{opacity:.5;cursor:not-allowed}.camera-snapshot-gallery__thumbnail-time{color:#fff;font-size:.75rem;font-weight:500}.camera-snapshot-gallery__loading,.camera-snapshot-gallery__error,.camera-snapshot-gallery__empty{padding:2rem;text-align:center;color:var(--text-secondary)}.camera-snapshot-gallery__error{color:var(--accent-red, #dc2626)}.camera-snapshot-gallery__pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.camera-snapshot-gallery__pagination-button{padding:.5rem 1rem;font-size:.875rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all .2s ease}.camera-snapshot-gallery__pagination-button:hover:not(:disabled){background:#ffffff26;border-color:#ffffff4d}.camera-snapshot-gallery__pagination-button:disabled{opacity:.5;cursor:not-allowed}.camera-snapshot-gallery__pagination-info{font-size:.875rem;color:var(--text-secondary);min-width:200px;text-align:center}@media(max-width:768px){.camera-snapshot-gallery__grid{grid-template-columns:1fr;grid-template-rows:repeat(10,1fr)}.camera-snapshot-gallery__pagination{flex-direction:column;gap:.75rem}.camera-snapshot-gallery__pagination-info{min-width:auto}}.kamera-page{display:flex;flex-direction:column;gap:1.5rem;width:100%}.kamera-page__status,.kamera-page__status-info{display:flex;align-items:center;gap:1rem}.kamera-page__status-badge{padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.kamera-page__status-badge--online{background:#10b98126;color:#10b981;border:1px solid rgba(16,185,129,.3)}.kamera-page__status-badge--offline{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.kamera-page__status-model{font-size:.875rem;color:var(--text-secondary)}.kamera-page__loading,.kamera-page__error,.kamera-page__offline,.kamera-page__paused{padding:2rem}.kamera-page__offline{text-align:left}.kamera-page__offline-title{font-size:1.25rem;font-weight:600;color:var(--accent-red, #dc2626);margin:0 0 1rem}.kamera-page__offline-details{color:var(--text-secondary);margin:0 0 1rem;line-height:1.6}.kamera-page__offline-checklist{margin:1rem 0;padding-left:1.5rem;color:var(--text-secondary);line-height:1.8}.kamera-page__offline-checklist li{margin-bottom:.5rem}.kamera-page__error-message{color:var(--accent-red, #dc2626);margin-bottom:1rem}.kamera-page__retry-button{padding:.75rem 1.5rem;background:var(--accent-blue);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease}.kamera-page__retry-button:hover{background:#1d4ed8;transform:translateY(-1px);box-shadow:0 4px 12px #2563eb4d}.kamera-page__retry-button:active{transform:translateY(0)}.kamera-page__video-section{padding:0;overflow:hidden}.kamera-page__video-wrapper{position:relative;width:100%;padding-bottom:56.25%;background:#000}.kamera-page__video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;display:block}.kamera-page__stream-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000c;z-index:10;gap:1.5rem}.kamera-page__spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:var(--accent-blue, #2563eb);border-radius:50%;animation:kamera-spin 1s linear infinite}@keyframes kamera-spin{to{transform:rotate(360deg)}}.kamera-page__stream-loading-text{color:var(--text-primary, #ffffff);font-size:1rem;font-weight:500;margin:0;text-align:center}.kamera-page__grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.kamera-page__grid-item--hidden{visibility:hidden;pointer-events:none}.kamera-page__grid-item{min-height:400px;display:flex;flex-direction:column;padding:1.5rem}.kamera-page__camera-view{display:flex;flex-direction:column;height:100%;width:100%;align-items:stretch}.kamera-page__camera-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.1)}.kamera-page__camera-title{font-size:1.5rem;font-weight:600;margin:0}.kamera-page__error--inline,.kamera-page__offline--inline,.kamera-page__paused--inline{padding:1rem;margin:1rem 0;border-radius:8px}.kamera-page__error--inline{background-color:#ef44441a;border:1px solid rgba(239,68,68,.3)}.kamera-page__offline--inline{background-color:#9ca3af1a;border:1px solid rgba(156,163,175,.3)}.kamera-page__paused--inline{background-color:#3b82f61a;border:1px solid rgba(59,130,246,.3)}.kamera-page__grid-item .kamera-page__video-wrapper{position:relative;width:100%;flex:0 1 auto;min-height:300px;border-radius:8px;overflow:hidden;background-color:#0000004d;padding-bottom:0;display:flex;align-items:flex-start;justify-content:flex-start}.kamera-page__grid-item .kamera-page__video{position:relative;width:100%;height:100%;object-fit:contain;object-position:top center;display:block}@media(max-width:1024px),(max-height:800px)and (pointer:coarse){.kamera-page__grid{grid-template-columns:1fr;grid-template-rows:auto auto;gap:1.5rem}.kamera-page__grid-item{min-height:300px;padding:1rem}.kamera-page__camera-title{font-size:1.25rem}}#root{width:100%;margin:0;padding:0}:root{font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;color:var(--body-text-color);background-color:transparent;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--app-background);color:var(--body-text-color);transition:background .4s ease,color .4s ease}a{color:inherit;transition:color .2s ease}button{font-family:inherit}
