.lvzo-shell {
    width: min(1500px, calc(100% - 32px));
    margin: 34px auto 70px;
    color: #eef3fb;
}

.lvzo-calendar,
.lvzo-write,
.lvzo-view {
    background: #0b1019;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 20px;
    box-shadow: 0 24px 70px rgba(0,0,0,.26);
    overflow: hidden;
}

.lvzo-calendar {
    padding: 28px;
}

.lvzo-calendar-header,
.lvzo-write-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 24px;
    margin-bottom: 24px;
}

.lvzo-eyebrow {
    display: block;
    margin-bottom: 6px;
    color: #4f8cff;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .14em;
}

.lvzo-calendar-header h1,
.lvzo-write-header h1 {
    margin: 0;
    color: #fff;
    font-size: 30px;
    line-height: 1.2;
}

.lvzo-calendar-header p,
.lvzo-write-header p {
    margin: 8px 0 0;
    color: #8895aa;
    font-size: 14px;
}

.lvzo-write-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 18px;
    border-radius: 10px;
    background: linear-gradient(135deg,#2563eb,#4f8cff);
    color: #fff !important;
    font-weight: 800;
    text-decoration: none !important;
}

.lvzo-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 16px;
    margin-bottom: 22px;
    border: 1px solid rgba(255,255,255,.07);
    border-radius: 14px;
    background: #0f1623;
}

.lvzo-filter a {
    padding: 8px 13px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 999px;
    color: #9ba8bc !important;
    background: #141d2b;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none !important;
}

.lvzo-filter a:hover,
.lvzo-filter a.is-active {
    color: #fff !important;
    border-color: #3b82f6;
    background: rgba(59,130,246,.18);
}

.lvzo-month-nav {
    display: grid;
    grid-template-columns: 48px 1fr 48px;
    align-items: center;
    margin: 14px 0 16px;
}

.lvzo-month-nav h2 {
    margin: 0;
    text-align: center;
    color: #fff;
    font-size: 25px;
}

.lvzo-month-nav a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    margin: auto;
    border-radius: 10px;
    background: #151f2e;
    color: #fff !important;
    font-size: 28px;
    text-decoration: none !important;
}

.lvzo-weekdays,
.lvzo-grid {
    display: grid;
    grid-template-columns: repeat(7,minmax(0,1fr));
}

.lvzo-weekdays {
    border-top: 1px solid rgba(255,255,255,.08);
    border-left: 1px solid rgba(255,255,255,.08);
}

.lvzo-weekdays > div {
    padding: 11px 5px;
    text-align: center;
    color: #8e9aaf;
    background: #121a27;
    border-right: 1px solid rgba(255,255,255,.08);
    border-bottom: 1px solid rgba(255,255,255,.08);
    font-size: 13px;
    font-weight: 800;
}

.lvzo-weekdays > div:first-child {
    color: #f87171;
}

.lvzo-weekdays > div:last-child {
    color: #60a5fa;
}

.lvzo-grid {
    border-left: 1px solid rgba(255,255,255,.08);
}

.lvzo-day {
    min-width: 0;
    min-height: 205px;
    padding: 10px;
    background: #0d141f;
    border-right: 1px solid rgba(255,255,255,.08);
    border-bottom: 1px solid rgba(255,255,255,.08);
}

.lvzo-day.is-empty {
    background: #090e16;
}

.lvzo-day-number {
    margin-bottom: 10px;
    color: #dbe4f2;
    font-size: 15px;
    font-weight: 900;
}

