html,body,#root{min-height:100%;margin:0}body{background:#f4f7fa}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}.break-all{word-break:break-all}.firmware-drop{color:inherit}.firmware-file-input{display:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#b8c5cf;border-radius:10px}::-webkit-scrollbar-track{background:transparent}


/* Ripercom brand and splash screen */
.brand-logo-box{position:relative;display:grid;place-items:center;overflow:hidden;flex:0 0 auto;background:linear-gradient(145deg,#fff,#e9f6f4);border:1px solid rgba(255,255,255,.32);box-shadow:0 8px 22px rgba(0,0,0,.16)}
.brand-logo-box img{position:relative;z-index:2;width:100%;height:100%;object-fit:contain;display:block;background:#fff}
.brand-logo-box .brand-logo-initials{position:absolute;z-index:1;inset:0;display:grid;place-items:center;font-weight:950;color:#00796b;letter-spacing:-.08em}
.ripercom-splash{position:fixed;z-index:99999;inset:0;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,#061f2c 0%,#092f3f 48%,#064d49 100%);opacity:1;visibility:visible;transition:opacity .42s ease,visibility .42s ease}
.ripercom-splash.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.ripercom-splash-glow{position:absolute;width:min(72vw,760px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(0,188,174,.26),rgba(0,121,107,.05) 50%,transparent 72%);filter:blur(2px);animation:ripercomPulse 2.6s ease-in-out infinite}
.ripercom-splash-card{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;width:min(420px,calc(100vw - 36px));padding:42px 32px 34px;text-align:center;color:#fff}
.ripercom-logo-frame{position:relative;width:116px;height:116px;display:grid;place-items:center;overflow:hidden;border-radius:28px;background:rgba(255,255,255,.98);border:1px solid rgba(255,255,255,.7);box-shadow:0 24px 60px rgba(0,0,0,.28),0 0 0 9px rgba(255,255,255,.07);animation:ripercomLogoIn .72s cubic-bezier(.2,.85,.3,1.2) both}
.ripercom-logo-frame img{position:relative;z-index:2;width:100%;height:100%;object-fit:contain;background:#fff}
.ripercom-logo-initials{position:absolute;z-index:1;inset:0;display:grid;place-items:center;color:#00796b;font:950 37px/1 Inter,ui-sans-serif,system-ui;letter-spacing:-.08em}
.ripercom-logo-frame.logo-failed img{display:none}
.ripercom-splash-title{margin-top:25px;font:850 clamp(25px,5vw,34px)/1.08 Inter,ui-sans-serif,system-ui;letter-spacing:-.035em}
.ripercom-splash-subtitle{margin-top:7px;color:#a9d8d3;font:700 15px/1.3 Inter,ui-sans-serif,system-ui;letter-spacing:.18em;text-transform:uppercase}
.ripercom-splash-loader{height:26px;margin-top:29px;display:flex;align-items:center;gap:8px}
.ripercom-splash-loader span{width:8px;height:8px;border-radius:50%;background:#7be1d7;box-shadow:0 0 14px rgba(123,225,215,.55);animation:ripercomDot 1.05s ease-in-out infinite}
.ripercom-splash-loader span:nth-child(2){animation-delay:.13s}.ripercom-splash-loader span:nth-child(3){animation-delay:.26s}
.ripercom-splash-caption{margin-top:12px;color:rgba(227,245,243,.62);font:600 11px/1.4 Inter,ui-sans-serif,system-ui;letter-spacing:.12em;text-transform:uppercase}
@keyframes ripercomDot{0%,60%,100%{transform:translateY(0);opacity:.42}30%{transform:translateY(-8px);opacity:1}}
@keyframes ripercomPulse{0%,100%{transform:scale(.92);opacity:.64}50%{transform:scale(1.08);opacity:1}}
@keyframes ripercomLogoIn{0%{opacity:0;transform:translateY(16px) scale(.78) rotate(-3deg)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ripercom-splash-glow,.ripercom-logo-frame,.ripercom-splash-loader span{animation:none}.ripercom-splash{transition:none}}
