:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{text-align:center;box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.btn-primary,.btn-secondary{cursor:pointer;border-radius:8px;padding:8px 14px;font-family:inherit;font-size:.9rem;font-weight:600}.btn-primary{background:var(--accent);color:#fff;border:none}.btn-secondary{border:1px solid var(--border);color:var(--text-h);background:0 0}.btn-primary:disabled,.btn-secondary:disabled{opacity:.6;cursor:default}.bottom-nav{padding-bottom:env(safe-area-inset-bottom);opacity:0;pointer-events:none;z-index:20;background:#1e293b;border-top:1px solid #334155;transition:transform .22s,opacity .22s;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.bottom-nav--visible{opacity:1;pointer-events:auto;transform:translateY(0)}.bottom-nav a{text-align:center;color:#94a3b8;flex:1;padding:12px 4px 10px;font-size:.78rem;font-weight:600;text-decoration:none}.bottom-nav a.active{color:#60a5fa}@media (hover:hover){.bottom-nav a:hover{color:#cbd5f5}}.top-bar{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));z-index:21;gap:8px;display:flex;position:fixed;top:0;right:0}.top-bar-pills{gap:8px;display:flex}.top-bar-pills a,.top-bar-pills button.logout-pill{color:#93c5fd;white-space:nowrap;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:999px;align-items:center;gap:5px;width:auto;padding:7px 14px;font-family:inherit;font-size:.78rem;font-weight:600;text-decoration:none;display:inline-flex;box-shadow:0 2px 8px #00000059}.top-bar-pills a:active,.top-bar-pills button.logout-pill:active{background:#334155}.top-bar-menu-btn{display:none}@media (width<=640px){.top-bar-pills{display:none}.top-bar-menu-btn{color:#93c5fd;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;padding:0;display:inline-flex;box-shadow:0 2px 8px #00000059}.top-bar-menu-btn:active,.top-bar-menu-btn[aria-expanded=true]{background:#334155}}.top-bar-menu{background:#1e293b;border:1px solid #334155;border-radius:12px;flex-direction:column;gap:4px;min-width:170px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000073}.top-bar-menu a,.top-bar-menu button{color:#93c5fd;text-align:left;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;width:100%;padding:9px 10px;font-family:inherit;font-size:.85rem;font-weight:600;text-decoration:none;display:flex}.top-bar-menu a:active,.top-bar-menu button:active{background:#334155}.app-shell{position:relative}.scroll-sentinel{pointer-events:none;width:1px;height:1px;position:absolute;top:40px;left:0}.photo-hero{background:var(--code-bg);width:100vw;height:100svh;margin-left:calc(50% - 50vw);position:relative;overflow:hidden}.photo-hero__grid{box-sizing:border-box;grid-template-rows:repeat(5,1fr);grid-template-columns:repeat(6,1fr);gap:3px;width:100%;height:100%;padding:3px;display:grid}.photo-hero__tile{background:linear-gradient(100deg, var(--code-bg) 40%, var(--border) 50%, var(--code-bg) 60%);background-size:250% 100%;border-radius:3px;animation:1.8s ease-in-out infinite photo-hero-shimmer;position:relative;overflow:hidden}@keyframes photo-hero-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.photo-hero__layer{display:block;position:absolute;inset:0}.photo-hero__layer img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .4s;display:block}.photo-hero__layer--loaded img{opacity:1}.photo-hero__layer--incoming{opacity:0;animation:1.5s cubic-bezier(.4,0,.2,1) forwards photo-hero-fade-in}@keyframes photo-hero-fade-in{0%{opacity:0;transform:scale(1.045)}to{opacity:1;transform:scale(1)}}@media (hover:hover){.photo-hero__layer img{transition:transform .4s}.photo-hero__tile:hover .photo-hero__layer img{transform:scale(1.04)}}@media (width<=900px){.photo-hero__grid{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr)}.photo-hero__tile:nth-child(n+17){display:none}}@media (width<=600px){.photo-hero{height:auto;min-height:100svh}.photo-hero__grid{grid-template-rows:none;grid-template-columns:repeat(2,1fr);grid-auto-rows:160px;height:auto}.photo-hero__tile:nth-child(n+11){display:none}}@media (prefers-reduced-motion:reduce){.photo-hero__layer--incoming{opacity:0;animation:none}.photo-hero__tile{animation:none}.photo-hero__layer img{transition:none}}.photo-hero--empty{color:var(--text);justify-content:center;align-items:center;display:flex}.content{text-align:center;flex-direction:column;align-items:center;display:flex}.intro{flex-direction:column;gap:.5rem;max-width:640px;margin:0 auto;padding:64px 24px;display:flex}.breadcrumbs{flex-wrap:wrap;align-items:baseline;gap:2px;padding:20px 16px 14px;font-size:.9rem;display:flex}@media (width>=700px){.breadcrumbs{padding:28px 24px 18px}}.breadcrumbs a{color:#94a3b8;text-decoration:none}@media (hover:hover){.breadcrumbs a:hover{color:#60a5fa}}.breadcrumb-current{color:#f1f5f9;font-weight:600}.breadcrumb-sep{color:#475569;margin:0 4px}.thumb{aspect-ratio:1;color:#64748b;background:#1e293b;border-radius:10px;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.thumb-media{background:#0f172a;position:relative}.thumb-media img{object-fit:cover;width:100%;height:100%;display:block}.thumb-play-badge{color:#fff;background:radial-gradient(circle,#00000059 0%,#0000 65%);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.folder-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:14px;margin:0;padding:0 16px 96px;list-style:none;display:grid}@media (width>=700px){.folder-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:18px;padding:0 24px 96px}}.grid-tile{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:6px;padding:0;text-decoration:none;display:flex}.grid-tile-name{color:#cbd5e1;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}@media (hover:hover){.grid-tile:hover .thumb{outline-offset:-2px;outline:2px solid #60a5fa}}.image-view{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.image-view img{object-fit:contain;touch-action:none;-webkit-user-drag:none;will-change:transform;width:100%;height:100%}.video-view{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.video-view video{max-width:100%;max-height:100%}.pdf-view{flex-direction:column;width:100%;height:100%;display:flex}.pdf-frame{background:#fff;border:none;flex:1}.pdf-fallback-link{text-align:center;color:#93c5fd;background:#0f172a;padding:10px;font-size:.85rem;text-decoration:none}.viewer-overlay{z-index:100;overscroll-behavior:contain;background:#000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.viewer-close{top:calc(env(safe-area-inset-top) + 12px);right:calc(env(safe-area-inset-right) + 12px);z-index:10;color:#fff;cursor:pointer;background:#0f172a8c;border:none;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;display:flex;position:absolute}@media (hover:hover){.viewer-close:hover{background:#0f172acc}}.harddrive-screen{color:#e2e8f0;background:#0f172a;min-height:calc(100vh + 80px)}.harddrive-message{color:#94a3b8;max-width:480px;padding:32px 24px}.harddrive-message-error{color:#fca5a5}.card{border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow);text-align:left;border-radius:16px;overflow:hidden}.card+.card{margin-top:16px}.card-header{align-items:center;gap:8px;padding:4px;display:flex}.card-header-toggle{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:14px 12px;display:flex}.card-header-text b{color:var(--text-h);font-size:17px}.card-summary{color:var(--text);margin-top:2px;font-size:14px;display:block}.card-chevron-btn{cursor:pointer;color:var(--text);background:0 0;border:none;padding:8px 12px}.card-chevron{transition:transform .15s;display:inline-block}.card-chevron.open{transform:rotate(180deg)}.card-body{border-top:1px solid var(--border);padding:16px 16px 18px}.power-flow{--flow-grid:#2a78d6;--flow-solar:#eb6834;--flow-battery:#1baf7a;margin-top:24px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .power-flow{--flow-grid:#3987e5;--flow-solar:#d95926;--flow-battery:#199e70}}:root[data-theme=dark] .power-flow{--flow-grid:#3987e5;--flow-solar:#d95926;--flow-battery:#199e70}.power-flow svg{width:100%;height:auto;overflow:visible}.flow-line-base{stroke-width:2px;opacity:.25}.flow-line-dashes{stroke-width:2.5px;stroke-linecap:round;stroke-dasharray:5 9;animation:1.1s linear infinite flow-travel}.flow-line-idle .flow-line-base{opacity:.12}@keyframes flow-travel{0%{stroke-dashoffset:0}to{stroke-dashoffset:-28px}}.flow-node circle{fill:var(--bg);stroke-width:2px}.flow-node-solar circle{stroke:var(--flow-solar);color:var(--flow-solar)}.flow-node-grid circle{stroke:var(--flow-grid);color:var(--flow-grid)}.flow-node-battery circle{stroke:var(--flow-battery);color:var(--flow-battery)}.flow-node-home circle{stroke:var(--text-h);color:var(--text-h)}.flow-label{text-anchor:middle;fill:var(--text-h);font-size:12px;font-weight:600}.flow-value{text-anchor:middle;fill:var(--text);font-size:11px;font-family:var(--mono)}@media (prefers-reduced-motion:reduce){.flow-line-dashes{animation:none}}.poll-interval-control{flex:auto;min-width:0;max-width:100%}.poll-interval-control-row{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;display:flex}.poll-interval-hint{color:var(--text);opacity:.75;text-align:left;margin:4px 0 0;font-size:11px}.poll-interval-label{color:var(--text);white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex}.poll-interval-input{border:1px solid var(--border);background:var(--bg);width:70px;color:var(--text-h);font:inherit;border-radius:6px;padding:6px 8px}.save-indicator{color:var(--text);align-items:center;gap:5px;min-width:68px;font-size:12px;display:inline-flex}.save-indicator-saved{color:#1baf7a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .save-indicator-saved{color:#199e70}}:root[data-theme=dark] .save-indicator-saved{color:#199e70}.save-indicator-error{color:#dc2626}.set-work-mode-hint{color:var(--text);margin:0 0 12px;font-size:13px}.set-work-mode-row{gap:10px;display:flex}.set-work-mode-row select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;flex:1;padding:8px 10px}.set-work-mode-error{color:#dc2626;margin:10px 0 0;font-size:13px}.automation-message{color:var(--text);margin:0 0 12px;font-size:14px}.automation-message-error{color:#dc2626}.automation-controls-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.switch-row{color:var(--text-h);cursor:pointer;align-items:center;gap:8px;font-size:15px;display:flex}.automation-hint{color:var(--text);margin:0 0 16px;font-size:13px}.automation-summary{border:1px solid var(--border);border-radius:12px;margin-bottom:16px;padding:12px}.automation-summary-headline{color:var(--text-h);margin:0 0 8px;font-size:14px}.automation-summary-list{flex-direction:column;gap:4px;margin:0;padding-left:20px;display:flex}.automation-summary-line{color:var(--text);font-size:13px}.automation-summary-note{color:#dc2626;font-style:italic}.automation-summary-footnote{color:var(--text);opacity:.7;margin:8px 0 0;font-size:12px}.rule-list{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.rule-row{border:1px solid var(--border);border-radius:12px;padding:12px}.rule-row-disabled{opacity:.55}.rule-row-conflict{border-color:#dc2626}.rule-conflict-message{color:#dc2626;margin:8px 0 0;font-size:12px}.rule-row-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.rule-checkbox{color:var(--text-h);cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.rule-row-move{gap:6px;display:flex}.btn-small{padding:4px 8px;font-size:12px}.rule-row-fields{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rule-sentence{color:var(--text);white-space:nowrap;font-size:14px}.rule-row-fields input[type=time],.rule-row-fields select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:6px;padding:6px 8px;font-size:14px}.rule-percent-input{border:1px solid var(--border);background:var(--bg);width:56px;color:var(--text-h);font:inherit;border-radius:6px;padding:6px 8px;font-size:14px}.automation-actions{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.automation-add-buttons{flex-wrap:wrap;gap:8px;display:flex}.battery-status-top{flex-direction:column;gap:12px;padding-left:92px;display:flex}.battery-status{flex-direction:column;gap:8px;display:flex}.battery-status-headline{justify-content:space-between;align-items:center;gap:20px;display:flex}.battery-status-details{flex-direction:column;gap:6px;display:flex}.battery-status-percent{color:var(--text-h);font-size:32px;font-weight:600;line-height:1}.battery-status-row{color:var(--text);justify-content:space-between;gap:12px;font-size:14px;display:flex}.battery-status-row b{color:var(--text-h);font-weight:500}.battery-message{color:var(--text);margin:0;font-size:14px}.battery-message-error{color:#dc2626}.smart-home-screen{min-height:calc(100vh + 80px);padding:calc(64px + env(safe-area-inset-top)) 16px 96px;box-sizing:border-box;text-align:left;width:100%;max-width:640px;margin:0 auto}.smart-home-screen h1{text-align:left;margin:0 0 4px;font-size:28px}.smart-home-intro{color:var(--text);margin:0 0 20px}.smart-home-cards{flex-direction:column;display:flex}.login-screen{justify-content:center;align-items:center;width:100%;min-height:100svh;padding:24px;display:flex}.login-card{border:1px solid var(--border);background:var(--bg);width:100%;max-width:340px;box-shadow:var(--shadow);text-align:center;box-sizing:border-box;border-radius:16px;padding:24px}.login-card h1{letter-spacing:normal;margin:0 0 6px;font-size:24px}.login-card p{color:var(--text);margin-bottom:16px;font-size:.9rem}.login-card form{text-align:left}.login-card input[type=password]{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);border-radius:8px;margin-bottom:10px;padding:10px 12px;font-family:inherit;font-size:.95rem}.login-card button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:10px 16px;font-size:.95rem;font-weight:600}.login-card button:disabled{opacity:.6;cursor:default}.login-error{color:#dc2626;font-size:.85rem;margin:-4px 0 10px!important}
