/* Web shell additions, keeping the seven training panels unchanged. */
#pwaBoot{position:fixed;inset:0;z-index:9999;background:#111512;color:#c7ff58;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;padding:24px;text-align:center;font:18px var(--sans)}
#pwaBoot strong{font:38px var(--display)}
#pwaDialog{position:fixed;inset:var(--dialog-top,70px) 0 auto;margin:0 auto;max-height:var(--dialog-height,75dvh);width:calc(100% - 24px);max-width:420px;padding:12px;overflow:hidden;display:none;flex-direction:column;gap:10px}
#pwaDialog[open]{display:flex}#pwaDialog .dialog-head{flex:none;margin:0}#pwaContent{overflow:auto;min-height:0;display:grid;gap:12px;font:13px/1.45 var(--sans)}
.pwa-section{border:1px solid var(--line);border-radius:8px;padding:12px;display:grid;gap:8px;background:#fafbf7}.pwa-section h3{font:20px var(--display)}.pwa-section p{font-size:12px}.pwa-section button,.pwa-section a.download{min-height:44px;padding:10px;border:1px solid #adb8a4;border-radius:6px;font:700 13px var(--sans);background:var(--lime);color:var(--ink);text-decoration:none;text-align:center;display:flex;align-items:center;justify-content:center}
.pwa-section button.quiet{background:transparent}.pwa-status{font-size:12px;color:var(--muted)}.pwa-note{padding:9px;border-left:3px solid #8cad39;background:#e5edd9;font-size:12px}.pwa-error{color:#9f3021}.pwa-section label.confirm{display:flex;align-items:flex-start;gap:8px;color:var(--ink);font-size:13px}.pwa-section input[type=checkbox]{width:22px;min-height:22px;flex:none;accent-color:#92b62d}
#pwaImportPreview{white-space:pre-line}#pwaDialog input[type=file]{font-size:12px}#pwaSettingsLink{font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0 4px;min-height:44px}
.pwa-conflict{position:fixed;inset:0;background:#111512ee;color:white;z-index:10000;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;text-align:center}
/* iPhone rotates its viewport; keep training content in a readable portrait column. */
@media(orientation:landscape){html:not(.timer-immersive) body{max-width:500px;margin:auto}html:not(.timer-immersive) dialog{max-width:min(420px,calc(100vw - 24px))}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.pwa-section label.confirm{min-height:44px;align-items:center}
