:root{--c1:#0877ff;--c2:#00b8ff;--c3:#0754d8;--dir:135deg;--radius:12px;--bh:48px;--fs:16px;--gap:10px}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#070c14;color:#fff;font-family:Inter,Arial,sans-serif}
body{min-height:100vh;background:radial-gradient(circle at 50% -20%,#17395b 0,#070c14 45%)}
.hidden{display:none!important}
.loader{position:fixed;inset:0;z-index:50;background:#070c14;display:grid;place-items:center;align-content:center;gap:18px}
.loader-logo{width:92px;height:92px;border-radius:24px;background:linear-gradient(var(--dir),var(--c1),var(--c2),var(--c3));display:grid;place-items:center;font-weight:900;font-size:22px;box-shadow:0 0 40px color-mix(in srgb,var(--c2) 35%,transparent)}
.spinner{width:34px;height:34px;border:3px solid #ffffff22;border-top-color:var(--c2);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.page{width:min(620px,100%);margin:auto;padding:28px 16px 36px}
.install-card{background:#0d1725;border:1px solid #1e3148;border-radius:18px;padding:22px;box-shadow:0 20px 70px rgba(0,0,0,.35)}
.install-logo{width:110px;height:110px;object-fit:contain;border-radius:24px;display:block;margin:4px auto 14px}
.install-title{text-align:center}.install-title h1{font-size:24px;margin:0 0 6px}.install-title p{margin:0;color:#91a1b3}
.app-meta{display:grid;grid-template-columns:repeat(3,1fr);margin:20px 0;border-top:1px solid #1e3148;border-bottom:1px solid #1e3148}
.app-meta div{text-align:center;padding:13px 5px;border-right:1px solid #1e3148}.app-meta div:last-child{border-right:0}.app-meta strong,.app-meta span{display:block}.app-meta span{font-size:10px;color:#8ea0b4;margin-top:4px}
.install-btn,.secondary-btn{width:100%;height:50px;border:0;border-radius:12px;color:#fff;font-weight:900;font-size:15px;cursor:pointer}
.install-btn{background:linear-gradient(var(--dir),var(--c1),var(--c2),var(--c3));box-shadow:0 8px 24px color-mix(in srgb,var(--c2) 25%,transparent)}
.secondary-btn{margin-top:9px;background:#172538;border:1px solid #29425f}
.device-hint{text-align:center;color:#8da0b6;font-size:11px;line-height:1.5;margin:14px 0 0}
.landing{padding-top:20px;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
.landing-logo{display:block;margin:4px auto 16px;max-width:90%;height:auto}
.banner-carousel{position:relative;overflow:hidden;border-radius:12px}
.banner-track{display:flex;width:100%;transition:transform .55s cubic-bezier(.22,.61,.36,1);will-change:transform}
.banner-slide{flex:0 0 100%;width:100%}.banner-slide img{display:block;width:100%;aspect-ratio:600/280;object-fit:cover}
.banner-dots{text-align:center;padding:8px 0 12px}.banner-dots span{display:inline-block;width:7px;height:7px;border-radius:50%;background:#ffffff45;margin:0 3px}.banner-dots span.active{background:#fff}
.landing-buttons{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}
.land-btn{height:calc(var(--bh) * var(--btn-scale,1))!important;border-radius:var(--radius)!important;display:grid;place-items:center;color:#fff;text-decoration:none;font-size:calc(var(--fs) * var(--btn-scale,1))!important;font-weight:900;background:linear-gradient(var(--dir),var(--c1),var(--c2),var(--c3));box-shadow:0 7px 22px color-mix(in srgb,var(--c2) 24%,transparent);transition:.18s height,.18s font-size,.18s border-radius,.18s transform,.18s filter,.18s box-shadow}
.land-btn.size-small{--btn-scale:.72}
.land-btn.size-default{--btn-scale:1}
.land-btn.size-large{--btn-scale:1.30}
.theme-no-glow .land-btn{box-shadow:none}
.theme-no-animation .land-btn{transition:none}
body:not(.theme-no-animation) .land-btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.land-btn.full{grid-column:1/-1}
footer{text-align:center;color:#74869a;font-size:10px;padding:28px 10px 10px;margin-top:auto}
.ios-modal{position:fixed;inset:0;background:rgba(0,0,0,.66);display:grid;place-items:end center;padding:18px;z-index:70}.ios-card{width:min(520px,100%);background:#fff;color:#111;border-radius:20px;padding:20px;position:relative}.ios-card h2{margin-top:0}.ios-card li{margin:10px 0}.ios-card p{color:#555;font-size:12px}.ios-close{position:absolute;right:14px;top:12px;border:0;background:#eee;width:30px;height:30px;border-radius:50%;font-size:20px}
@media(max-width:480px){.page{padding-left:12px;padding-right:12px}.install-card{padding:18px}.install-title h1{font-size:21px}}

/* Google Play inspired install surface */
.play-page{min-height:100vh;background:#fff;color:#202124;font-family:Arial,Roboto,sans-serif}
.play-header{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid #f1f3f4;position:sticky;top:0;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);z-index:10}
.play-store-mark{display:flex;align-items:center;gap:10px;color:#5f6368;font-size:20px;font-weight:600}
.play-triangle{color:#01875f;font-size:25px}
.play-header-actions{display:flex;align-items:center;gap:18px}.play-header-actions button{border:0;background:transparent;font-size:22px;color:#5f6368;cursor:pointer}.play-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#1a73e8;color:#fff;font-weight:700}
.play-content{width:min(720px,100%);margin:auto;padding:34px 28px 48px}
.play-app-head{display:flex;align-items:center;gap:24px}.play-app-icon{width:120px;height:120px;border-radius:24px;object-fit:cover;box-shadow:0 2px 8px rgba(60,64,67,.2)}.play-app-copy h1{font-size:30px;line-height:1.15;margin:0 0 9px;color:#202124}.play-verified{font-size:14px;color:#01875f;font-weight:600}.play-ready{font-size:12px;color:#5f6368;margin-top:8px}
.play-protect{margin:24px 0 4px;display:flex;align-items:center;gap:8px;color:#5f6368;font-size:13px}.protect-shield{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#e6f4ea;color:#137333;font-weight:900}
.play-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:25px 0 22px}.play-stats div{text-align:center;padding:0 12px;border-right:1px solid #dadce0}.play-stats div:last-child{border-right:0}.play-stats strong,.play-stats span{display:block}.play-stats strong{font-size:14px}.play-stats span{font-size:11px;color:#5f6368;margin-top:5px}
.play-install-btn{width:100%;height:48px;border:0;border-radius:8px;background:#01875f;color:#fff;font-weight:700;font-size:15px;cursor:pointer}.play-install-btn:hover{background:#017653}
.play-actions{display:flex;justify-content:center;gap:42px;padding:18px 0 28px}.play-actions button{border:0;background:transparent;color:#01875f;font-weight:700;cursor:pointer}.play-actions button span{font-size:18px;margin-right:7px}
.play-about,.play-update,.play-rating{padding:16px 0}.play-section-title{display:flex;align-items:center;justify-content:space-between}.play-section-title h2,.play-update h3{font-size:20px;margin:0 0 14px}.play-section-title>span{font-size:28px;color:#5f6368}.play-about p,.play-update p{font-size:14px;line-height:1.55;color:#5f6368;margin:0}.play-update h3{font-size:14px;margin-bottom:7px}
.rating-summary{display:grid;grid-template-columns:110px 1fr;gap:20px;align-items:center}.rating-big strong{display:block;font-size:52px;font-weight:400}.rating-big span{display:block;color:#01875f;letter-spacing:1px;font-size:13px}.rating-big small{display:block;color:#5f6368;margin-top:6px}.rating-bars div{display:grid;grid-template-columns:15px 1fr;align-items:center;gap:7px;font-size:11px;color:#5f6368;margin:4px 0}.rating-bars i{height:8px;background:#e8eaed;border-radius:999px;overflow:hidden}.rating-bars b{display:block;height:100%;background:#01875f;border-radius:999px}
.open-web-btn{width:100%;height:44px;border:1px solid #dadce0;border-radius:8px;background:#fff;color:#01875f;font-weight:700;cursor:pointer;margin-top:20px}
.play-page .device-hint{color:#5f6368}
@media(max-width:520px){.play-header{height:56px;padding:0 16px}.play-store-mark{font-size:17px}.play-content{padding:26px 20px 38px}.play-app-head{gap:18px;align-items:flex-start}.play-app-icon{width:92px;height:92px;border-radius:19px}.play-app-copy h1{font-size:24px}.play-stats{margin-top:24px}.play-actions{gap:24px}.rating-summary{grid-template-columns:95px 1fr}}

.quick-install-btn{width:100%;min-height:52px;border:0;border-radius:8px;background:#009b72;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-weight:800;cursor:pointer;box-shadow:none;padding:7px 14px;transition:filter .15s ease,transform .15s ease}
.quick-install-btn:hover{filter:brightness(.96)}
.quick-install-btn:active{transform:translateY(1px)}
.quick-install-title{font-size:15px;line-height:1.1}
.quick-install-sub{font-size:10px;line-height:1.1;font-weight:700;opacity:.98}

.wd-notification-slot{min-height:118px;display:flex;align-items:center;justify-content:center;padding:14px 0}
.wd-notification-card{width:100%;border:1px solid #1d2c3d;border-radius:12px;background:#0d1724;padding:14px 16px;box-shadow:0 10px 26px rgba(0,0,0,.22);opacity:0;transform:translateY(10px);transition:opacity .28s ease,transform .28s ease}
.wd-notification-card.show{opacity:1;transform:translateY(0)}
.wd-notification-title{font-size:12px;font-weight:900;color:#fff;margin-bottom:5px}
.wd-notification-text{font-size:12px;line-height:1.45;color:#b8c6d5}

.play-store-mark img{display:block;width:min(360px,72vw);height:auto;max-height:52px;object-fit:contain;object-position:left center}
@media(max-width:520px){.play-store-mark img{width:min(300px,72vw);max-height:44px}}

.play-name-row{display:flex;align-items:center;gap:7px}
.play-name-row .play-app-copy h1,.play-name-row h1{margin-bottom:0}
.verified-badge{display:inline-grid;place-items:center;flex:0 0 auto;width:17px;height:17px;border-radius:50%;background:#1a9df0;color:#fff;font-size:11px;font-weight:900;line-height:1;position:relative}
.verified-badge:after{content:"";position:absolute;inset:-2px;border-radius:5px;transform:rotate(45deg);background:#1a9df0;z-index:-1}
.play-name-row+.play-verified{margin-top:7px}
.play-ready{margin-top:3px!important}
.play-protect .protect-shield{width:23px;height:26px;border-radius:0;background:#00a86b;clip-path:polygon(50% 0,95% 16%,88% 67%,50% 100%,12% 67%,5% 16%);position:relative}
.play-protect .protect-shield:after{content:"";position:absolute;inset:5px 6px 7px;background:#fff;clip-path:polygon(50% 0,100% 22%,88% 70%,50% 100%,12% 70%,0 22%)}

.play-app-copy .play-protect{margin:5px 0 0;display:flex;align-items:center;gap:6px;color:#5f6368;font-size:12px;line-height:1.2}
.play-app-copy .play-protect img{display:block;width:18px;height:18px;object-fit:contain;flex:0 0 18px}
.play-app-copy .play-protect .protect-shield{display:none!important}

/* Mobile/WebView hardening: keep landing page in true phone layout even when
   an Android browser/in-app WebView exposes a desktop-sized layout viewport. */
@media (pointer:coarse) and (max-device-width:900px){
  #landingPage.page{
    width:100%;
    max-width:none;
    padding-left:12px;
    padding-right:12px;
  }
  #landingPage .landing-logo{
    max-width:70vw;
  }
  #landingPage .banner-carousel,
  #landingPage .landing-buttons,
  #landingPage footer{
    width:100%;
  }
}

/* Class is added by install.js when Android/WebView reports a desktop-like
   viewport on a phone. Values are multiplied so the browser's page scaling
   does not make text/buttons look miniature. */
html.mobile-desktop-viewport #landingPage.page{
  width:100%;
  max-width:none;
  padding-left:28px;
  padding-right:28px;
}
html.mobile-desktop-viewport #landingPage{
  --mobile-fix-scale:2.45;
}
html.mobile-desktop-viewport #landingPage .landing-logo{
  width:min(calc(var(--landing-logo-runtime,110px) * var(--mobile-fix-scale)),70%) !important;
  max-width:70%;
}
html.mobile-desktop-viewport #landingPage .land-btn{
  height:calc(var(--bh) * var(--btn-scale,1) * var(--mobile-fix-scale)) !important;
  font-size:calc(var(--fs) * var(--btn-scale,1) * var(--mobile-fix-scale)) !important;
  border-radius:calc(var(--radius) * var(--mobile-fix-scale)) !important;
}
html.mobile-desktop-viewport #landingPage .landing-buttons{
  gap:calc(var(--gap) * var(--mobile-fix-scale));
}
html.mobile-desktop-viewport #landingPage footer{
  font-size:24px;
  padding-top:55px;
}

/* PWA install progress: visual progress is intentionally capped until Chrome
   confirms appinstalled; browsers do not expose WebAPK download percentages. */
.install-progress{display:block;width:min(260px,86%);height:4px;margin-top:6px;background:rgba(255,255,255,.28);border-radius:999px;overflow:hidden}
.install-progress i{display:block;width:0;height:100%;background:#fff;border-radius:999px;transition:width .35s ease}
.quick-install-btn.installing{cursor:wait;pointer-events:none;opacity:.94}
.quick-install-btn.installing .quick-install-title::before{content:'';display:inline-block;width:12px;height:12px;margin-right:7px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;vertical-align:-2px;animation:installSpin .8s linear infinite}
@keyframes installSpin{to{transform:rotate(360deg)}}