.lvzo-day-events {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.lvzo-event {
    position: relative;
    display: block;
    min-width: 0;
    padding: 9px 10px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 9px;
    background: #151e2c;
    color: #fff !important;
    text-decoration: none !important;
    overflow: hidden;
}

.lvzo-event:hover {
    transform: translateY(-1px);
    border-color: rgba(96,165,250,.55);
}

.lvzo-event-category {
    display: inline-block;
    margin-bottom: 4px;
    color: #7f8da2;
    font-size: 10px;
    font-weight: 800;
}

.lvzo-event-star {
    float: right;
    color: #f6c453;
    font-size: 10px;
    font-weight: 900;
}

.lvzo-event strong {
    display: block;
    margin-bottom: 3px;
    overflow: hidden;
    color: #f5f7fb;
    font-size: 13px;
    line-height: 1.35;
    font-weight: 900;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lvzo-event small {
    display: -webkit-box;
    overflow: hidden;
    color: #8d99ac;
    font-size: 11px;
    line-height: 1.4;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.lvzo-event-blue strong {
    color: #60a5fa;
}

.lvzo-event-purple strong {
    color: #c084fc;
}

.lvzo-event-gold {
    border-color: rgba(246,196,83,.35);
    background: linear-gradient(
        135deg,
        rgba(246,196,83,.13),
        #151e2c 65%
    );
}

.lvzo-event-gold strong {
    color: #f6c453;
}

.lvzo-event.is-recommended::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: #f6c453;
}

.lvzo-write,
.lvzo-view {
    width: min(1050px,100%);
    margin: 0 auto;
    padding: 30px;
}

.lvzo-point {
    padding: 11px 15px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 10px;
    background: #111a28;
    color: #8f9bb0;
    font-size: 12px;
}

.lvzo-point strong {
    display: block;
    margin-top: 2px;
    color: #60a5fa;
    font-size: 17px;
}

.lvzo-write-form {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 18px;
}

.lvzo-field {
    min-width: 0;
}

.lvzo-field-full,
.lvzo-recommend-box,
.lvzo-cost,
.lvzo-write-actions {
    grid-column: 1 / -1;
}

.lvzo-field > label {
    display: block;
    margin-bottom: 7px;
    color: #a9b4c6;
    font-size: 13px;
    font-weight: 800;
}

.lvzo-field input[type="text"],
.lvzo-field input[type="date"],
.lvzo-field select {
    width: 100%;
    height: 48px;
    padding: 0 14px;
    border: 1px solid rgba(255,255,255,.10);
    border-radius: 10px;
    outline: none;
    background: #0b121e;
    color: #fff;
}

.lvzo-field input:focus,
.lvzo-field select:focus {
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(59,130,246,.12);
}

.lvzo-style-picker {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    gap: 9px;
}

.lvzo-style {
    cursor: pointer;
}

.lvzo-style input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.lvzo-style > span {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 64px;
    border: 1px solid rgba(255,255,255,.09);
    border-radius: 10px;
    background: #121b29;
    color: #dfe6f0;
    font-weight: 900;
}

.lvzo-style small {
    margin-top: 3px;
    color: #778399;
    font-size: 11px;
}

.lvzo-style input:checked + span {
    border-color: #fff;
    box-shadow: 0 0 0 2px rgba(255,255,255,.10);
}

.lvzo-style-blue > span {
    color: #60a5fa;
}

.lvzo-style-purple > span {
    color: #c084fc;
}

.lvzo-style-gold > span {
    color: #f6c453;
}

.lvzo-recommend-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px;
    border: 1px solid rgba(246,196,83,.22);
    border-radius: 12px;
    background: rgba(246,196,83,.05);
}

.lvzo-recommend-box label {
    display: flex;
    align-items: center;
    gap: 11px;
    margin: 0;
    cursor: pointer;
}

.lvzo-recommend-box label > span {
    display: flex;
    flex-direction: column;
}

.lvzo-recommend-box strong,
.lvzo-recommend-box > b {
    color: #f6c453;
}

.lvzo-recommend-box small {
    color: #8c98aa;
}

.lvzo-cost {
    display: grid;
    grid-template-columns: repeat(3,1fr);
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 11px;
}

.lvzo-cost > div {
    display: flex;
    justify-content: space-between;
    padding: 15px;
    border-right: 1px solid rgba(255,255,255,.07);
    background: #101825;
    color: #8995a8;
}

.lvzo-cost > div:last-child {
    border-right: 0;
}

.lvzo-cost strong {
    color: #fff;
}

.lvzo-cost-total {
    background: rgba(59,130,246,.10) !important;
}

.lvzo-cost-total strong {
    color: #60a5fa;
}

.lvzo-write-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding-top: 5px;
}

.lvzo-write-actions a,
.lvzo-write-actions button {
    min-width: 100px;
    min-height: 44px;
    padding: 0 17px;
    border: 0;
    border-radius: 9px;
    font-weight: 800;
}

.lvzo-write-actions a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #151d29;
    color: #b0bac9 !important;
    text-decoration: none !important;
}

.lvzo-write-actions button {
    cursor: pointer;
    background: linear-gradient(135deg,#2563eb,#4f8cff);
    color: #fff;
}

.lvzo-view-top {
    display: flex;
    justify-content: space-between;
    gap: 20px;
}

.lvzo-back {
    color: #8ea0ba !important;
    text-decoration: none !important;
}

.lvzo-category,
.lvzo-recommended {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 900;
}

.lvzo-category {
    background: #182233;
    color: #92a0b5;
}

.lvzo-recommended {
    background: rgba(246,196,83,.12);
    color: #f6c453;
}

.lvzo-view-server {
    margin: 28px 0 5px;
    color: #fff;
    font-size: 34px;
}

.lvzo-view-title {
    margin: 0 0 20px;
    color: #bfc9d9;
    font-size: 19px;
}

.lvzo-title-blue {
    color: #60a5fa;
}

.lvzo-title-purple {
    color: #c084fc;
}

.lvzo-title-gold {
    color: #f6c453;
}

.lvzo-view-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    padding: 14px 0 20px;
    border-bottom: 1px solid rgba(255,255,255,.08);
    color: #7e8b9f;
    font-size: 12px;
}

.lvzo-view-meta strong {
    margin-left: 4px;
    color: #d8e0ec;
}

.lvzo-view-content {
    min-height: 260px;
    padding: 28px 0;
    color: #d3dbe7;
    line-height: 1.8;
}

