:root{--navy-950:#04111d;--navy-900:#071a2b;--navy-850:#0b2236;--navy-800:#102b42;--navy-700:#173a56;--cyan:#20c1c9;--cyan-soft:#73e0df;--green:#61d378;--yellow:#f6bd4b;--red:#ff6978;--text:#f5fbff;--muted:#94a9b9;--dim:#688196;--line:rgba(184,221,238,0.12);--surface:rgba(14,39,59,0.9);--surface-strong:#102b42;--shadow:0 22px 70px rgba(0,0,0,0.34);--radius:22px;--radius-sm:15px}*{box-sizing:border-box;margin:0;padding:0}html{min-width:280px;min-height:100%;background:var(--navy-950)}body{min-height:100vh;min-height:100dvh;color:var(--text);background:radial-gradient(circle at 80% -10%,rgba(32,193,201,.16),transparent 34rem),linear-gradient(180deg,var(--navy-900),var(--navy-950));font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a,button{color:inherit}a{text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid rgba(115,224,223,.55);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.46}.logo-mark{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;filter:drop-shadow(0 8px 18px rgba(32,193,201,.2))}.logo-mark svg{display:block;width:100%;height:100%}.eyebrow{color:var(--cyan-soft);font-size:.69rem;font-weight:800;letter-spacing:.14em;line-height:1.3}.login-page{display:grid;place-items:center}.login-card,.login-page{min-height:100vh;min-height:100dvh}.login-card{display:flex;width:100%;flex-direction:column;justify-content:center;padding:max(28px,env(safe-area-inset-top)) 22px max(24px,env(safe-area-inset-bottom))}.login-brand{display:flex;align-items:center;gap:11px;margin-bottom:clamp(34px,8vh,72px);font-size:1.1rem;font-weight:800;letter-spacing:-.02em}.login-hero-icon{display:grid;width:58px;height:58px;margin-bottom:20px;place-items:center;border:1px solid rgba(115,224,223,.2);border-radius:18px;color:var(--cyan-soft);background:linear-gradient(145deg,rgba(32,193,201,.2),rgba(15,92,140,.12));box-shadow:0 14px 40px rgba(0,168,181,.12)}.login-hero-icon svg{width:27px;height:27px}.login-card h1{max-width:340px;margin-top:9px;font-size:clamp(2.15rem,11vw,3rem);line-height:.98;letter-spacing:-.055em}.login-lead{max-width:390px;margin-top:16px;color:var(--muted);font-size:.95rem;line-height:1.62}.login-form{display:grid;gap:16px;margin-top:32px}.login-form label{display:grid;gap:8px}.login-form label>span{color:var(--muted);font-size:.75rem;font-weight:700}.login-form input{width:100%;min-height:52px;border:1px solid var(--line);border-radius:14px;outline:none;color:var(--text);background:rgba(16,43,66,.82);padding:0 16px;font-size:16px;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.login-form input::placeholder{color:var(--dim)}.login-form input:focus{border-color:var(--cyan);background:var(--navy-800);box-shadow:0 0 0 4px rgba(32,193,201,.1)}.form-error{padding:11px 13px;border:1px solid rgba(255,105,120,.28);border-radius:12px;color:#ffb5bd;background:rgba(255,105,120,.09);font-size:.8rem;line-height:1.45}.primary-button,.secondary-button,.text-button{display:inline-flex;min-height:48px;align-items:center;justify-content:center;gap:9px;border:0;border-radius:14px;padding:0 17px;font-size:.87rem;font-weight:800;cursor:pointer;transition:transform .15s ease,filter .15s ease,border-color .15s ease}.primary-button{color:#03161f;background:linear-gradient(120deg,var(--green),var(--cyan-soft));box-shadow:0 13px 34px rgba(32,193,201,.18)}.icon-button:not(:disabled):active,.primary-button:not(:disabled):active,.secondary-button:not(:disabled):active,.text-button:not(:disabled):active{transform:scale(.97)}.primary-button svg,.secondary-button svg{width:19px;height:19px}.secondary-button{border:1px solid var(--line);color:var(--text);background:var(--navy-800)}.text-button{color:var(--cyan-soft);background:transparent}.login-button{width:100%;margin-top:5px}.security-note{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:22px;color:var(--dim);font-size:.73rem}.security-note svg{width:15px;height:15px}.spinner{width:17px;height:17px;border:2px solid rgba(3,22,31,.28);border-top-color:#03161f;border-radius:50%;animation:spin .7s linear infinite}.app-shell{min-height:100vh;min-height:100dvh}.app-header{position:sticky;z-index:20;top:0;border-bottom:1px solid var(--line);background:rgba(7,26,43,.88);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.header-inner{display:flex;width:min(100%,760px);min-height:68px;margin:0 auto;align-items:center;gap:11px;padding:max(8px,env(safe-area-inset-top)) 16px 8px}.header-inner .logo-mark{width:39px;height:39px;flex-basis:39px}.header-copy{display:flex;min-width:0;flex:1 1;flex-direction:column}.header-copy .header-eyebrow{color:var(--cyan-soft);font-size:.62rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.header-copy strong{overflow:hidden;font-size:.92rem;text-overflow:ellipsis;white-space:nowrap}.icon-button{display:grid;width:44px;height:44px;flex:0 0 44px;place-items:center;border:1px solid var(--line);border-radius:14px;color:var(--muted);background:rgba(16,43,66,.64);cursor:pointer}.icon-button svg{width:20px;height:20px}.page-content{width:min(100%,760px);margin:0 auto;padding:28px 16px max(36px,env(safe-area-inset-bottom))}.welcome-block{margin-bottom:21px}.control-heading,.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.section-heading h1,.station-card h1{margin-top:6px;font-size:clamp(1.65rem,8vw,2.25rem);line-height:1.08;letter-spacing:-.045em}.section-heading p:not(.eyebrow),.station-head p:not(.eyebrow){margin-top:7px;color:var(--muted);font-size:.82rem;line-height:1.5}.refresh-button{margin-top:7px}.charger-list,.connector-list{display:grid;gap:13px}.charger-card,.connector-card,.control-section,.state-card,.station-card{border:1px solid var(--line);background:linear-gradient(145deg,rgba(18,48,72,.94),rgba(10,34,53,.96));box-shadow:0 12px 34px rgba(0,0,0,.14)}.charger-card{display:grid;min-width:0;grid-template-columns:48px minmax(0,1fr) 20px;align-items:center;gap:13px;border-radius:var(--radius);padding:16px 14px;transition:border-color .16s ease,transform .16s ease}.charger-card:active{transform:scale(.985)}.charger-icon{display:grid;width:48px;height:48px;place-items:center;border:1px solid rgba(115,224,223,.18);border-radius:16px;color:var(--cyan-soft);background:rgba(32,193,201,.1)}.charger-icon svg{width:23px;height:23px}.charger-main{display:flex;min-width:0;flex-direction:column;gap:5px}.charger-topline{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px}.charger-topline strong{font-size:.96rem}.charger-location,.charger-meta,.charger-topline strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.charger-location,.charger-meta{color:var(--muted);font-size:.74rem}.charger-meta{display:flex;align-items:center;gap:5px;color:var(--dim);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.65rem}.charger-meta svg{width:12px;height:12px}.card-chevron{width:19px;height:19px;color:var(--dim)}.status-chip{display:inline-flex;min-height:27px;flex:0 0 auto;align-items:center;gap:6px;border-radius:999px;padding:0 9px;font-size:.67rem;font-weight:800;white-space:nowrap}.auto-refresh-note i,.live-dot,.status-chip i{display:block;width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.status-chip.success{color:var(--green);background:rgba(97,211,120,.12)}.status-chip.info{color:var(--cyan-soft);background:rgba(32,193,201,.13)}.status-chip.warning{color:var(--yellow);background:rgba(246,189,75,.12)}.status-chip.danger{color:var(--red);background:rgba(255,105,120,.12)}.status-chip.muted{color:var(--muted);background:rgba(148,169,185,.1)}.state-card{display:flex;min-height:250px;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius);padding:28px;text-align:center}.state-card strong{font-size:1rem}.state-card p{max-width:340px;margin:8px 0 18px;color:var(--muted);font-size:.82rem;line-height:1.55}.state-icon{display:grid;width:54px;height:54px;margin-bottom:16px;place-items:center;border-radius:18px;color:var(--muted);background:rgba(148,169,185,.08)}.state-icon svg{width:25px;height:25px}.error-state{border-color:rgba(255,105,120,.24)}.auto-refresh-note{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:22px;color:var(--dim);font-size:.69rem;text-align:center}.auto-refresh-note i{color:var(--green)}.detail-content{display:grid;gap:15px}.control-section,.station-card{border-radius:var(--radius);padding:18px}.station-head{display:flex;min-width:0;align-items:center;gap:14px}.station-head>div:last-child{min-width:0}.station-head h1,.station-head p{overflow-wrap:anywhere}.charger-icon.large{width:58px;height:58px;flex:0 0 58px;border-radius:19px}.station-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:17px;padding-top:14px;border-top:1px solid var(--line);color:var(--dim);font-size:.69rem}.station-meta span:first-child{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-weight:800}.feedback{position:sticky;z-index:15;top:78px;border:1px solid;border-radius:14px;padding:12px 14px;font-size:.79rem;font-weight:700;box-shadow:var(--shadow)}.feedback.success{border-color:rgba(97,211,120,.3);color:#b5f4c1;background:rgba(25,76,51,.96)}.feedback.danger{border-color:rgba(255,105,120,.3);color:#ffc1c7;background:rgba(80,31,43,.97)}.control-heading{align-items:center;margin-bottom:15px}.control-heading h2{margin-top:4px;font-size:1.08rem;letter-spacing:-.025em}.count-badge{display:grid;min-width:32px;height:32px;place-items:center;border:1px solid var(--line);border-radius:11px;color:var(--cyan-soft);background:var(--navy-800);font-size:.76rem;font-weight:800}.connector-card{border-radius:18px;padding:15px;box-shadow:none}.connector-card.charging{border-color:rgba(32,193,201,.3);background:linear-gradient(145deg,rgba(15,67,83,.76),rgba(10,34,53,.98))}.connector-head,.connector-number{display:flex;align-items:center}.connector-head{min-width:0;justify-content:space-between;gap:9px}.connector-number{min-width:0;gap:10px}.connector-number>span{display:grid;width:36px;height:36px;flex:0 0 36px;place-items:center;border-radius:12px;color:var(--cyan-soft);background:rgba(32,193,201,.1);font-size:.84rem;font-weight:900}.connector-number>div{display:flex;min-width:0;flex-direction:column}.connector-number strong{font-size:.82rem}.connector-number small{margin-top:2px;overflow:hidden;color:var(--dim);font-size:.65rem;text-overflow:ellipsis;white-space:nowrap}.connector-error{margin-top:12px;border-radius:10px;padding:9px 11px;color:#ffb8c0;background:rgba(255,105,120,.1);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem}.session-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.session-strip>div{display:flex;min-width:0;flex-direction:column;gap:4px;border-radius:11px;padding:10px 8px;background:rgba(4,17,29,.36)}.session-strip span{color:var(--dim);font-size:.57rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.session-strip strong{overflow:hidden;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.connector-actions{display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:9px;margin-top:14px}.connector-actions .primary-button{width:100%}.connector-actions .icon-action{width:48px;padding:0}.stop-button{color:white;background:linear-gradient(120deg,#f25263,#ff7c83);box-shadow:0 13px 34px rgba(242,82,99,.15)}.stop-square{width:11px;height:11px;border-radius:2px;background:currentColor}.inline-empty{border:1px dashed var(--line);border-radius:15px;padding:24px 16px;color:var(--muted);font-size:.78rem;text-align:center}.skeleton{position:relative;min-height:104px;overflow:hidden}.skeleton:after{position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.05) 48%,transparent 76%);content:"";transform:translateX(-100%);animation:shimmer 1.3s infinite}.station-skeleton{min-height:156px}.connector-skeleton{min-height:270px}.rotating{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{to{transform:translateX(100%)}}@media (min-width:560px){.login-card{min-height:auto;margin:28px;border:1px solid var(--line);border-radius:28px;background:rgba(7,26,43,.82);box-shadow:var(--shadow)}.login-page .login-card{width:min(100% - 40px,470px);padding:42px}}@media (min-width:720px){.page-content{padding:34px 20px 48px}.list-content .charger-list{grid-template-columns:1fr 1fr}.charger-card:hover{border-color:rgba(115,224,223,.32)}}@media (max-width:350px){.page-content{padding-right:12px;padding-left:12px}.charger-card{grid-template-columns:42px minmax(0,1fr) 16px;gap:9px;padding:14px 12px}.charger-icon{width:42px;height:42px;border-radius:14px}.connector-card,.control-section,.station-card{padding:14px}.connector-head{align-items:flex-start}.connector-head .status-chip{padding:0 7px}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}