@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAn4ABMAAAAAEwQAAAmOAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGjQbgnQcLj9IVkFSgQEGYD9TVEFUgQIAgQovahEICok0h0ULIAAwhzoBNgIkAzwEIAWHJgeBDgwHG6QQUdRKTmoBFD8K42bniObKrG3LZFcMWZzFmrjTFhQ6TVTqPJcInrfrvzq3b2PGn1wwMiNYGTy9ViREYARlL1zAGcPdPqBt3gNWrfKthv4xnM+b9caw+wmjgEUVRjHXhS6jgCK6zf5HiWQacJpGdAgdrbV6g/Rf1BfxRqZVQnrxRVWSJb6RLFnyu0elilmjeoSQCKnxsmwLaddUMjnksriSYuuPl06EAl7KfAiWQjCUETz0zNZ3EII94CDQtzkMfZ/9IkkY8tZRZTDky5ZVwBAM+GYpdd4ZVAWYImnLkiTg48l79gGx3D+VBtLeyg8u7bJAd4uo0pFuQBFysE9C95l0W4Fkiao6GfrDbu77lVU7wk9cV3uqOsXmQiMkhVKl1ugjzUAJBSIkkVWHijkpkVSyUFsgVBuJMA0N+ZnXtyUv5yMigGdfQRmwL1AAjQ3YXG6iIFNSUdPQo8+AISPGAltBMDQRAtyf4ZspLlZkpyOVoMZPvFGWzvk8p5SUC/NWPMj6T2/Yas2EdlON5GkfdkeFwVGjta825H89NIenlLWAPAp5h1KDtRhCaAQWMsFKtEvOKpIhgLHlXPARokkgEGEOAkqxJRQpKYq4ezahIiLHP6hZpqMbV0pUF2vdvEimLEQ/iIUYLgYWs0VXGVlLTOPdaPmFfCC/XrtzqVo1ez7vz6+Kd2+7o11ZJ+4MreLbB5BKVGxobAq4jZYalZ5aX2CKJiwUuc9GNJyi4M8bGyKcdjSRrG4JohdF8buJfmQefbYYREnMFsOoiNliFDVxmRgL0XUmUMLqzW0A4gCQAhWGYCQpFNukwXhIkPMsbRI19ewtw8Cp2Wj/Ro5cM2OTAbJAvZ/L4opBXb9+UHscYuOKM/W8isgwN26Exexjizmfnlp9dE3hOSqdZ/F5QqbckIlPb+oKfXxd6hftJ7Sm/uyPYpONza84CRlMNk/uhOrLpyf53982++zRkXNu3g3VF8qFbx1+7fbHZ9DrB3VXWNSmhnT2vrwS1+1Z+kHGBaZIhnnvuLBTNDeA340D1DWu5/jEa9pVfl6+Jij+yo3EELNixXCLjr173Q5eDP7Y7/L4iQFHbjpaJLFoP4cCsYP6sAPL7gMHNg53yYjqxqTDrYqLDl5DzW/eTLjYxCvucprjI3yl2ykKowKUC2Ox2FJLFo6Fa1HBWLC2jMCIIBEmklkYhmkpmBhTm/LCvJAH5oGcMKcgFEP1xUdho8ANPa6RFD99/PN60fjj9eXy2Eex4B5MpmRapXidzFk1p4uLk3+hn6jAP9ovJcXPPwk8o/0ltizbdbnTprvx4PSxT0VZ3Xc772aN7RflgbXRYwc3hLNO+k878nxGwfuVM8m8Gs7WEoVGWLHwSpx4vNSHBCMNqJ4m15Kp/TfHHVkQd++eY7PGN4W5byTs+6Ft8Ozvb/D60btv37de8ER0mS3P/0sLW84qGjEVkwztPzz06eGUWwKLwPb0D/WFd3vltl2aP276KpM0JNz6AfnAnZ5ADlF2zVyZ2OkxHSMxWPMnSZLbbDR3F1UjPVqp4d68da13F1YZujdWw7271iecO2l9+/4p47Oztjck355/75wFOI+VdGDqbNGs+ISgxg3iB2jb2r+b0CWsNLHIM4sdv8SDSFBP/Oromz6FNCWw2iMTxV0R8QLyBTkpe0j5+pSSJOOTB5Mck/gh3IopuNQnhKj02t3FL80gGbEh89SZcwTxcYt5cZT/nMnB3uXfPy8BSpVMBuRx+ZhACGzDBmwHsJRAjhotOnzuj2wDz3ug2wOUAY2NgZln9/TK/enG/oE4rO1wxvGUFMAxsZ0qNjRC7hl9d17e7imbgDt6uJXhUobDg7v3RX/yRCKxgMhfyiKcZfbpk0wmCcdQlIAOHeakXLvCNt++WfKiozNqSZxxJotn+c0a7DdPsx7DPYgKIDxwwYUZDg9aJbxocTjcwovr9WAsVV32mQoiiIOCHc60Oltst9qCQYuCqN1yHo0Kj60OgI2OqmiuBUWrNA0NDhYCDcdpmMrs1fZZ0xdTzMr1HdPtIHstYhqaPDDA5YxUDx7J4fJiisBSDI/L6G/bn34GNy8Q2g044ZTulAdFLb0tI6NNxfj3DzLjWiNGxje1pz7aXOcNV68lDPEd2SXl6VfBuwmHzdf1gxFy1HvA7pD8I2BnnmyGw852Cg5XbgIdEEGE5UCzen5jTlG6JCU5iajlxVcsXvbcS0SAcg1dcesWJLVK8+hYHOYQ+Pjy+EyVGXP0aPTFagrV9E03hCQvYx+g47KGq+1GsLj8uBIyihNw33YUe8PNC4BOJ3Lm1AglLV3nCuvUdIP+v15tVGbWIwgxLVpPkfpthCGpTKG+oA/DQfsKKvxhScqaN6FuElAUtTKv2UYgOmQegsN/n7njHUju8wM4VTcm+Q8xfX9SFwjTzdVqu95UOWSIGOabH8OGBEba//8Yxl3GcPdP/dMBOoSX/0z5SZmBoLbaPs+9asaMpb36yknKaw6FqWZa6A5vDa02mhkOba1q6KtLV208xrkwmW5C4VD6n2fvRjADy2qDYYnNy+H10Fq0LMbNzS863gkO7iQ8eC48/Ny5m59tOcEso3u7Qg3yrqDL6eKXwJAuWnhylfbWrRObe66rzX59+XDtzusnL66dI/86ArmtLlzED860Ef3bFPV78OX/zFTA11fcBn2Vntb7qiGBSgLBHyuv/uEaqqoTgSpOyjlzh86me1Vriv7i9rLPLvtghWmSnblRbAsBJL/4dScSQTBxOivHMO5QvBBY0iheJvfwWLxLOGzYKZyM4zVc2Cll46zEpeUV4MqGEWZj22SdOxhGAjgs9AEnfT+RoiMfcDb0GS5NncKVxju4Nt/mRk13O9Gz3FLct5oCD6wkwUNrCfHIUg6SMf8LwQGyVaBUqpLPW5BaMpRshEpl8nS1qw5dgnzlik8QBXmdy5UrIH74heTKZKMSilQso4hsRiGraQZRzxpNGqlEJMsXuAU7GlcR8mWSykUpVkWGyIf0a8v4qEQp5CtGsMiZa+4ESYQy+WilCiguHzxMXO54ogShooTV2bj2z1zL6DYSoImoQ8lFUWxMLBNQQgLkV2tHYgUoIbkuREz+fJHKxxWBcnvu3KQppFCxLkguB1NyVSp/TknRvNwYlCdbblWu3ze6owHdWluhE5tgQ6ej2SV65CijijoaRfSiH4Nqz1OpfEW+WeI/oU0ly60zkV9YzOQSYtZVEGYmrysTZAJkY4qZtIBD9/LYTIK7Nww3vMiYBwA=) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Manrope Variable,Manrope,system-ui,sans-serif;color:#f5f7f3;background:#0c1112;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 14% 5%,rgba(50,97,76,.18),transparent 27rem),linear-gradient(145deg,#111819,#0a0e0f 75%)}button,a{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid rgba(190,231,126,.8);outline-offset:3px}.page-shell{position:relative;isolation:isolate;width:min(100%,1080px);min-height:100vh;margin:0 auto;padding:30px clamp(20px,5vw,64px) 28px;overflow:hidden}.ambient{position:absolute;z-index:-1;border-radius:50%;filter:blur(4px);pointer-events:none}.ambient-one{width:320px;height:320px;top:18%;right:-180px;background:#aedb6b0f}.ambient-two{width:240px;height:240px;bottom:-140px;left:-110px;background:#3f7b6117}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{display:inline-flex;align-items:center;gap:11px;color:#f5f7f3;font-size:17px;font-weight:720;text-decoration:none}.brand-mark{display:grid;width:38px;height:38px;place-items:center;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:#ffffff0e}.brand-mark svg{width:19px;fill:#bfe779}.user-menu{display:flex;align-items:center;gap:10px}.user-label{max-width:140px;overflow:hidden;color:#8f9a94;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.settings-button,.logout-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:7px 12px;border:1px solid rgba(255,255,255,.09);border-radius:11px;color:#c8d0cb;background:#ffffff0a;font-size:12px;font-weight:700;cursor:pointer;transition:border-color .18s,background .18s,color .18s}.settings-button svg{width:16px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.settings-button.active{border-color:#bee77e47;color:#bfe779;background:#bee77e12}.settings-button:hover:not(:disabled),.logout-button:hover:not(:disabled){border-color:#bee77e47;color:#eef3eb;background:#ffffff13}.settings-button:disabled,.logout-button:disabled{opacity:.6;cursor:wait}.hero{margin:clamp(70px,11vh,120px) 0 30px}.eyebrow{margin:0 0 12px;color:#a8d96b;font-size:12px;font-weight:760;letter-spacing:.15em;text-transform:uppercase}.hero h1{margin:0;font-size:clamp(38px,8vw,64px);font-weight:620;letter-spacing:-.05em;line-height:1}.hero>p:last-child{margin:15px 0 0;color:#8e9993;font-size:clamp(16px,2vw,19px)}.login-mode .auth-hero{width:min(100%,520px);margin:clamp(34px,6vh,62px) auto 20px}.login-mode .auth-hero h1{font-size:clamp(38px,7vw,52px)}.login-mode .auth-hero>p:last-child{margin-top:10px}.control-card{width:min(100%,640px);padding:clamp(22px,4vw,34px);border:1px solid rgba(255,255,255,.085);border-radius:28px;background:linear-gradient(145deg,#1e2726f0,#141b1cf0);box-shadow:0 28px 90px #00000052,inset 0 1px #ffffff09}.dashboard-card{margin-top:clamp(48px,8vh,82px)}.login-card,.auth-skeleton{width:min(100%,520px);margin:0 auto}.login-card{padding:clamp(24px,4vw,32px)}.login-heading{display:flex;align-items:center;gap:15px;margin-bottom:20px}.login-heading h2{margin:0;font-size:22px;font-weight:650;letter-spacing:-.025em}.auth-icon{display:grid;flex:0 0 50px;height:50px;place-items:center;border-radius:16px;color:#bde477;background:#addb671a}.auth-icon svg{width:25px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.field-label{display:block;margin:13px 2px 7px;color:#aeb8b2;font-size:14px;font-weight:680}.auth-input{width:100%;min-height:50px;padding:13px 15px;border:1px solid rgba(255,255,255,.11);border-radius:14px;outline:none;color:#f5f7f3;background:#080d0e94;font:inherit;font-size:16px;transition:border-color .18s,box-shadow .18s,background .18s}.auth-input:hover{border-color:#ffffff2e}.auth-input:focus{border-color:#bee77ead;background:#080d0ec7;box-shadow:0 0 0 4px #bee77e17}.login-button{display:flex;width:100%;min-height:52px;margin-top:20px;align-items:center;justify-content:center;gap:9px;border:1px solid #b9e276;border-radius:15px;color:#17200f;background:#b9e276;box-shadow:0 10px 30px #aad86321;font-weight:760;cursor:pointer;transition:transform .18s,filter .18s}.login-button:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.04)}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.68;cursor:wait}.login-button svg{width:21px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.auth-feedback{margin-top:16px;font-size:14px;line-height:1.45;text-align:center}.card-heading{display:flex;align-items:center;gap:16px}.device-icon{display:grid;flex:0 0 50px;height:50px;place-items:center;border-radius:16px;color:#869089;background:#111718;transition:color .35s,background .35s}.device-icon.open{color:#bde477;background:#addb671a}.device-icon svg{width:27px;fill:none;stroke:currentColor;stroke-width:1.7}.room-label{margin:0 0 4px;color:#87928c;font-size:12px;font-weight:650}.card-heading h2{margin:0;font-size:22px;font-weight:650;letter-spacing:-.025em}.windows-grid{--window-grid-gap: 14px;--door-window-height: 184px;--regular-window-height: 140px;display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:var(--window-grid-gap);margin:28px 0}.window-panel{min-width:0}.window-panel-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0 2px 9px}.window-panel-heading strong{overflow:hidden;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.window-panel-heading span{flex:0 0 auto;color:#7f8b84;font-size:12px}.visual-window{position:relative;height:var(--regular-window-height);overflow:hidden;border-radius:18px;background:#151c1d;box-shadow:inset 0 0 0 1px #ffffff0f}.visual-window.door-window{height:var(--door-window-height)}.weather-scene{position:absolute;z-index:0;isolation:isolate;inset:6px;overflow:hidden;border-radius:13px}.weather-panorama{position:absolute;top:0;width:calc(200% + var(--window-grid-gap) + 12px);height:calc(var(--door-window-height) - 12px);overflow:hidden;background:#9ba7a5}.weather-scene.pane-left .weather-panorama{left:0}.weather-scene.pane-right .weather-panorama{right:0}.courtyard-view{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 48%;transform:scale(1.005);transition:filter 1.2s ease}.weather-scene.weather-clear.is-day .courtyard-view{filter:brightness(1.08) saturate(1.04) contrast(1.02)}.weather-scene.weather-partly-cloudy.is-day .courtyard-view{filter:brightness(1.02) saturate(.96)}.weather-scene.weather-overcast.is-day .courtyard-view{filter:brightness(.91) saturate(.72) contrast(.96)}.weather-scene.weather-rain.is-day .courtyard-view{filter:brightness(.73) saturate(.56) contrast(.96) hue-rotate(5deg)}.weather-scene.weather-snow.is-day .courtyard-view{filter:brightness(1.08) saturate(.38) contrast(.91)}.weather-scene.weather-fog.is-day .courtyard-view{filter:brightness(1.02) saturate(.42) contrast(.68)}.weather-scene.weather-thunder .courtyard-view{filter:brightness(.58) saturate(.44) contrast(1.03) hue-rotate(7deg)}.weather-scene.is-night .courtyard-view{filter:brightness(.25) saturate(.48) contrast(1.08) hue-rotate(10deg)}.weather-scene.weather-loading .courtyard-view{filter:brightness(.88) saturate(.68)}.weather-atmosphere{position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,#549dcb2e,#dae6e106 62%,#ffefbd09);mix-blend-mode:color;transition:background 1.2s ease,opacity 1.2s ease}.weather-scene.is-night .weather-atmosphere{background:linear-gradient(180deg,#040d1ce6,#071525b8 58%,#0e1c23c7);mix-blend-mode:multiply}.weather-scene.weather-overcast.is-day .weather-atmosphere{background:#6474781f;mix-blend-mode:multiply}.weather-scene.weather-rain.is-day .weather-atmosphere{background:linear-gradient(180deg,#283e4e6b,#38474840);mix-blend-mode:multiply}.weather-scene.weather-snow.is-day .weather-atmosphere{background:#e0ecef3b;mix-blend-mode:screen}.weather-scene.weather-fog.is-day .weather-atmosphere{background:#dce3e152;mix-blend-mode:screen}.weather-scene.weather-thunder .weather-atmosphere{background:linear-gradient(180deg,#0f192994,#1a252866);mix-blend-mode:multiply}.stars{position:absolute;z-index:3;inset:0;opacity:0;transition:opacity 1s ease}.is-night .stars{opacity:.75}.weather-overcast .stars,.weather-rain .stars,.weather-thunder .stars,.weather-fog .stars{opacity:0}.stars i{position:absolute;top:14%;left:var(--particle-x);width:2px;height:2px;border-radius:50%;background:#e9f1ed;box-shadow:0 0 4px #e9f1edcc;animation:star-pulse 2.8s ease-in-out infinite alternate;animation-delay:var(--particle-delay)}.stars i:nth-child(3n){top:32%;width:1px;height:1px}.stars i:nth-child(3n+1){top:8%}.stars i:nth-child(4n){top:46%}.rain-layer,.snow-layer{position:absolute;z-index:7;inset:0;overflow:hidden;opacity:0}.weather-rain .rain-layer,.weather-thunder .rain-layer{opacity:.9}.rain-layer i{position:absolute;top:-16%;left:var(--particle-x);width:1px;height:16px;border-radius:50%;background:linear-gradient(transparent,#cbe2eacc);transform:rotate(10deg);animation:rain-fall var(--particle-duration) linear infinite;animation-delay:var(--particle-delay)}.weather-snow .snow-layer{opacity:.9}.snow-layer i{position:absolute;top:-8%;left:var(--particle-x);width:4px;height:4px;border-radius:50%;background:#f6faf8f0;box-shadow:0 0 4px #ffffff80;animation:snow-fall calc(var(--particle-duration) + 2.8s) linear infinite;animation-delay:var(--particle-delay)}.snow-layer i:nth-child(3n){width:6px;height:6px;opacity:.65}.fog-layer{position:absolute;z-index:8;left:-20%;width:140%;height:30%;border-radius:50%;background:#dde2de75;filter:blur(10px);opacity:0}.fog-back{top:34%}.fog-front{top:55%;animation:fog-drift 10s ease-in-out infinite alternate}.weather-fog .fog-layer{opacity:.82}.lightning{position:absolute;z-index:9;inset:0;pointer-events:none;opacity:0;background:#e2ecffbf}.weather-thunder .lightning{animation:lightning-flash 7s infinite}.window-glass{position:absolute;z-index:10;inset:0;background:linear-gradient(112deg,rgba(255,255,255,.12),transparent 22%,transparent 72%,rgba(255,255,255,.035)),linear-gradient(180deg,rgba(255,255,255,.025),transparent 55%);pointer-events:none}@keyframes star-pulse{to{opacity:.35;transform:scale(.72)}}@keyframes rain-fall{to{translate:-14px 150px}}@keyframes snow-fall{50%{translate:9px 75px}to{translate:-5px 155px}}@keyframes fog-drift{to{translate:17px 2px}}@keyframes lightning-flash{0%,88%,92%,to{opacity:0}89%,91%{opacity:.45}90%{opacity:.08}}.blind{position:absolute;z-index:2;inset:6px;display:flex;flex-direction:column;gap:3px;padding:4px;overflow:hidden;border-radius:13px;background:#263131;transition:transform .25s linear;will-change:transform}.balcony-assembly .balcony-door-blind{right:auto;width:calc(33.333% - 9px);border-radius:13px 0 0 13px}.balcony-assembly .tall-window-blind{left:calc(33.333% + 3px);border-radius:0 13px 13px 0}.blind span{flex:1;min-height:4px;border-radius:2px;background:linear-gradient(#3d4947,#2c3736);box-shadow:0 1px #ffffff0f}.window-frame{position:absolute;z-index:3;inset:0;border:6px solid #222c2c;border-radius:18px;box-shadow:inset 0 0 0 1px #ffffff0f;pointer-events:none}.window-frame:after{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 3px);width:6px;background:#222c2c}.window-frame.balcony-assembly-frame:after{left:calc(33.333% - 3px)}.window-state{margin:9px 2px 0;color:#839089;font-size:12px}.window-state.moving{color:#b9e276}.state-row{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:20px}.state-caption{display:block;margin-bottom:4px;color:#829089;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.08em}.state-row strong{font-size:18px;font-weight:650}.status{display:inline-flex;align-items:center;gap:7px;color:#8f9a94;font-size:11px;text-align:right}.status span{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:#d3a75b}.status.confirmed span{background:#a9dc65}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.action-button{display:flex;align-items:center;justify-content:center;gap:9px;min-height:57px;border:1px solid rgba(255,255,255,.09);border-radius:16px;color:#c9d0cc;background:#ffffff09;font-weight:680;cursor:pointer;transition:transform .18s,background .18s,border-color .18s,color .18s}.action-button:hover:not(:disabled){transform:translateY(-2px);background:#ffffff12}.action-button:active:not(:disabled){transform:translateY(0)}.action-button:disabled{opacity:.6;cursor:wait}.action-button svg{width:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.action-button.selected{color:#17200f;border-color:#b9e276;background:#b9e276;box-shadow:0 8px 28px #aad86321}.feedback{margin:15px 2px 0;font-size:12px}.feedback.success{color:#b7d98a}.feedback.error{color:#f0a39b}.last-change{margin:18px 0 0;color:#66736c;font-size:11px;text-align:center}.settings-card{margin-top:18px}.settings-card.timing-card{margin-top:clamp(42px,7vh,70px)}.calibration-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.calibration-heading h2{margin:0;font-size:22px;font-weight:650;letter-spacing:-.025em}.sync-badge{display:inline-flex;flex:0 0 auto;align-items:center;min-height:28px;padding:6px 10px;border:1px solid rgba(185,226,118,.22);border-radius:999px;color:#b9e276;background:#b9e27614;font-size:10px;font-weight:760;letter-spacing:.035em;text-transform:uppercase}.sync-badge.pending{border-color:#d3a75b40;color:#ddb873;background:#d3a75b14}.calibration-loading,.calibration-empty{margin-top:24px;color:#8f9a94;font-size:14px;line-height:1.55}.calibration-empty p{margin:0}.calibration-form{margin-top:24px}.calibration-intro{margin:0 0 25px;color:#8f9a94;font-size:13px;line-height:1.55}.calibration-control+.calibration-control{margin-top:23px}.range-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.range-heading label{color:#c9d0cc;font-size:13px;font-weight:680}.number-field{display:flex;align-items:center;min-width:78px;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:#080d0e7a}.number-field:focus-within{border-color:#bee77e9e;box-shadow:0 0 0 3px #bee77e12}.number-field input{width:52px;padding:8px 3px 8px 10px;border:0;outline:0;color:#f5f7f3;background:transparent;font:inherit;font-size:14px;font-weight:700;text-align:right}.number-field span{padding-right:9px;color:#738079;font-size:12px}.number-field.duration-field{min-width:104px}.number-field.duration-field input{width:69px}.range-input{width:100%;height:22px;margin:0;accent-color:#b9e276;cursor:pointer}.range-input:disabled{opacity:.55;cursor:wait}.range-input::-webkit-slider-runnable-track{height:5px;border-radius:999px;background:#34413d}.range-input::-webkit-slider-thumb{width:19px;height:19px;margin-top:-7px;border:3px solid #1c2524;border-radius:50%;appearance:none;background:#b9e276;box-shadow:0 2px 8px #00000059}.range-input::-moz-range-track{height:5px;border:0;border-radius:999px;background:#34413d}.range-input::-moz-range-thumb{width:15px;height:15px;border:3px solid #1c2524;border-radius:50%;background:#b9e276;box-shadow:0 2px 8px #00000059}.calibration-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.secondary-button,.save-button{min-height:44px;padding:11px 15px;border-radius:13px;font:inherit;font-size:13px;font-weight:730;cursor:pointer;transition:transform .18s,border-color .18s,background .18s,opacity .18s}.secondary-button{border:1px solid rgba(255,255,255,.1);color:#b7c0bb;background:#ffffff08}.save-button{border:1px solid #b9e276;color:#17200f;background:#b9e276}.secondary-button:hover:not(:disabled),.save-button:hover:not(:disabled){transform:translateY(-1px)}.secondary-button:hover:not(:disabled){border-color:#fff3;background:#ffffff0f}.secondary-button:disabled,.save-button:disabled{opacity:.42;cursor:not-allowed}.calibration-limits{margin:16px 0 0;color:#637069;font-size:10px;text-align:right}.settings-weather-source{margin:22px 0 0;color:#59655f;font-size:10px;text-align:center}.settings-weather-source a{color:inherit;text-underline-offset:2px}.settings-weather-source a:hover{color:#89958e}.timing-form{margin-top:24px}.timing-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.timing-field{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px;padding:15px;border:1px solid rgba(255,255,255,.075);border-radius:15px;background:#080d0e52}.timing-field>span:first-child{display:grid;min-width:0;gap:3px}.timing-field strong{font-size:14px;font-weight:700}.timing-field small{color:#7f8b84;font-size:12px}.skeleton-card{min-height:450px}.skeleton{border-radius:12px;background:linear-gradient(90deg,#202a29,#293432,#202a29);background-size:200% 100%;animation:shimmer 1.6s infinite}.skeleton-icon{width:50px;height:50px}.skeleton-title{width:180px;height:24px;margin-top:22px}.skeleton-line{width:100%;height:170px;margin-top:28px}.skeleton-line.compact{height:150px}@keyframes shimmer{to{background-position:-200% 0}}.empty-card{text-align:center}.empty-icon{display:grid;width:52px;height:52px;margin:0 auto 18px;place-items:center;border-radius:50%;color:#f0a39b;background:#f0a39b14;font-weight:800}.empty-card h2{margin:0 0 8px}.empty-card p{color:#8f9a94}.retry-button{margin-top:10px;padding:11px 18px;border:0;border-radius:12px;color:#17200f;background:#b9e276;font-weight:700;cursor:pointer}@media(min-width:820px){.control-card{margin-left:auto;margin-right:auto}.hero{width:min(100%,640px);margin-left:auto;margin-right:auto}}@media(max-width:520px){.page-shell{padding-top:20px}.user-label{display:none}.settings-button{width:36px;padding:7px}.settings-button-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.logout-button{padding:7px 10px}.hero{margin-top:64px}.login-mode .auth-hero{margin-top:58px}.dashboard-card{margin-top:42px}.windows-grid{--window-grid-gap: 10px;--door-window-height: 168px;--regular-window-height: 128px}.window-panel-heading{align-items:flex-start;flex-direction:column;gap:2px}.state-row{align-items:flex-start;flex-direction:column;gap:10px}.status{text-align:left}.actions{grid-template-columns:1fr}.calibration-heading{align-items:flex-start;flex-direction:column;gap:12px}.calibration-actions{display:grid;grid-template-columns:1fr}.secondary-button{order:2}.calibration-limits{text-align:left}.timing-fields{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
