/* App-standard install/update controls (v100). */
.qedu-pwa-controls{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.qedu-pwa-controls.qedu-pwa-floating{position:fixed;z-index:9999;top:16px;right:68px}
.qedu-pwa-controls .qedu-pwa-action{position:relative!important;right:auto!important;bottom:auto!important;z-index:auto!important;display:inline-grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--text);box-shadow:none;font-size:1rem;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}
.qedu-pwa-controls .qedu-pwa-action[hidden]{display:none!important}
.qedu-pwa-controls .qedu-pwa-action:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(15,23,42,.12)}
.qedu-pwa-controls .qedu-pwa-update{border-color:transparent;background:linear-gradient(135deg,#16a34a,#147bd1);color:#fff;box-shadow:0 8px 20px rgba(20,123,209,.24)}
.qedu-pwa-controls .qedu-pwa-updating{cursor:wait;opacity:.85}
.qedu-pwa-action-dot{display:none;position:absolute;top:4px;right:4px;width:9px;height:9px;border:2px solid var(--surface);border-radius:50%;background:#f97316}
.qedu-pwa-update .qedu-pwa-action-dot{display:block}
.qedu-pwa-attention{animation:qedu-pwa-attention 1.7s ease both}
@keyframes qedu-pwa-attention{0%,100%{transform:scale(1)}25%,65%{transform:scale(1.12);box-shadow:0 0 0 8px rgba(22,163,74,.16),0 10px 24px rgba(20,123,209,.28)}}
.qedu-update-notice{position:fixed;z-index:10040;top:76px;right:18px;width:min(440px,calc(100vw - 28px));display:grid;grid-template-columns:42px minmax(0,1fr) auto 34px;align-items:center;gap:10px;padding:13px 12px;border:1px solid color-mix(in srgb,#147bd1 30%,var(--border));border-radius:16px;background:var(--surface);color:var(--text);box-shadow:0 18px 48px rgba(15,23,42,.22);cursor:pointer;animation:qedu-update-in .28s ease both}
.qedu-update-notice-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#dcfce7,#dbeafe);color:#147bd1;font-size:1.05rem}
.qedu-update-notice-copy{min-width:0;display:flex;flex-direction:column;gap:3px}
.qedu-update-notice-copy strong{font-size:.9rem}.qedu-update-notice-copy span{color:var(--text-soft);font-size:.78rem;line-height:1.35}
.qedu-update-now{min-height:36px;padding:0 12px;border:0;border-radius:10px;background:linear-gradient(135deg,#16a34a,#147bd1);color:#fff;font-weight:800;cursor:pointer;white-space:nowrap}
.qedu-update-dismiss{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:9px;background:transparent;color:var(--text-soft);cursor:pointer}
.qedu-update-notice.success{border-color:color-mix(in srgb,#16a34a 38%,var(--border))}.qedu-update-notice.success .qedu-update-notice-icon{color:#15803d;background:#dcfce7}
@keyframes qedu-update-in{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:700px){.qedu-pwa-controls{gap:5px}.qedu-pwa-controls.qedu-pwa-floating{top:12px;right:62px}.qedu-pwa-controls .qedu-pwa-action{width:40px;height:40px;min-height:40px}.qedu-update-notice{top:66px;left:10px;right:10px;width:auto;grid-template-columns:38px minmax(0,1fr) 32px}.qedu-update-notice-icon{width:36px;height:36px}.qedu-update-now{grid-column:2;justify-self:start}.qedu-update-dismiss{grid-column:3;grid-row:1}.qedu-update-notice-copy{grid-column:2/4}}

/* Size and real cache-progress additions for the QWERTY PWA controls. */
.qedu-pwa-controls .qedu-pwa-action-size{position:absolute;z-index:2;top:calc(100% - 3px);left:50%;min-width:max-content;padding:2px 6px;border:1px solid color-mix(in srgb,var(--accent,#6d28d9) 25%,var(--border));border-radius:999px;background:var(--surface);color:var(--text);box-shadow:0 4px 12px rgba(15,23,42,.13);font-size:.56rem;font-weight:850;line-height:1.2;transform:translateX(-50%)}
.qedu-pwa-controls .qedu-pwa-updating .qedu-pwa-action-size{opacity:.82}
.qedu-update-size{display:inline-flex!important;align-items:center;gap:5px;width:max-content;margin-top:3px;padding:3px 7px;border-radius:999px;background:var(--surface-2);color:var(--text)!important;font-size:.66rem!important;font-weight:850}
.qedu-update-progress{position:relative;width:100%;height:7px;margin-top:7px;overflow:hidden;border-radius:999px;background:var(--surface-2)}
.qedu-update-progress>i{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:linear-gradient(90deg,#16a34a,#147bd1);transition:width .24s ease}
.qedu-update-progress.is-indeterminate>i{width:38%;animation:qedu-pwa-progress 1.15s ease-in-out infinite}
@keyframes qedu-pwa-progress{0%{left:-40%}50%{left:42%}100%{left:104%}}
.qedu-update-progress-text{margin-top:3px;color:var(--text-soft);font-size:.62rem;font-weight:750}
.qedu-update-notice.has-progress{grid-template-columns:42px minmax(0,1fr) 34px}.qedu-update-notice.has-progress .qedu-update-notice-copy{grid-column:2}.qedu-update-notice.has-progress .qedu-update-dismiss{grid-column:3}
.qedu-update-notice.downloading,.qedu-update-notice.applying,.qedu-update-notice.installing{cursor:default}.qedu-update-notice.error{border-color:#fecaca}.qedu-update-notice.error .qedu-update-notice-icon{background:#fee2e2;color:#b91c1c}
@media(max-width:700px){.qedu-pwa-controls .qedu-pwa-action-size{top:calc(100% - 2px);font-size:.52rem}.qedu-update-notice.has-progress{grid-template-columns:38px minmax(0,1fr)}.qedu-update-notice.has-progress .qedu-update-notice-copy{grid-column:2}.qedu-update-progress{height:6px}}
@media(prefers-reduced-motion:reduce){.qedu-update-progress>i{transition:none}.qedu-update-progress.is-indeterminate>i{animation-duration:2.4s}}