.lvzo-manage {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.lvzo-manage form {
    margin: 0;
}

.lvzo-manage a,
.lvzo-manage button {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 14px;
    border: 1px solid rgba(255,255,255,.09);
    border-radius: 8px;
    background: #141d2a;
    color: #c8d1de !important;
    font-size: 12px;
    text-decoration: none !important;
    cursor: pointer;
}

@media (max-width: 900px) {
    .lvzo-shell {
        width: min(100% - 18px,1500px);
        margin-top: 16px;
    }

    .lvzo-calendar {
        padding: 16px;
        overflow-x: auto;
    }

    .lvzo-calendar-header {
        display: block;
    }

    .lvzo-write-button {
        margin-top: 16px;
    }

    .lvzo-weekdays,
    .lvzo-grid {
        min-width: 980px;
    }

    .lvzo-day {
        min-height: 190px;
    }

    .lvzo-write-form {
        grid-template-columns: 1fr;
    }

    .lvzo-field-full,
    .lvzo-recommend-box,
    .lvzo-cost,
    .lvzo-write-actions {
        grid-column: auto;
    }

    .lvzo-style-picker {
        grid-template-columns: repeat(2,1fr);
    }

    .lvzo-cost {
        grid-template-columns: 1fr;
    }

    .lvzo-cost > div {
        border-right: 0;
        border-bottom: 1px solid rgba(255,255,255,.07);
    }
}

/* =========================================================
   SmartEditor2
   바깥 페이지는 DARK, 편집 영역은 WHITE
   ========================================================= */

.lvzo-smarteditor-wrap {
    width: 100%;
    overflow: hidden;

    background: #fff;

    border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px;
}

.lvzo-smarteditor-wrap iframe {
    display: block;
    width: 100% !important;
    background: #fff !important;
}

.lvzo-smarteditor-wrap textarea {
    background: #fff !important;
    color: #222 !important;
}


/* =========================================================
   LV-ZONE OPEN CALENDAR CARD FINAL
   ========================================================= */


/* ---------------------------------------------------------
   OUTER
   추천 스탬프용 공간만 담당
   --------------------------------------------------------- */

.lvzo-grid .lvzo-event {
    position: relative !important;
    display: block !important;

    min-height: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: visible !important;

    border: 0 !important;
    border-radius: 0 !important;

    background: none !important;

    box-shadow: none !important;
    filter: none !important;
    animation: none !important;

    color: #fff !important;
    text-decoration: none !important;

    transform: none !important;
}


/*
 * 추천 글에는 카드 위쪽에 실제 공간을 만듦.
 * 스탬프가 OPEN과 구조적으로 겹치지 않는다.
 */
.lvzo-grid .lvzo-event.is-recommended {
    padding-top: 30px !important;
}


/* ---------------------------------------------------------
   REAL CARD BODY
   --------------------------------------------------------- */

.lvzo-event-body {
    position: relative;
    z-index: 1;

    min-height: 122px;

    padding: 10px 10px 13px;

    overflow: hidden;

    border:
        1px solid rgba(72,137,221,.50);

    border-radius: 12px;

    background:
        linear-gradient(
            145deg,
            #21416b 0%,
            #172f50 52%,
            #0e2038 100%
        );

    box-shadow:
        0 5px 16px rgba(18,66,128,.23);

    color: #fff;

    transition:
        transform .18s ease,
        filter .18s ease,
        box-shadow .18s ease;
}


/* 내용은 광택 위 */

.lvzo-event-body > * {
    position: relative;
    z-index: 3;
}


/* ---------------------------------------------------------
   기본 광택
   BODY overflow:hidden 안에서만 이동
   --------------------------------------------------------- */

.lvzo-event-body::after {
    content: "";

    position: absolute;
    z-index: 2;

    top: -40%;
    left: -48%;

    width: 32%;
    height: 180%;

    transform: skewX(-20deg);

    background:
        linear-gradient(
            100deg,
            transparent 0%,
            rgba(255,255,255,.02) 25%,
            rgba(255,255,255,.08) 40%,
            rgba(255,255,255,.30) 50%,
            rgba(255,255,255,.08) 60%,
            rgba(255,255,255,.02) 75%,
            transparent 100%
        );

    animation:
        lvzo-final-shine
        4.2s ease-in-out infinite;

    pointer-events: none;
}


@keyframes lvzo-final-shine {

    0%,
    20% {
        left: -48%;
    }

    55% {
        left: 120%;
    }

    100% {
        left: 120%;
    }
}


/* ---------------------------------------------------------
   OPEN
   --------------------------------------------------------- */

.lvzo-event-open-time {
    display: flex;
    align-items: center;
    justify-content: center;

    min-height: 29px;

    margin: 0 0 9px;
    padding: 4px 7px;

    border:
        1px solid rgba(128,190,255,.25);

    border-radius: 8px;

    background:
        linear-gradient(
            180deg,
            #346bab,
            #1b426f
        );

    color: #fff;

    font-size: 12px;
    line-height: 1.1;
    font-weight: 900;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.10);
}


/* ---------------------------------------------------------
   CATEGORY
   --------------------------------------------------------- */

.lvzo-event-meta {
    display: flex;
    align-items: center;

    min-height: 14px;

    margin-bottom: 4px;
}

.lvzo-event-category {
    display: inline-flex;

    color: #9db2cf;

    font-size: 10px;
    line-height: 1.2;
    font-weight: 800;
}


/* ---------------------------------------------------------
   SERVER / SUBTITLE
   --------------------------------------------------------- */

.lvzo-event-body > strong {
    display: block;

    margin: 4px 0 3px;

    overflow: hidden;

    color: #fff;

    font-size: 14px;
    line-height: 1.35;
    font-weight: 900;

    text-align: center;

    text-overflow: ellipsis;
    white-space: nowrap;

    text-shadow:
        0 1px 3px rgba(0,0,0,.35);
}

.lvzo-event-body > small {
    display: -webkit-box;

    overflow: hidden;

    color: rgba(255,255,255,.88);

    font-size: 11px;
    line-height: 1.4;
    font-weight: 700;

    text-align: center;

    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;

    text-shadow:
        0 1px 2px rgba(0,0,0,.30);
}


/* ---------------------------------------------------------
   HOVER
   --------------------------------------------------------- */

.lvzo-event:hover .lvzo-event-body {
    transform: translateY(-2px);

    filter: brightness(1.06);

    box-shadow:
        0 8px 23px rgba(40,105,190,.30);
}


/* =========================================================
   BLUE +50P
   ========================================================= */

