@font-face{font-family:AaNemomomo;src:url(/fonts/AaNemomomo.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block}:root{--serif:"AaNemomomo","Sora","Figtree",sans-serif;--sans:"AaNemomomo","Figtree","Pretendard",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;--display:"AaNemomomo","Sora","Figtree",sans-serif;--bg:#f2ede1;--card:#fbf8f0;--border:#ded4bf;--border-strong:#c7ba9e;--text:#221d16;--muted:#6d6454;--faint:#948a76;--shadow:0 1px 2px #3c301c0f;--shadow-hover:0 4px 14px #3c301c1a;--brand:#2f6b45;--brand-strong:#24583a;--header-bg:#1f4a30;--header-text:#ffffff;--header-btn-bg:rgba(255,255,255,0.15);--header-btn-hover:rgba(255,255,255,0.25);--header-h:64px;--danger:#9b2f2f;--on-accent:#b8860b}[data-theme=dark]{--bg:#16130d;--card:#1e1a12;--border:#342e21;--border-strong:#4a4230;--text:#eee6d4;--muted:#a99f89;--faint:#7d7562;--shadow:0 1px 2px #0006;--shadow-hover:0 6px 18px #00000080;--brand:#6fae82;--brand-strong:#5b9a6e;--header-bg:#0f2418;--header-text:#e8f0ea;--header-btn-bg:rgba(255,255,255,0.08);--header-btn-hover:rgba(255,255,255,0.14);--danger:#d18585;--on-accent:#d4a017}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,html{min-height:100%;color:var(--text);background:var(--bg);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none;margin:0;padding:0}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ptrIndicator{position:fixed;z-index:50;top:calc(var(--header-h) + env(safe-area-inset-top, 0px));left:50%;color:var(--muted);pointer-events:none;transition:opacity .15s}.ptrIndicatorActive{color:var(--brand)}.ptrIcon{display:block;flex:none}.ptrIconSpin{animation:ptrSpin .8s linear infinite}@keyframes ptrSpin{to{transform:rotate(1turn)}}.ptrContent{transition:transform .2s ease}.ptrContentRefreshing{transition:transform .15s ease}.app{display:flex;flex-direction:column;min-height:100%}.wrap{max-width:680px;padding:16px max(20px,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));margin:0 auto;width:100%}.header{position:-webkit-sticky;position:sticky;top:0;flex:0 0 auto;z-index:20;height:calc(var(--header-h) + env(safe-area-inset-top, 0px));padding:env(safe-area-inset-top,0) max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left));background:var(--header-bg);color:var(--header-text);border-bottom:1px solid rgba(255,255,255,.06);box-shadow:0 2px 12px rgba(0,0,0,.15)}.header,.headerInner{display:flex;align-items:center}.headerInner{width:100%;max-width:680px;margin:0 auto;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brandLogo{width:38px;height:38px;border-radius:10px;border:none;background:rgba(255,255,255,.12);display:grid;place-items:center;color:var(--header-text);flex-shrink:0}.title{font-family:var(--serif);margin:0;font-size:1.05rem;font-weight:650;line-height:1.2}.subtitle,.title{letter-spacing:-.01em;color:inherit}.subtitle{margin:2px 0 0;font-size:.75rem;font-weight:400;opacity:.78}.headerRight{flex:none;align-items:center;gap:8px;display:inline-flex}.iconBtn{flex:0 0 auto;width:36px;height:36px;display:grid;place-items:center;background:var(--header-btn-bg);color:var(--header-text);border:none;border-radius:10px;cursor:pointer;transition:background .15s,transform .12s}.iconBtn:hover:not(:disabled){background:var(--header-btn-hover);color:var(--header-text)}.iconBtn:active:not(:disabled){transform:scale(.94)}.iconBtn:disabled{opacity:.55;cursor:default}.iconBtn .spin,.spin{animation:ptrSpin .8s linear infinite;transform-origin:center}.headerTextBtn{height:36px;padding:0 12px;border:none;border-radius:10px;background:var(--header-btn-bg);color:var(--header-text);font-family:var(--sans);font-size:.75rem;font-weight:500;cursor:pointer;transition:background .15s,transform .12s}.headerTextBtn:hover{background:var(--header-btn-hover)}.headerTextBtn:active{transform:scale(.94)}.themeSeg{background:var(--card);border:1px solid var(--border);border-radius:8px;flex:none;gap:2px;padding:3px;display:inline-flex}.themeSeg button{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;transition:color .15s,background .15s,transform .12s;display:grid}.themeSeg button:hover{color:var(--text)}.themeSeg button:active{transform:scale(.9)}.themeSeg button[aria-pressed=true]{background:var(--text);color:var(--card)}.sectionLabel{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:11px;font-weight:700}.deviceGrid{flex-direction:column;gap:8px;margin-bottom:24px;display:flex}.deviceCard{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:14px;padding:14px 16px;transition:box-shadow .2s,border-color .2s;display:flex}.deviceCard:hover{box-shadow:var(--shadow-hover);border-color:var(--border-strong)}.deviceCardOn{background:color-mix(in srgb,var(--on-accent) 18%,var(--card));border-color:color-mix(in srgb,var(--on-accent) 55%,var(--border))}.deviceCardOn:hover{border-color:color-mix(in srgb,var(--on-accent) 75%,var(--border))}.deviceIcon{text-align:center;flex-shrink:0;width:36px;font-size:26px}.deviceInfo{flex:auto;min-width:0}.deviceName{font-family:var(--serif);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;margin:0 0 2px;font-size:15.5px;font-weight:700;overflow:hidden}.deviceType{color:var(--faint);margin:0;font-size:11.5px;font-weight:500}.deviceActions{flex-shrink:0;gap:6px;display:flex}.deviceStatus{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.4}.statusDot{color:var(--faint)}.statusHighlight{color:var(--brand);font-weight:700}.readOnly{color:var(--faint);font-size:12px}.btnOff,.btnOn{font-family:var(--sans);cursor:pointer;text-align:center;border:1px solid;border-radius:6px;min-width:52px;padding:6px 14px;font-size:13px;font-weight:700;transition:opacity .15s,transform .12s}.btnOn{background:var(--brand);border-color:var(--brand-strong);color:#fff}.btnOff{border-color:var(--border-strong);color:var(--muted);background:0 0}.btnOn:hover:not(:disabled){opacity:.88}.btnOff:hover:not(:disabled){border-color:var(--text);color:var(--text)}.btnOff:active:not(:disabled),.btnOn:active:not(:disabled){transform:scale(.94)}.btnOff:disabled,.btnOn:disabled{opacity:.5;cursor:default}.btnSuccess{background:var(--brand)!important;border-color:var(--brand-strong)!important;color:#fff!important}.btnError{background:var(--danger)!important;border-color:var(--danger)!important;color:#fff!important}.lightGroupCard .btnOff,.lightGroupCard .btnOn{min-width:72px}.deviceCardAc{flex-wrap:wrap;align-items:flex-start;gap:10px 14px}.acControls{flex-direction:column;flex:none;align-items:flex-end;gap:0;display:flex}.acTempRow{background:var(--bg);border:1px solid var(--border);border-radius:7px;align-items:center;gap:0;display:flex;overflow:hidden}.acTempBtn{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;place-items:center;font-size:17px;font-weight:700;transition:background .12s,color .12s;display:grid}.acTempBtn:hover:not(:disabled){background:var(--border);color:var(--text)}.acTempBtn:disabled{opacity:.35;cursor:default}.acTemp{text-align:center;min-width:52px;font-family:var(--serif);color:var(--text);border-left:1px solid var(--border);border-right:1px solid var(--border);font-size:16px;font-weight:700;line-height:32px}.acPowerRow{gap:6px;display:flex}.acControls .acPowerRow,.fanControls .acPowerRow{width:100%;justify-content:flex-end}.deviceSubControls{background:color-mix(in srgb,var(--bg) 70%,transparent);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:flex-end;gap:6px;width:100%;margin-top:8px;padding:8px;display:flex}.acControls .acTempRow,.acControls .fanSpeedRow,.fanControls .fanSpeedRow{border-radius:6px}.acControls .fanSpeedBtn,.fanControls .fanSpeedBtn{height:28px;padding:0 9px;font-size:12px}.acControls .acTempBtn{width:28px;height:28px;font-size:15px}.acControls .acTemp{min-width:44px;font-size:14px;line-height:28px}.deviceCardFan{flex-wrap:wrap;align-items:flex-start;gap:10px 14px}.fanControls{flex-direction:column;flex:none;align-items:flex-end;gap:0;display:flex}.fanSpeedRow{background:var(--bg);border:1px solid var(--border);border-radius:7px;gap:0;display:flex;overflow:hidden}.fanSpeedBtn{border:none;border-right:1px solid var(--border);height:32px;color:var(--muted);font-family:var(--sans);cursor:pointer;background:0 0;padding:0 13px;font-size:13px;font-weight:600;transition:background .12s,color .12s}.fanSpeedBtn:last-child{border-right:none}.fanSpeedBtn:hover:not(:disabled){background:var(--border);color:var(--text)}.fanSpeedBtn:disabled{opacity:.4;cursor:default}.fanSpeedBtn.fanSpeedActive{background:var(--text);color:var(--card)}.loadingWrap{height:120px;color:var(--muted);justify-content:center;align-items:center;font-size:14px;display:flex}.errorCard{background:color-mix(in srgb,var(--danger) 8%,var(--card));border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);color:var(--danger);border-radius:8px;padding:16px 18px;font-size:14px;font-weight:600}.emptyNote{font-family:var(--serif);text-align:center;color:var(--muted);margin:0;padding:44px 0;font-size:15px;font-style:italic}.loginCard{max-width:340px;margin:15vh auto 0;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:28px 24px;text-align:center}.loginTitle{font-family:var(--serif);font-weight:800;font-size:24px;margin:0}.loginHint{color:var(--muted);font-size:13px;margin:8px 0 20px}.loginForm{display:flex;flex-direction:column;gap:10px}.loginInput{height:42px;padding:0 14px;color:var(--text);background:var(--bg);border:1px solid var(--border-strong);border-radius:8px;font-family:var(--sans);font-size:15px}.loginInput:focus{outline:none;border-color:var(--brand)}.loginSubmit{height:42px;font-size:14px}.loginError{color:var(--danger);font-size:13px;font-weight:600;margin:14px 0 0}@media (max-width:480px){.wrap{padding:14px max(15px,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(15px,env(safe-area-inset-left))}.header{padding-left:max(15px,env(safe-area-inset-left));padding-right:max(15px,env(safe-area-inset-right))}.deviceCard{gap:12px;padding:12px 14px}.btnOff,.btnOn{min-width:46px;padding:6px 11px;font-size:12.5px}}