/*
 * Fixed-composition landscape kiosk system.
 *
 * The application is authored once at 1920x1080. On every other viewport,
 * the complete 1920x1080 canvas is uniformly scaled as one unit. Nothing
 * reflows, changes column count, or moves relative to another component.
 * Non-16:9 landscape screens use centered letterboxing to preserve geometry.
 */

html.kiosk-boot body {
    visibility: hidden;
}

body.kiosk-viewport {
    position: relative;
    width: 100vw;
    height: 100vh;
    min-width: 0;
    min-height: 0;
    margin: 0;
    padding: 0 !important;
    overflow: hidden;
    background: #000;
    touch-action: manipulation;
    overscroll-behavior: none;
}

.kiosk-stage {
    --kiosk-scale: 1;
    position: absolute !important;
    left: 0;
    top: 0;
    width: 1920px !important;
    height: 1080px !important;
    min-width: 1920px !important;
    min-height: 1080px !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    transform: scale(var(--kiosk-scale));
    transform-origin: 50% 50%;
    overflow: hidden !important;
    contain: layout paint style;
    will-change: transform;
}

/* Keep the stage itself on the original 1920x1080 artboard. */
.kiosk-stage.kiosk-page {
    width: 1920px !important;
    height: 1080px !important;
    min-width: 1920px !important;
    min-height: 1080px !important;
    background-size: 1920px 1080px !important;
    background-position: center center !important;
}

.kiosk-stage.inner-page {
    padding: 20px 28px !important;
}

/* The following restores the 1920x1080 desktop values after style.css's
   small-screen media queries have been evaluated by a smaller device. */

/* Shared 1040px usable height = 1080px stage - 20px top/bottom padding. */
.kiosk-stage .frame-layout,
.kiosk-stage .camera-layout,
.kiosk-stage .editor-layout,
.kiosk-stage .payment-layout,
.kiosk-stage .download-layout,
.kiosk-stage .payment-flow-page,
.kiosk-stage .payment-stage-page,
.kiosk-stage .package-download-layout {
    height: 1040px !important;
    min-height: 0 !important;
}

/* HOME */
.kiosk-stage .home-copy {
    left: 50% !important;
    top: 50% !important;
    width: 830px !important;
    max-width: 1800px !important;
    transform: translate(-50%, -50%) !important;
}
.kiosk-stage .home-copy .brand-title {
    width: 830px !important;
    max-width: 100% !important;
}
.kiosk-stage .home-copy .btn-start {
    width: 100% !important;
    min-height: 82px !important;
    font-size: 33px !important;
}

/* STEP 01 */
.kiosk-stage .frame-layout {
    grid-template-columns: minmax(0, 1fr) 320px !important;
    gap: 18px !important;
}
.kiosk-stage .frame-grid {
    grid-template-columns: repeat(3, 250px) !important;
    column-gap: 22px !important;
    padding: 0 32px 0 12px !important;
}
.kiosk-stage .frame-image-wrap {
    height: 690px !important;
}
.kiosk-stage .selected-frame-preview {
    height: 760px !important;
    max-height: 890px !important;
}

/* STEP 02 */
.kiosk-stage .camera-layout-strip-review {
    grid-template-columns: minmax(0, 1fr) 330px !important;
}
.kiosk-stage .camera-stage {
    padding: 18px 24px !important;
}
.kiosk-stage .camera-window,
.kiosk-stage .camera-controls-review {
    width: min(1160px, calc(100% - 24px)) !important;
}
.kiosk-stage .live-strip-shell {
    height: 690px !important;
}

/* STEP 03 */
.kiosk-stage .editor-layout {
    grid-template-columns: minmax(0, 1fr) 330px !important;
    gap: 18px !important;
}
.kiosk-stage #stripCanvas {
    height: 865px !important;
    max-height: 100% !important;
}
.kiosk-stage .filter-panel {
    padding: 20px 22px !important;
}