.lvzo-event-blue .lvzo-event-body {
    border-color:
        rgba(61,191,255,.80);

    background:
        linear-gradient(
            145deg,
            #159de7 0%,
            #0874cf 50%,
            #064894 100%
        );

    box-shadow:
        0 6px 21px rgba(0,126,225,.31);
}

.lvzo-event-blue .lvzo-event-open-time {
    background:
        linear-gradient(
            180deg,
            #087bc7,
            #07518f
        );
}


/* =========================================================
   PURPLE +100P
   ========================================================= */

.lvzo-event-purple .lvzo-event-body {
    border-color:
        rgba(202,109,255,.80);

    background:
        linear-gradient(
            145deg,
            #a944df 0%,
            #7827bb 50%,
            #491679 100%
        );

    box-shadow:
        0 6px 22px rgba(149,48,212,.31);
}

.lvzo-event-purple .lvzo-event-open-time {
    background:
        linear-gradient(
            180deg,
            #802ab5,
            #541878
        );
}


/* =========================================================
   GOLD +200P
   ========================================================= */

.lvzo-event-gold .lvzo-event-body {
    border-color:
        rgba(255,224,96,.88);

    background:
        linear-gradient(
            145deg,
            #dfb22d 0%,
            #ad710e 50%,
            #674105 100%
        );

    box-shadow:
        0 6px 23px rgba(214,157,25,.32);
}

.lvzo-event-gold .lvzo-event-open-time {
    background:
        linear-gradient(
            180deg,
            #a87512,
            #6b4504
        );
}


/* =========================================================
   RAINBOW +400P
   카드 전체가 무지개로 부드럽게 흐름
   ========================================================= */

.lvzo-event-rainbow .lvzo-event-body {
    border:
        1px solid rgba(255,255,255,.62);

    background:
        linear-gradient(
            120deg,

            #e94560 0%,
            #ed7e3f 12%,
            #deb846 24%,
            #59bb76 37%,
            #3eabc5 50%,
            #4f7fd1 63%,
            #765fc8 76%,
            #b64eaa 88%,
            #e94560 100%
        );

    background-size:
        320% 320%;

    animation:
        lvzo-final-rainbow
        4.6s linear infinite;

    box-shadow:
        0 0 14px rgba(100,120,225,.24),
        0 7px 23px rgba(0,0,0,.30);
}


/*
 * 전체 gradient 자체가 계속 이동
 */
@keyframes lvzo-final-rainbow {

    0% {
        background-position:
            0% 50%;
    }

    25% {
        background-position:
            33% 50%;
    }

    50% {
        background-position:
            67% 50%;
    }

    75% {
        background-position:
            100% 50%;
    }

    100% {
        background-position:
            0% 50%;
    }
}


/*
 * Rainbow는 광택도 그대로 동작
 */
.lvzo-event-rainbow
.lvzo-event-body::after {
    background:
        linear-gradient(
            100deg,
            transparent 0%,
            rgba(255,255,255,.02) 25%,
            rgba(255,255,255,.11) 40%,
            rgba(255,255,255,.34) 50%,
            rgba(255,255,255,.11) 60%,
            rgba(255,255,255,.02) 75%,
            transparent 100%
        );
}


/*
 * OPEN은 어두운 glass로 고정
 */
.lvzo-event-rainbow
.lvzo-event-open-time {
    background:
        rgba(9,12,19,.72);

    border-color:
        rgba(255,255,255,.29);

    color: #fff;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.10);
}

.lvzo-event-rainbow
.lvzo-event-category {
    color:
        rgba(255,255,255,.87);
}

.lvzo-event-rainbow
.lvzo-event-body > strong,
.lvzo-event-rainbow
.lvzo-event-body > small {
    color: #fff;

    text-shadow:
        0 1px 4px rgba(0,0,0,.80);
}


/* =========================================================
   RECOMMEND +300P
   완전히 별도 공간에 도장
   ========================================================= */

.lvzo-event-star {
    position: absolute !important;

    z-index: 30 !important;

    /*
     * outer에 확보한 30px 영역 안에 존재
     */
    top: 1px !important;
    right: 7px !important;

    display: flex !important;

    align-items: center;
    justify-content: center;

    min-width: 65px !important;
    height: 27px !important;

    margin: 0 !important;
    padding: 0 9px !important;

    transform:
        rotate(6deg) !important;

    white-space:
        nowrap !important;

    border:
        2px solid #ffd95b !important;

    border-radius:
        4px !important;

    outline:
        1px solid rgba(255,217,91,.42);

    outline-offset:
        2px;

    background:
        #422900 !important;

    color:
        #ffe579 !important;

    font-size:
        10px !important;

    line-height:
        1 !important;
    font-weight:
        900 !important;

    text-shadow:
        0 1px 2px rgba(0,0,0,.55);

    box-shadow:
        0 4px 12px rgba(0,0,0,.45),
        0 0 9px rgba(255,207,58,.17);

    pointer-events:
        none !important;
}


/* 도장 안쪽 점선 */

.lvzo-event-star::before {
    content: "";

    position: absolute;

    inset: 3px;

    border:
        1px dashed rgba(255,235,140,.74);

    border-radius: 2px;
}


/*
 * 추천용 옛 pseudo 효과는 없음
 */
.lvzo-event.is-recommended::before {
    content: none !important;
    display: none !important;
}


/* =========================================================
   REGISTER FORM RAINBOW BUTTON
   ========================================================= */

.lvzo-style-rainbow > span {
    color: #fff !important;

    border:
        2px solid transparent !important;

    background:
        linear-gradient(
            #111827,
            #111827
        ) padding-box,

        linear-gradient(
            110deg,
            #e94560,
            #ed8a40,
            #deb846,
            #56ba77,
            #40abc5,
            #547fd1,
            #805fc8,
            #bd50ac
        ) border-box !important;
}


