:root {
    --bg-color: #f3f4f6;
    --card-bg: #ffffff;
    --accent: #ff6b6b;
    --accent-hover: #fa5252;
    --text-main: #2b2b2b;
    --text-light: #868e96;
    --font-sans: 'Outfit', sans-serif;
    --font-serif: 'Playfair Display', serif;
    /* 8.5x11 inches landscape = 11in width x 8.5in height */
    --sheet-width: 11in;
    --sheet-height: 8.5in;
    
    /* Card Styling Variables */
    --card-border-style: none;
    --card-border-color: #e64980;
    --card-border-width: 5px;
    --card-bg-color: #ffffff;
    --card-font-primary: var(--font-serif);
    --card-font-secondary: var(--font-sans);
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: var(--font-sans);
    background-color: var(--bg-color);
    color: var(--text-main);
    display: flex;
    min-height: 100vh;
}

/* --- UI Toolbar --- */
.toolbar {
    width: 380px;
    background: #ffffff;
    padding: 2rem;
    box-shadow: 2px 0 20px rgba(0,0,0,0.06);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-right: 1px solid rgba(255, 255, 255, 0.5);
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    position: fixed;
    height: 100vh;
    overflow-y: auto;
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.04);
    z-index: 100;
}

.toolbar h1 {
    font-size: 1.8rem;
    font-weight: 700;
    background: linear-gradient(135deg, #ff6b6b, #f06595);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.toolbar p {
    color: var(--text-light);
    font-size: 0.95rem;
    line-height: 1.5;
}

.primary-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    background: linear-gradient(135deg, #ff6b6b, #f06595);
    color: white;
    border: none;
    padding: 1rem 1.5rem;
    border-radius: 12px;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 1.1rem;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 4px 14px rgba(255, 107, 107, 0.3);
}

.primary-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4);
}

.secondary-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f3f5;
    color: var(--text-main);
    border: 1px solid #ced4da;
    padding: 0.75rem 1rem;
    border-radius: 8px;
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background 0.2s ease;
}

.secondary-btn:hover {
    background: #e9ecef;
}

.instructions {
    background: rgba(0, 0, 0, 0.03);
    border-radius: 12px;
    padding: 1.25rem;
    font-size: 0.9rem;
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.instructions ul {
    margin-top: 0.5rem;
    padding-left: 1.5rem;
    color: var(--text-main);
}

.instructions li {
    margin-bottom: 0.25rem;
}

/* --- Styling Controls --- */
.styling-controls {
    background: rgba(255, 255, 255, 0.5);
    border-radius: 12px;
    padding: 1.25rem;
    border: 1px solid rgba(0, 0, 0, 0.05);
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
}

.styling-controls h3 {
    font-size: 1rem;
    color: var(--text-main);
    margin-bottom: 0.2rem;
    font-weight: 600;
}

.control-group {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.control-group label {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--text-main);
}

.control-group input[type="color"], .control-group input[type="number"], .control-group select {
    padding: 0.5rem;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    font-family: inherit;
    font-size: 0.9rem;
}

.business-branding {
    margin-top: auto; 
    padding-top: 1rem;
    text-align: center;
    font-size: 0.8rem;
    color: var(--text-light);
    border-top: 1px solid rgba(0,0,0,0.05);
}

.business-branding a {
    display: inline-block;
    color: var(--accent);
    text-decoration: none;
    font-weight: 800;
    margin-left: 4px;
    transition: color 0.2s ease;
}

.business-branding a:hover {
    color: #c2255c;
    text-decoration: underline;
}

.control-group input[type="color"]::-webkit-color-swatch-wrapper {
	padding: 0;
}
.control-group input[type="color"]::-webkit-color-swatch {
	border: 1px solid rgba(0,0,0,0.2);
	border-radius: 4px;
}

.control-group select {
    padding: 0.3rem 0.5rem;
    border-radius: 6px;
    border: 1px solid #ced4da;
    font-family: var(--font-sans);
    font-size: 0.85rem;
    outline: none;
    width: 100px;
}

.control-group input[type="range"] {
    width: 100px;
}

/* --- Workspace --- */
.workspace {
    margin-left: 320px;
    flex: 1;
    padding: 3rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4rem;
}

.page-label {
    text-align: center;
    font-weight: 600;
    color: var(--text-light);
    margin-bottom: 1rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.85rem;
}

/* --- Card Setup --- */
.card-sheet {
    width: var(--sheet-width);
    height: var(--sheet-height);
    background: var(--card-bg);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
    display: flex;
    position: relative;
    overflow: hidden;
    /* A subtle dashed line to denote the fold in the UI */
}

.card-sheet::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    border-left: 2px dashed rgba(0, 0, 0, 0.1);
    pointer-events: none;
}