/* Legacy STEP 04 layout, kept fixed in case it is reached directly. */
.kiosk-stage .payment-card {
    width: 1500px !important;
    height: 100% !important;
    padding: 24px 30px !important;
}
.kiosk-stage .qris-box {
    width: 540px !important;
}

/* STEP 04 multipage package selection */
.kiosk-stage .payment-stage-shell {
    width: 1510px !important;
    height: 100% !important;
    padding: 30px 34px !important;
}
.kiosk-stage .payment-stage-header {
    margin-bottom: 24px !important;
}
.kiosk-stage .payment-stage-header h1 {
    font-size: 58px !important;
}
.kiosk-stage .package-mode-btn {
    min-height: 96px !important;
    padding: 16px 20px !important;
}
.kiosk-stage .package-strip-number {
    font-size: 78px !important;
}
.kiosk-stage .package-strip-price {
    font-size: 30px !important;
}
.kiosk-stage .instagram-discount-box.visible {
    max-height: 112px !important;
    margin-top: 16px !important;
    padding: 14px 18px !important;
}
.kiosk-stage .package-footer {
    margin-top: 18px !important;
    padding-top: 16px !important;
}
.kiosk-stage .order-summary-strip-count strong {
    font-size: 96px !important;
}
.kiosk-stage .method-choice-icon {
    width: 150px !important;
    height: 150px !important;
}
.kiosk-stage .payment-confirm-layout {
    padding: 0 46px 30px !important;
    gap: 58px !important;
}
.kiosk-stage .payment-main-qris-box,
.kiosk-stage .cash-visual-card {
    width: min(570px, 100%) !important;
}
.kiosk-stage .payment-confirm-amount {
    font-size: 72px !important;
}
.kiosk-stage .cash-confirm-dialog {
    width: 620px !important;
    max-width: 620px !important;
}

/* STEP 05 */
.kiosk-stage .package-download-card {
    width: 1320px !important;
    height: 100% !important;
    grid-template-columns: 390px minmax(0, 1fr) !important;
    gap: 58px !important;
    padding: 26px 34px !important;
}
.kiosk-stage .package-download-preview img {
    height: 940px !important;
    max-height: 100% !important;
}
.kiosk-stage .package-download-heading h1 {
    font-size: 64px !important;
}
.kiosk-stage .package-download-qr {
    width: 410px !important;
    height: 410px !important;
}
.kiosk-stage .package-download-copy {
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
}

/* Older Step 05 selectors retained for compatibility. */
.kiosk-stage .download-card {
    width: 1500px !important;
    height: 100% !important;
    grid-template-columns: 390px minmax(0, 1fr) !important;
    gap: 52px !important;
    padding: 22px 28px !important;
}
.kiosk-stage .download-preview img {
    height: 925px !important;
    max-height: 100% !important;
}
.kiosk-stage .download-copy {
    padding-top: 72px !important;
}
.kiosk-stage .download-copy h1 {
    font-size: 66px !important;
}
.kiosk-stage .qr-download-box {
    width: 390px !important;
    height: 390px !important;
}

/* Finish screen stays on the same fixed artboard. */
.kiosk-stage .finish-shell {
    width: 900px !important;
    max-width: 900px !important;
}
.kiosk-stage .finish-brand {
    width: 600px !important;
}
.kiosk-stage .finish-shell h1 {
    font-size: 62px !important;
}

/* Make transitions scale with the artboard and avoid viewport reflow. */
.kiosk-stage * {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

/* Dynamic frame carousel keeps the same geometry on every landscape device. */
.kiosk-stage .frame-carousel-area {
    grid-template-columns: 54px minmax(0, 1fr) 54px !important;
    gap: 12px !important;
}
.kiosk-stage .frame-grid.frame-grid-dynamic {
    display: flex !important;
    grid-template-columns: none !important;
    justify-content: flex-start !important;
    gap: 82px !important;
    padding: 0 38px !important;
    min-width: max-content !important;
}
.kiosk-stage .frame-grid-dynamic .frame-option {
    flex: 0 0 250px !important;
    width: 250px !important;
}