/* =========================================================
   FIELD HELP
   ========================================================= */

.lvzo-field-help {
    display: block;

    margin-top: 6px;

    color: #758398;

    font-size: 11px;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 700px) {

    .lvzo-grid
    .lvzo-event.is-recommended {
        padding-top:
            27px !important;
    }

    .lvzo-event-star {
        top:
            1px !important;

        right:
            5px !important;

        min-width:
            59px !important;

        height:
            24px !important;

        font-size:
            9px !important;
    }
}


/* =========================================================
   RECOMMEND ALIGN FIX
   일반 카드와 동일한 높이 정렬
   ========================================================= */

.lvzo-grid .lvzo-event.is-recommended {
    padding-top: 0 !important;
}


/*
 * 카드 자체는 일반 카드와 같은 위치.
 * 스탬프만 위쪽으로 살짝 걸침.
 */
.lvzo-event-star {
    top: -18px !important;
    right: 7px !important;
}


/* 모바일 */
@media (max-width: 700px) {

    .lvzo-grid .lvzo-event.is-recommended {
        padding-top: 0 !important;
    }

    .lvzo-event-star {
        top: -15px !important;
        right: 5px !important;
    }
}


/* =========================================================
   OPEN INSIDE EXISTING PORTAL PAGE TEMPLATE
   ========================================================= */

.lvzo-open-page-grid {
    margin-top: 14px;
}


/*
 * OPEN은 현재 별도 우측 sidebar가 없으므로
 * 일반 페이지의 content 영역을 전체 폭 사용.
 */
.lvzo-open-page-grid {
    grid-template-columns:
        minmax(0,1fr) !important;
}


.lvzo-open-page-board {
    min-width: 0;
}


.lvzo-open-page-body {
    min-width: 0;
}


/*
 * OPEN 자체 shell이 다시 폭 제한하지 않도록 함.
 */
.lvzo-open-page-body
.lvzo-shell {
    width: 100%;
    max-width: none;
    margin: 0;
}


/*
 * 달력 외곽은 Portal page-board 내부에 있으므로
 * 별도 거대한 외곽 패널 효과 제거.
 */
.lvzo-open-page-body
.lvzo-calendar {
    width: 100%;
    margin: 0;
}


/*
 * 기존 OPEN 내부 제목과 Portal 페이지 제목이 중복이면
 * OPEN 내부 hero 성격의 제목 영역만 약간 정리.
 */
.lvzo-open-page-body
.lvzo-calendar-header {
    margin-top: 0;
}


/*
 * 달력은 현재 Portal 본문 폭에 맞춰 약간 컴팩트.
 */
.lvzo-open-page-body
.lvzo-day {
    min-height: 170px;
}


@media (max-width: 720px) {

    .lvzo-open-page-grid {
        margin-top: 10px;
    }

}


/* =========================================================
   OPEN CARD TEXT / CONTINUOUS MARQUEE FINAL
   ========================================================= */


/* 카드 내부를 조금 더 컴팩트하게 */
.lvzo-event-body {
    padding: 8px 8px 10px !important;
}


/* OPEN */
.lvzo-event-open-time {
    min-height: 25px !important;
    margin-bottom: 6px !important;
    padding: 3px 5px !important;

    font-size: 10px !important;
    line-height: 1 !important;
}


/* CATEGORY */
.lvzo-event-meta {
    min-height: 11px !important;
    margin-bottom: 3px !important;
}

.lvzo-event-category {
    font-size: 8px !important;
    line-height: 1.15 !important;
}


/* =========================================================
   MARQUEE VIEWPORT
   ========================================================= */

.lvzo-event-body > .lvzo-marquee {
    position: relative !important;

    display: block !important;

    width: 100% !important;

    overflow: hidden !important;

    white-space: nowrap !important;

    text-overflow: clip !important;

    text-align: left !important;
}


/* 서버명 */
.lvzo-event-body > strong.lvzo-marquee {
    margin: 4px 0 2px !important;

    color: #fff !important;

    font-size: 10px !important;
    line-height: 1.35 !important;
    font-weight: 900 !important;
}


/* 부제 */
.lvzo-event-body > small.lvzo-marquee {
    margin: 1px 0 0 !important;

    color: rgba(255,255,255,.82) !important;

    font-size: 8px !important;
    line-height: 1.35 !important;
    font-weight: 700 !important;

    -webkit-line-clamp: unset !important;
    -webkit-box-orient: unset !important;
}


/* =========================================================
   TRACK
   ========================================================= */

.lvzo-marquee-track {
    display: inline-flex;

    align-items: center;

    width: max-content;

    white-space: nowrap;

    transform: translate3d(0,0,0);

    will-change: transform;
}


.lvzo-marquee-item {
    display: inline-block;

    flex: none;

    white-space: nowrap;

    text-shadow:
        0 1px 3px rgba(0,0,0,.38);
}


/*
 * JS가 overflow가 있는 경우에만
 * 두 번째 동일 텍스트를 추가하고 실행.
 */
.lvzo-marquee.is-overflowing
.lvzo-marquee-track {
    gap: var(--lvzo-marquee-gap, 28px);

    animation:
        lvzo-marquee-left
        var(--lvzo-marquee-duration, 8s)
        linear
        infinite;
}


/*
 * 한 방향으로만 계속 흐른다.
 *
 * 처음 문자열 + gap만큼 이동하면
 * 뒤에 복제해둔 동일 문자열이 정확히 이어서 나타난다.
 * 다음 loop에서 순간 이동해도 같은 문자열 위치라 눈에 안 보임.
 */