.card-half {
    width: 50%; /* 5.5 inches */
    height: 100%; /* 8.5 inches */
    position: relative;
    display: flex;
    flex-direction: column;
    background-color: var(--card-bg-color);
}

/* Added border inner to card applying styling variables */
.card-half::before {
    content: '';
    position: absolute;
    top: 0.25in;
    left: 0.25in;
    right: 0.25in;
    bottom: 0.25in;
    border-style: var(--card-border-style);
    border-color: var(--card-border-color);
    border-width: var(--card-border-width);
    pointer-events: none;
    z-index: 5;
    border-radius: 8px; /* Slight rounding on inner border */
}

/* Pattern classes applied by JS */
.card-half.pattern-polka {
    background-image: radial-gradient(rgba(0,0,0,0.05) 15%, transparent 16%), radial-gradient(rgba(0,0,0,0.05) 15%, transparent 16%);
    background-size: 20px 20px;
    background-position: 0 0, 10px 10px;
}
.card-half.pattern-stripes {
    background-image: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(0,0,0,0.03) 10px, rgba(0,0,0,0.03) 20px);
}
.card-half.pattern-confetti {
    background-image: radial-gradient(circle at 20% 30%, #ff6b6b 4px, transparent 5px),
                      radial-gradient(circle at 70% 60%, #4facfe 4px, transparent 5px),
                      radial-gradient(circle at 40% 80%, #ffd700 4px, transparent 5px),
                      radial-gradient(circle at 80% 20%, #43e97b 4px, transparent 5px);
    background-size: 60px 60px;
}
.card-half.pattern-hearts {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffb3ba' opacity='0.5' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E");
    background-size: 40px 40px;
}
.card-half.pattern-zigzag {
    background: 
        linear-gradient(135deg, rgba(0,0,0,0.03) 25%, transparent 25%) -20px 0,
        linear-gradient(225deg, rgba(0,0,0,0.03) 25%, transparent 25%) -20px 0,
        linear-gradient(315deg, rgba(0,0,0,0.03) 25%, transparent 25%),
        linear-gradient(45deg, rgba(0,0,0,0.03) 25%, transparent 25%);
    background-size: 40px 40px;
    background-color: var(--card-bg-color);
}


/* Standard visual padding for the printable areas */
.card-front, .card-back, .card-inside-left, .card-inside-right {
    padding: 0.5in;
}

/* --- Typography on Card --- */
[contenteditable="true"] {
    outline: none;
    transition: background 0.2s ease;
    border-radius: 4px;
}

[contenteditable="true"]:hover, [contenteditable="true"]:focus {
    background: rgba(255, 107, 107, 0.05);
}

/* --- Specific Card Panels --- */

/* 1. Back of the Card */
.card-back {
    justify-content: flex-end;
    align-items: center;
    padding-bottom: 1in;
}

.made-with-love {
    text-align: center;
    font-family: var(--font-sans);
    color: #adb5bd;
    font-size: 1rem;
    line-height: 1.6;
}

/* 2. Front of the Card */
.card-front {
    justify-content: flex-start;
    align-items: center;
    background-color: var(--card-bg-color); /* Allows dynamic styling */
}

.card-front .text-area {
    text-align: center;
    margin-top: 1in;
    width: 100%;
}

.card-title {
    font-family: var(--card-font-primary);
    font-size: 3.5rem;
    color: var(--card-border-color, #e64980); /* Tie text color to border loosely or keep original */
    line-height: 1.1;
    margin-bottom: 0.5rem;
}

.card-subtitle {
    font-family: var(--card-font-secondary);
    font-size: 1.25rem;
    color: #495057;
    font-weight: 300;
    letter-spacing: 2px;
    text-transform: uppercase;
}

/* 3. Inside Left (Photo) */
.card-inside-left {
    padding: 0.5in;
}

/* 4. Inside Right (Message) */
.card-inside-right {
    padding: 0.75in;
    justify-content: center;
}

.message-area {
    font-family: var(--card-font-primary);
    font-size: 1.25rem;
    color: #343a40;
    line-height: 1.8;
}

.message-area h2 {
    font-family: var(--card-font-secondary);
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
    font-weight: 600;
}

/* --- Photo Upload Components --- */
.photo-area {
    width: 100%;
    /* Keep an aspect ratio that fits nicely, e.g., square or 4:5 */
    aspect-ratio: 4/5;
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    background: #f8f9fa;
    border: 2px dashed #ced4da;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
    display: flex;
    align-items: center;
    justify-content: center;
}

.photo-area:hover {
    border-color: var(--accent);
    background: #fff5f5;
}

.upload-placeholder {
    color: #adb5bd;
    font-weight: 500;
    pointer-events: none;
    z-index: 10;
}

.photo-input {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 25;
}

/* --- Photo Grid Layouts --- */
.photo-grid {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: none; /* Only grid when photos exist */
    gap: 8px;
    padding: 8px;
    box-sizing: border-box;
    z-index: 15;
}

.uploaded-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.photo-item {
    position: relative;
    border-radius: 8px; /* Slightly rounded inner images */
    overflow: hidden;
    width: 100%;
    height: 100%;
    z-index: 30; /* Over input somewhat */
}

.photo-item:hover .remove-btn {
    opacity: 1;
}

.remove-btn {
    position: absolute;
    top: 6px;
    right: 6px;
    background: rgba(255, 60, 60, 0.9);
    color: white;
    border: none;
    border-radius: 50%;
    width: 28px;
    height: 28px;
    font-size: 16px;
    font-weight: bold;
    cursor: pointer;
    z-index: 40; /* Crucial: must be higher than photo-input (25) */
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
}

.remove-btn:hover {
    background: rgba(255, 0, 0, 1);
    transform: scale(1.1);
}

/* Grid configurations based on data-count and Layout mode */
/* 1. Grid */
.photo-grid.layout-grid[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.photo-grid.layout-grid[data-count="2"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; }
.photo-grid.layout-grid[data-count="3"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-grid[data-count="4"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-grid[data-count="5"] { grid-template-columns: repeat(3, 1fr); grid-template-rows: 1fr 1fr; }
.photo-grid.layout-grid[data-count="6"] { grid-template-columns: repeat(3, 1fr); grid-template-rows: 1fr 1fr; }
.photo-grid.layout-grid[data-count="7"], .photo-grid.layout-grid[data-count="8"], .photo-grid.layout-grid[data-count="9"] { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); }

/* 2. Featured */
.photo-grid.layout-featured[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.photo-grid.layout-featured[data-count="2"] { grid-template-columns: 1fr; grid-template-rows: 2fr 1fr; }
.photo-grid.layout-featured[data-count="3"] { grid-template-columns: 1.5fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-featured[data-count="3"] > .photo-item:nth-child(1) { grid-row: span 2; }
.photo-grid.layout-featured[data-count="4"] { grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 2fr 1fr; }
.photo-grid.layout-featured[data-count="4"] > .photo-item:nth-child(1) { grid-column: span 3; }
.photo-grid.layout-featured[data-count="5"] { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-featured[data-count="5"] > .photo-item:nth-child(1) { grid-row: span 2; }
.photo-grid.layout-featured[data-count="6"], .photo-grid.layout-featured[data-count="7"], .photo-grid.layout-featured[data-count="8"], .photo-grid.layout-featured[data-count="9"] { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: repeat(3, 1fr); }
.photo-grid.layout-featured[data-count="6"] > .photo-item:nth-child(1), .photo-grid.layout-featured[data-count="7"] > .photo-item:nth-child(1), .photo-grid.layout-featured[data-count="8"] > .photo-item:nth-child(1), .photo-grid.layout-featured[data-count="9"] > .photo-item:nth-child(1) { grid-row: span 2; }

/* 3. Mosaic */
.photo-grid.layout-mosaic[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.photo-grid.layout-mosaic[data-count="2"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; }
.photo-grid.layout-mosaic[data-count="3"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-mosaic[data-count="3"] > .photo-item:nth-child(1) { grid-column: span 2; }
.photo-grid.layout-mosaic[data-count="4"] { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.layout-mosaic[data-count="4"] > .photo-item:nth-child(1) { grid-row: span 2; }
.photo-grid.layout-mosaic[data-count="5"] { grid-template-columns: repeat(6, 1fr); grid-template-rows: 1fr 1fr; }
.photo-grid.layout-mosaic[data-count="5"] > .photo-item:nth-child(1), .photo-grid.layout-mosaic[data-count="5"] > .photo-item:nth-child(2) { grid-column: span 3; }
.photo-grid.layout-mosaic[data-count="5"] > .photo-item:nth-child(n+3) { grid-column: span 2; }
.photo-grid.layout-mosaic[data-count="6"] { grid-template-columns: repeat(4, 1fr); grid-template-rows: 1fr 1fr; }
.photo-grid.layout-mosaic[data-count="6"] > .photo-item:nth-child(1), .photo-grid.layout-mosaic[data-count="6"] > .photo-item:nth-child(2) { grid-column: span 2; }
.photo-grid.layout-mosaic[data-count="6"] > .photo-item:nth-child(n+3) { grid-column: span 1; }
.photo-grid.layout-mosaic[data-count="7"], .photo-grid.layout-mosaic[data-count="8"], .photo-grid.layout-mosaic[data-count="9"] { grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 1fr); }
.photo-grid.layout-mosaic[data-count="7"] > .photo-item:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.photo-grid.layout-mosaic[data-count="7"] > .photo-item:nth-child(2), .photo-grid.layout-mosaic[data-count="7"] > .photo-item:nth-child(3) { grid-column: span 2; }

/* 4. Row */
.photo-grid.layout-row { display: flex; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; justify-content: flex-start; gap: 10px; }
.photo-grid.layout-row > .photo-item { flex: 0 0 auto; width: auto; height: 100%; aspect-ratio: 1; min-width: 50%; border-radius: 8px;}

/* 5. Column */
.photo-grid.layout-column { display: flex; flex-direction: column; flex-wrap: nowrap; overflow-y: auto; overflow-x: hidden; gap: 10px;}
.photo-grid.layout-column > .photo-item { flex: 0 0 auto; width: 100%; height: auto; aspect-ratio: 1; border-radius: 8px;}

/* 6. Polaroid */
.photo-grid.layout-polaroid {
    display: flex; flex-wrap: wrap; gap: 15px; padding: 25px 15px; justify-content: center; align-items: center; overflow: visible;
}
.photo-grid.layout-polaroid > .photo-item {
    width: 60%;
    height: auto;
    aspect-ratio: 0.85;
    background: white;
    padding: 10px 10px 30px 10px;
    box-shadow: 0 6px 15px rgba(0,0,0,0.2) !important;
    border-radius: 2px !important;
    border: 1px solid #ddd;
    transition: transform 0.2s;
    overflow: visible;
}
/* Even elements get slightly rotated */
.photo-grid.layout-polaroid > .photo-item:nth-child(even) { transform: rotate(4deg); }
.photo-grid.layout-polaroid > .photo-item:nth-child(odd) { transform: rotate(-3deg); }
.photo-grid.layout-polaroid > .photo-item:hover { transform: scale(1.05) rotate(0deg); z-index: 45; }
.photo-grid.layout-polaroid > .photo-item img { border-radius: 0; }

/* --- Stickers --- */
.sticker-btn {
    background: white;
    border: 1px solid #ced4da;
    border-radius: 8px;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
    color: var(--text-main);
}
.sticker-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}

.sticker {
    position: absolute;
    width: 80px;
    height: 80px;
    z-index: 100;
    cursor: grab;
    resize: both; /* Native CSS resize */
    overflow: hidden;
    padding: 10px; /* space for resize handle and remove button */
    box-sizing: border-box;
}

.sticker:active {
    cursor: grabbing;
}

.sticker svg {
    width: 100%;
    height: 100%;
    pointer-events: none; /* easier to drag */
    filter: drop-shadow(0 2px 5px rgba(0,0,0,0.2));
}

.sticker-remove {
    position: absolute;
    top: 0;
    right: 0;
    width: 20px;
    height: 20px;
    background: red;
    color: white;
    border-radius: 50%;
    font-size: 14px;
    line-height: 18px;
    text-align: center;
    cursor: pointer;
    display: none;
    z-index: 110;
}

.sticker:hover .sticker-remove {
    display: block;
}

/* --- Add dynamic height to front photo based on available space --- */
#front-photo {
    height: 4.5in;
    flex-shrink: 0;
    aspect-ratio: auto;
    border-radius: 20px;
    margin-top: 0.5in;
}

#inside-photo {
    height: 100%;
    border-radius: 12px;
    border: none;
    background: transparent;
}
#inside-photo.empty {
    border: 2px dashed #ced4da;
    background: #f8f9fa;
}

/* --- Print Optimization --- */
@media print {
    @page {
        size: letter landscape;
        margin: 0;
    }

    body {
        margin: 0;
        padding: 0;
        background: white;
        min-height: auto;
        display: block;
    }

    .no-print {
        display: none !important;
    }

    .workspace {
        margin: 0;
        padding: 0;
        gap: 0;
        display: block;
    }

    .card-page {
        page-break-after: always;
        break-after: page;
        display: block;
    }

    .card-sheet {
        box-shadow: none;
        width: 11in;
        height: 8.5in;
        /* Remove dashed line for print */
    }

    .card-sheet::after {
        display: none;
    }

    .photo-area {
        border: none !important;
        background: transparent !important;
    }
    
    .upload-placeholder {
        display: none !important;
    }
}

/* --- Mobile Responsiveness --- */
@media (max-width: 850px) {
    body {
        flex-direction: column;
    }
    .toolbar {
        width: 100%;
        height: auto;
        position: relative;
        overflow: visible;
        border-right: none;
        border-bottom: 2px solid rgba(0,0,0,0.1);
        padding: 1.5rem;
    }
    .workspace {
        width: 100%;
        padding: 1rem 0;
        overflow-x: auto;
        /* Allow smooth horizontal swiping on mobile for the fixed-width card */
        -webkit-overflow-scrolling: touch;
        align-items: flex-start;
    }
    .card-page {
        margin: 0 auto;
    }
    .ad-container {
        width: calc(100% - 2rem) !important;
        margin: 0 auto 20px;
        overflow: hidden;
    }
}
