/* Web shell.
   - Phones (and inside the desktop iframe): the app fills the screen like a
     native app; its own 100vw/100vh pages resolve to the phone/iframe width.
   - Desktop/tablet OUTER page (html.desktop-frame, set by index.html): a brand
     backdrop with a centered phone "device" whose screen is an <iframe> running
     the app. Because it's a real iframe, the app's 100vw = the frame width, so
     nothing overflows. */

html, body {
    margin: 0;
    height: 100%;
}

body {
    background: #fff;
}

#app {
    width: 100%;
    min-height: 100vh;
}

/* ---- Desktop / tablet outer shell ---- */
html.desktop-frame,
html.desktop-frame body {
    height: 100%;
    overflow: hidden;
}

html.desktop-frame body {
    background: radial-gradient(circle at 50% 0%, #a30b3d 0%, #94002F 55%, #6d0022 100%);
    display: flex;
    align-items: center;
    justify-content: center;
}

.phone-shell {
    width: 400px;
    height: min(880px, calc(100vh - 40px));
    background: #111;
    border-radius: 46px;
    padding: 12px;
    box-shadow: 0 30px 90px rgba(0, 0, 0, .45);
    flex: 0 0 auto;
}

.phone-screen {
    width: 100%;
    height: 100%;
    border: 0;
    border-radius: 36px;
    background: #fff;
    display: block;
}

/* Startup splash (shown until Blazor boots inside the app/iframe). */
.startupSplash {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
}

/* Blazor's default error toast, brand-styled. */
#blazor-error-ui {
    display: none;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    padding: 12px 20px;
    background: #94002F;
    color: #fff;
    text-align: center;
    box-shadow: 0 -2px 12px rgba(0, 0, 0, .2);
}
#blazor-error-ui .reload { color: #fff; text-decoration: underline; margin-left: 8px; }
#blazor-error-ui .dismiss { cursor: pointer; position: absolute; right: 16px; top: 12px; }