@keyframes lvzo-marquee-left {

    from {
        transform:
            translate3d(0,0,0);
    }

    to {
        transform:
            translate3d(
                calc(-1px * var(--lvzo-marquee-distance)),
                0,
                0
            );
    }
}


/* 모바일 */
@media (max-width:720px) {

    .lvzo-event-open-time {
        font-size: 9px !important;
    }

    .lvzo-event-category {
        font-size: 7px !important;
    }

    .lvzo-event-body > strong.lvzo-marquee {
        font-size: 9px !important;
    }

    .lvzo-event-body > small.lvzo-marquee {
        font-size: 7px !important;
    }
}


/* =========================================================
   OPEN CARD TEXT TUNE
   - 글씨 확대
   - OPEN + 시간 표시
   - 제목/부제 중앙 정렬
   ========================================================= */

.lvzo-event-body {
    padding: 10px 10px 12px !important;
}


/* ---------------------------------------------------------
   OPEN BAR
   --------------------------------------------------------- */

.lvzo-event-open-time {
    min-height: 40px !important;

    margin-bottom: 8px !important;
    padding: 5px 8px !important;

    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 2px !important;

    text-align: center !important;
}

.lvzo-event-open-label {
    display: block !important;

    font-size: 10px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    letter-spacing: .4px !important;

    color: #ffffff !important;
}

.lvzo-event-open-hour {
    display: block !important;

    font-size: 8px !important;
    line-height: 1 !important;
    font-weight: 700 !important;

    color: rgba(255,255,255,.82) !important;
}


/* ---------------------------------------------------------
   CATEGORY
   --------------------------------------------------------- */

.lvzo-event-meta {
    min-height: 14px !important;
    margin-bottom: 5px !important;

    text-align: left !important;
}

.lvzo-event-category {
    font-size: 10px !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;

    color: rgba(255,255,255,.72) !important;
}


/* ---------------------------------------------------------
   TITLE / SUBTITLE
   --------------------------------------------------------- */

/* 서버명 */
.lvzo-event-body > strong,
.lvzo-event-body > strong.lvzo-marquee {
    display: block !important;

    margin: 5px 0 3px !important;

    font-size: 17px !important;
    line-height: 1.22 !important;
    font-weight: 900 !important;

    color: #ffffff !important;

    text-align: center !important;
    letter-spacing: -.2px !important;
}

/* 부제 */
.lvzo-event-body > small,
.lvzo-event-body > small.lvzo-marquee {
    display: block !important;

    margin: 2px 0 0 !important;

    font-size: 11px !important;
    line-height: 1.28 !important;
    font-weight: 700 !important;

    color: rgba(255,255,255,.9) !important;

    text-align: center !important;
}


/* ---------------------------------------------------------
   MARQUEE AREA
   중앙 정렬 + 높이 안정화
   --------------------------------------------------------- */

.lvzo-event-body > .lvzo-marquee {
    width: 100% !important;
    overflow: hidden !important;
    white-space: nowrap !important;
    text-overflow: clip !important;
}

.lvzo-marquee-track,
.lvzo-marquee-item {
    vertical-align: middle !important;
}


/* 제목이 짧을 때 보기 좋게 */
.lvzo-event-body > strong.lvzo-marquee:not(.is-overflowing) .lvzo-marquee-track,
.lvzo-event-body > small.lvzo-marquee:not(.is-overflowing) .lvzo-marquee-track {
    width: 100% !important;
    justify-content: center !important;
}


/* ---------------------------------------------------------
   추천 도장 약간만 더 위
   --------------------------------------------------------- */

.lvzo-event-star {
    top: -24px !important;
}


/* ---------------------------------------------------------
   MOBILE
   --------------------------------------------------------- */

@media (max-width: 720px) {

    .lvzo-event-open-time {
        min-height: 36px !important;
        padding: 4px 6px !important;
    }

    .lvzo-event-open-label {
        font-size: 9px !important;
    }

    .lvzo-event-open-hour {
        font-size: 7px !important;
    }

    .lvzo-event-category {
        font-size: 9px !important;
    }

    .lvzo-event-body > strong,
    .lvzo-event-body > strong.lvzo-marquee {
        font-size: 15px !important;
    }

    .lvzo-event-body > small,
    .lvzo-event-body > small.lvzo-marquee {
        font-size: 10px !important;
    }

    .lvzo-event-star {
        top: -20px !important;
    }
}


/* =========================================================
   OPEN INLINE TIME FIX
   OPEN / 18:00 형식
   ========================================================= */

.lvzo-event-open-time {
    min-height: 0 !important;
    height: auto !important;

    margin-bottom: 8px !important;
    padding: 0 !important;

    display: block !important;
    text-align: center !important;
}

.lvzo-event-open-inline {
    display: block !important;

    padding: 10px 12px !important;
    border-radius: 14px !important;

    font-size: 12px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    letter-spacing: .2px !important;

    color: #ffffff !important;
    text-align: center !important;

    background: linear-gradient(
        180deg,
        rgba(20,31,52,.95) 0%,
        rgba(19,47,72,.94) 100%
    ) !important;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.06),
        0 0 0 1px rgba(115,177,255,.10) !important;
}


/* 예전 2줄 구조 안 쓰므로 무력화 */
.lvzo-event-open-label,
.lvzo-event-open-hour {
    display: inline !important;
    font-size: inherit !important;
    line-height: inherit !important;
    color: inherit !important;
}


/* 카드 텍스트 크기 밸런스 */
.lvzo-event-category {
    font-size: 10px !important;
    line-height: 1.2 !important;
}

.lvzo-event-body > strong,
.lvzo-event-body > strong.lvzo-marquee {
    font-size: 15px !important;
    line-height: 1.2 !important;
    text-align: center !important;
}

.lvzo-event-body > small,
.lvzo-event-body > small.lvzo-marquee {
    font-size: 11px !important;
    line-height: 1.25 !important;
    text-align: center !important;
}

@media (max-width: 720px) {
    .lvzo-event-open-inline {
        font-size: 11px !important;
        padding: 9px 10px !important;
    }

    .lvzo-event-body > strong,
    .lvzo-event-body > strong.lvzo-marquee {
        font-size: 14px !important;
    }

    .lvzo-event-body > small,
    .lvzo-event-body > small.lvzo-marquee {
        font-size: 10px !important;
    }
}


/* =========================================================
   OPEN / TIME INLINE COMPACT
   ========================================================= */

.lvzo-event-open-time {
    min-height: 0 !important;
    height: 32px !important;

    margin: 0 0 7px !important;
    padding: 0 !important;

    display: flex !important;
    align-items: center !important;
    justify-content: center !important;

    border-radius: 8px !important;
}

.lvzo-event-open-inline {
    display: block !important;

    width: 100% !important;

    padding: 0 6px !important;

    font-size: 11px !important;
    line-height: 32px !important;
    font-weight: 900 !important;

    text-align: center !important;
    white-space: nowrap !important;

    background: none !important;
    box-shadow: none !important;
}


/* 폼 time input도 기존 input과 동일하게 */
.lvzo-field input[type="time"] {
    width: 100%;
    min-height: 48px;
    box-sizing: border-box;
}


/* =========================================================
   CUSTOM OPEN TIME PICKER
   ========================================================= */

.lvzo-time-picker {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
    align-items: center;
    gap: 10px;
}

.lvzo-time-picker select {
    width: 100%;
    height: 52px;

    padding: 0 16px;

    border:
        1px solid rgba(130,160,205,.18);

    border-radius: 11px;

    outline: none;

    background:
        #0b1421;

    color:
        #f2f6fc;

    font-size:
        15px;

    font-weight:
        800;

    cursor: pointer;
}

.lvzo-time-picker select:focus {
    border-color:
        #3d83ed;

    box-shadow:
        0 0 0 3px
        rgba(61,131,237,.10);
}

.lvzo-time-colon {
    color:
        #7e91ab;

    font-size:
        19px;

    font-weight:
        900;
}


/* 빠른 시간 선택 */
.lvzo-time-quick {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;

    margin-top: 9px;
}

.lvzo-time-quick-btn {
    min-width: 65px;

    padding:
        7px 11px;

    border:
        1px solid #26364a;

    border-radius:
        8px;

    background:
        #101b2b;

    color:
        #8fa2bc;

    font-size:
        11px;

    font-weight:
        800;

    cursor:
        pointer;

    transition:
        .15s ease;
}

.lvzo-time-quick-btn:hover,
.lvzo-time-quick-btn.is-active {
    border-color:
        #3c82ed;

    background:
        rgba(49,117,226,.16);

    color:
        #ffffff;
}

@media (max-width:720px) {

    .lvzo-time-picker {
        gap: 6px;
    }

    .lvzo-time-picker select {
        height: 48px;

        padding:
            0 10px;

        font-size:
            13px;
    }
}


/* =========================================================
   LVZ OPEN MOBILE WEEK CSS V1
   ========================================================= */

.lvzo-mobile-week {
    display: none;
}


@media (max-width: 768px) {

    /*
     * 모바일에서는 월 전체 달력을 숨기고
     * 주간 7일 뷰만 표시한다.
     */
    .lvzo-calendar > .lvzo-month-nav,
    .lvzo-calendar > .lvzo-weekdays,
    .lvzo-calendar > .lvzo-grid:not(.lvzo-mobile-week-grid) {
        display: none !important;
    }

    .lvzo-mobile-week {
        display: block !important;
        width: 100%;
    }


    /*
     * 이전주 / 기간 / 다음주
     */
    .lvzo-mobile-week-nav {
        display: grid;
        grid-template-columns: 44px minmax(0,1fr) 44px;
        align-items: center;
        gap: 8px;

        margin: 14px 0 12px;
    }

    .lvzo-mobile-week-prev,
    .lvzo-mobile-week-next {
        display: flex;
        align-items: center;
        justify-content: center;

        width: 44px;
        height: 44px;

        border: 1px solid #d9e1ea;
        border-radius: 10px;

        background: #fff;

        color: #152238;
        font-size: 27px;
        font-weight: 800;
        line-height: 1;

        text-decoration: none;
    }

    .lvzo-mobile-week-title {
        min-width: 0;
        text-align: center;
    }

    .lvzo-mobile-week-title strong {
        display: block;

        color: #132238;
        font-size: 16px;
        line-height: 1.25;
        font-weight: 900;
    }

    .lvzo-mobile-week-title span {
        display: block;

        margin-top: 3px;

        color: #7b8999;
        font-size: 10px;
        line-height: 1.2;
        font-weight: 700;
    }


    /*
     * 7일은 모바일에서 세로 목록.
     * 한 날짜 안의 기존 OPEN 카드는 그대로 사용.
     */
    .lvzo-mobile-week-grid.lvzo-grid {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px !important;

        width: 100% !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-mobile-week-day {
        display: block !important;

        min-height: 76px !important;
        padding: 10px !important;

        border: 1px solid #e1e7ee !important;
        border-radius: 12px !important;

        background: #fff !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-mobile-week-day.is-today {
        border-color: #287cff !important;

        box-shadow:
            0 0 0 2px
            rgba(40,124,255,.10) !important;
    }


    /*
     * 날짜 헤더
     */
    .lvzo-mobile-week-grid
    .lvzo-day-number {
        display: flex !important;
        align-items: center !important;

        gap: 7px !important;

        min-height: 28px !important;
        margin: 0 0 8px !important;
        padding: 0 !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number strong {
        color: #162236;
        font-size: 16px;
        line-height: 1;
        font-weight: 950;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number span {
        color: #68778a;
        font-size: 12px;
        font-weight: 800;
    }

    .lvzo-mobile-week-grid
    .is-sunday
    .lvzo-day-number strong,
    .lvzo-mobile-week-grid
    .is-sunday
    .lvzo-day-number span {
        color: #d63c48;
    }

    .lvzo-mobile-week-grid
    .is-saturday
    .lvzo-day-number strong,
    .lvzo-mobile-week-grid
    .is-saturday
    .lvzo-day-number span {
        color: #276bd8;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number em {
        margin-left: auto;
        padding: 4px 7px;

        border-radius: 20px;

        background: #287cff;

        color: #fff;
        font-size: 10px;
        line-height: 1;
        font-style: normal;
        font-weight: 900;
    }


    /*
     * OPEN 카드
     */
    .lvzo-mobile-week-grid
    .lvzo-day-events {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 8px !important;

        width: 100% !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-event {
        width: 100% !important;
        max-width: none !important;
    }

    .lvzo-mobile-week-empty {
        padding: 10px 2px 4px;

        color: #9aa6b3;
        font-size: 11px;
        line-height: 1.3;
        font-weight: 700;
    }
}


/* =========================================================
   LVZ OPEN MOBILE WEEK COMPACT V2
   ========================================================= */

@media (max-width: 768px) {

    /*
     * 전체 폭 초과 방지
     */
    .lvzo-calendar,
    .lvzo-mobile-week,
    .lvzo-mobile-week-grid,
    .lvzo-mobile-week-day,
    .lvzo-mobile-week-day * {
        box-sizing: border-box;
    }

    .lvzo-calendar,
    .lvzo-mobile-week {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow-x: hidden !important;
    }

    .lvzo-mobile-week-grid.lvzo-grid {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;

        grid-template-columns: 1fr !important;
        gap: 6px !important;

        padding: 0 !important;
        margin: 0 !important;

        overflow: visible !important;
    }


    /*
     * 상단 이전주 / 다음주도 조금 작게
     */
    .lvzo-mobile-week-nav {
        grid-template-columns: 38px minmax(0,1fr) 38px !important;
        gap: 6px !important;

        margin: 8px 0 9px !important;
    }

    .lvzo-mobile-week-prev,
    .lvzo-mobile-week-next {
        width: 38px !important;
        height: 38px !important;

        min-width: 38px !important;

        border-radius: 9px !important;

        font-size: 23px !important;
    }

    .lvzo-mobile-week-title strong {
        font-size: 14px !important;
        line-height: 1.15 !important;
    }

    .lvzo-mobile-week-title span {
        margin-top: 2px !important;
        font-size: 9px !important;
    }


    /*
     * 날짜 한 칸:
     * 기존 큰 카드 -> 작고 압축된 행
     */
    .lvzo-mobile-week-grid
    .lvzo-mobile-week-day {
        display: grid !important;

        grid-template-columns:
            82px
            minmax(0,1fr) !important;

        align-items: center !important;
        gap: 7px !important;

        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        min-height: 48px !important;

        margin: 0 !important;
        padding: 7px 8px !important;

        border-radius: 9px !important;
    }


    /*
     * 날짜 영역
     */
    .lvzo-mobile-week-grid
    .lvzo-day-number {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        align-content: center !important;

        gap: 2px 5px !important;

        width: 82px !important;
        min-width: 0 !important;
        min-height: 30px !important;

        margin: 0 !important;
        padding: 0 !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number strong {
        font-size: 14px !important;
        line-height: 1.1 !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number span {
        font-size: 10px !important;
        line-height: 1.1 !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-day-number em {
        flex-basis: auto !important;

        margin: 0 !important;
        padding: 2px 5px !important;

        font-size: 8px !important;
        line-height: 1.1 !important;
    }


    /*
     * 일정 영역
     */
    .lvzo-mobile-week-grid
    .lvzo-day-events {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;

        gap: 5px !important;

        margin: 0 !important;
        padding: 0 !important;
    }


    /*
     * 일정 없는 날은 한 줄만
     */
    .lvzo-mobile-week-empty {
        display: flex !important;
        align-items: center !important;

        min-height: 28px !important;

        padding: 0 !important;
        margin: 0 !important;

        color: #98a4b3 !important;

        font-size: 10px !important;
        line-height: 1.2 !important;
    }


    /*
     * 실제 일정 카드도 부모 폭 이상 커지지 않게
     */
    .lvzo-mobile-week-grid
    .lvzo-event {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    .lvzo-mobile-week-grid
    .lvzo-event-body {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }


    /*
     * 혹시 기존 grid에서 남은 최소폭 제거
     */
    .lvzo-mobile-week-grid > *,
    .lvzo-mobile-week-grid
    .lvzo-day-events > * {
        min-width: 0 !important;
        max-width: 100%;
    }
}

