/* 学園祭 マイページ（来場者・生徒・保護者がスマホで見る）
   CSS は `&` の入れ子で書く（ルート CLAUDE.md の規約） */

:root {
    --line: #d8d8d8;
    --ink: #222;
    --muted: #6b6b6b;
    --bg: #f6f6f7;
    --accent: #0e438b;
    --danger: #b3261e;
    --ok: #2e7d32;
}

/* 続けてタップしたときのダブルタップ拡大を止める（2本指の拡大は残る）。→ shop.css と同じ */
html {
    touch-action: manipulation;
}

* {
    box-sizing: border-box;
    font-family: system-ui, -apple-system, 'Segoe UI', 'Hiragino Sans', sans-serif;
}

body {
    margin: 0;
    background-color: var(--bg);
    color: var(--ink);
    line-height: 1.6;
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

.hidden {
    display: none !important;
}

.center-note {
    min-height: 60dvh;
    display: grid;
    place-items: center;
    padding: 2rem;
    text-align: center;
    color: var(--muted);
    text-wrap: pretty;
}

header {
    background-color: #fff;
    border-bottom: 1px solid var(--line);
    padding: 1rem 1.25rem;
    text-align: center;

    & p {
        margin: 0;
        font-size: .8rem;
        color: var(--muted);
    }

    & h1 {
        margin: .1rem 0 0;
        font-size: 1.4rem;
        font-variant-numeric: tabular-nums;
    }

    & .stopped-badge {
        display: inline-block;
        margin-top: .5rem;
        color: var(--danger);
        border: 1px solid #e6c4c1;
        background-color: #fdf3f2;
        border-radius: 1em;
        padding: .1em 1em;
        font-size: .85rem;
    }

    /* 全店の販売状況（公開ページ）へのリンク */
    & .dash-link {
        display: inline-block;
        margin-top: .6rem;
        padding: .3em 1.1em;
        font-size: .85rem;
        color: var(--accent);
        text-decoration: none;
        border: 1px solid var(--line);
        border-radius: 1em;
        background-color: #fff;
    }
}

main {
    padding: 1rem;
    max-width: 34rem;
    margin: 0 auto;
}

/* ---- 金額 ---- */

.money {
    background-color: #fff;
    border: 1px solid var(--line);
    border-radius: .5rem;
    padding: 1.1rem 1.25rem 1.1rem 5.75rem;   /* 左はじゅくちゅうの分 */
    margin-bottom: 1rem;
    text-align: center;
    position: relative;

    /* 2025 のマイページと同じ、ランチのじゅくちゅう（左上）。金額に重ならない大きさ */
    &::before {
        content: '';
        position: absolute;
        top: .5rem;
        left: .75rem;
        width: 4.5rem;
        height: 4.5rem;
        background: url('/jukuchu/lunch.png') no-repeat center / contain;
        pointer-events: none;
    }

    & .money-main {
        display: flex;
        align-items: baseline;
        justify-content: center;
        gap: .35rem;

        & .money-label {
            color: var(--muted);
            font-size: .9rem;
        }

        & strong {
            font-size: 2.8rem;
            font-variant-numeric: tabular-nums;
            line-height: 1.1;
        }

        & .money-unit {
            color: var(--muted);
        }
    }

    & .money-sub {
        display: flex;
        justify-content: center;
        gap: 2rem;
        margin: .9rem 0 0;
        padding-top: .8rem;
        border-top: 1px solid var(--line);

        & div {
            text-align: center;
        }

        & dt {
            font-size: .75rem;
            color: var(--muted);
        }

        & dd {
            margin: 0;
            font-variant-numeric: tabular-nums;
        }
    }

    & .money-note {
        margin: .8rem 0 0;
        font-size: .78rem;
        color: var(--muted);
        text-align: left;
    }
}

/* ---- 枠 ---- */

.card {
    background-color: #fff;
    border: 1px solid var(--line);
    border-radius: .5rem;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;

    & h2 {
        margin: 0 0 .6rem;
        font-size: 1rem;
    }
}

.hint {
    font-size: .82rem;
    color: var(--muted);
    margin: .6rem 0 0;
    text-wrap: pretty;

    & strong {
        color: var(--ink);
    }
}

button {
    appearance: none;
    font-size: .95rem;
    padding: .6em 1.3em;
    border: 1px solid var(--line);
    border-radius: .3rem;
    background-color: #fff;
    color: var(--ink);
    cursor: pointer;
    margin-top: .8rem;

    &.danger {
        color: var(--danger);
        border-color: #e6c4c1;
    }
}

/* ---- 履歴 ---- */

.table-wrap {
    border: 1px solid var(--line);
    border-radius: .4rem;
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: collapse;
    font-size: .88rem;

    & th,
    & td {
        padding: .5em .7em;
        border-bottom: 1px solid var(--line);
        text-align: left;
        vertical-align: top;
    }

    & thead th {
        background-color: #fafafa;
        color: var(--muted);
        font-weight: normal;
        font-size: .75rem;
        white-space: nowrap;
    }

    & tbody tr:last-child :is(td) {
        border-bottom: none;
    }

    & td.num {
        text-align: right;
        white-space: nowrap;
        font-variant-numeric: tabular-nums;

        &.plus {
            color: var(--ok);
        }
    }

    & .shop {
        font-weight: bold;
    }

    & .detail {
        font-size: .8rem;
        color: var(--muted);
    }

    /* 取消は消さずに残す（取り消し線） */
    & tr.voided td {
        color: #a5a5a5;

        &.num {
            text-decoration: line-through;
        }

        & .shop {
            font-weight: normal;
        }
    }

    & .void-note {
        display: block;
        font-size: .7rem;
        color: var(--danger);
        text-decoration: none;
    }

    & td.empty {
        text-align: center;
        color: var(--muted);
        padding: 2rem 0;
    }
}

footer {
    text-align: center;
    color: var(--muted);
    font-size: .75rem;
    padding: 1.5rem 1rem 2rem;
}

/* ============================================================
 *  保護者ページ（parents.html）
 * ============================================================ */

button.primary {
    background-color: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

.preview-banner {
    margin: 0;
    padding: .5rem 1rem;
    text-align: center;
    font-size: .85rem;
    background-color: #eceff3;
    color: var(--ink);

    /* 操作モードは実データに書き込むので、はっきり色を変える */
    &.edit {
        background-color: #fdf3f2;
        color: var(--danger);
        font-weight: bold;
    }
}

.child-tabs {
    display: flex;
    gap: .5rem;
    padding: .75rem 1rem 0;
    max-width: 34rem;
    margin: 0 auto;
    overflow-x: auto;

    & button {
        margin: 0;
        flex: 1 0 auto;
        border-radius: 2em;

        &.active {
            background-color: var(--accent);
            border-color: var(--accent);
            color: #fff;
        }
    }
}

/* 見る内容の切り替え（お支払い／お子さまの利用／保護者の利用） */
.section-tabs {
    position: sticky;
    top: env(safe-area-inset-top, 0px);
    z-index: 5;
    display: flex;
    max-width: 34rem;
    margin: .75rem auto 0;
    padding: 0 1rem;
    background-color: var(--bg);

    & button {
        flex: 1;
        margin: 0;
        padding: .7em .4em;
        border: none;
        border-bottom: 3px solid var(--line);
        border-radius: 0;
        background-color: transparent;
        color: var(--muted);
        font-size: .9rem;

        &.active {
            color: var(--accent);
            border-bottom-color: var(--accent);
            font-weight: bold;
        }
    }
}

.qr-card {
    text-align: center;

    & .hint {
        text-align: left;
    }

    & > button {
        width: 100%;
    }
}

.qr-box {
    margin: .5rem 0;

    & .qr-image img {
        width: min(60vw, 14rem);
        height: auto;
        /* 小さいQRを拡大するのでぼかさない（読み取り精度が落ちる） */
        image-rendering: pixelated;
    }

    & .qr-timer {
        margin: .25rem 0 0;
        color: var(--muted);
        font-size: .85rem;
        font-variant-numeric: tabular-nums;
    }
}

.qr-remain {
    margin: .25rem 0 .5rem;
    font-size: .9rem;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
}

.qr-paid {
    background-color: #f3f9f3;
    border-radius: .5rem;
    padding: 1rem;
    margin: .5rem 0;

    & p {
        margin: 0;
    }

    & .qr-paid-head {
        color: var(--ok);
        font-weight: bold;
    }

    & .qr-paid-amount {
        font-size: 2rem;
        font-weight: bold;
        font-variant-numeric: tabular-nums;
    }

    & .qr-paid-shop {
        color: var(--muted);
        font-size: .9rem;
    }
}

.notice-box {
    background-color: #fdf3f2;
    border: 1px solid #e6c4c1;
    border-radius: .4rem;
    color: var(--danger);
    padding: .6rem .8rem;
    font-size: .85rem;
    text-align: left;
    margin: .5rem 0;
}

/* 本部の商品の返金のお知らせ（利用履歴の表の上。→ account-history.js gsRenderRefundNotices） */
.refund-notices {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin: 0 0 .75rem;

    &.hidden {
        display: none;
    }

    & .refund-notice {
        background-color: #eef6ee;
        border: 1px solid #b9d8bb;
        border-radius: .4rem;
        padding: .6rem .8rem;
        font-size: .85rem;
        text-align: left;

        & p {
            margin: 0;
        }

        & .refund-notice-head {
            font-weight: bold;
            color: var(--ok);
            margin-bottom: .2rem;
        }

        & .refund-notice-reason {
            margin-top: .2rem;
            color: var(--muted);
        }

        & .refund-notice-ask {
            margin-top: .3rem;
            font-weight: bold;
        }
    }
}

.hint-list {
    margin: .8rem 0 0;
    padding-left: 1.2rem;
    font-size: .8rem;
    color: var(--muted);
    text-align: left;

    & strong {
        color: var(--ink);
    }
}

.money-row {
    display: flex;
    justify-content: space-around;
    gap: .5rem;
    text-align: center;
    margin: .25rem 0 .5rem;

    & span {
        display: block;
        font-size: .75rem;
        color: var(--muted);
    }

    & strong {
        font-size: 1.4rem;
        font-variant-numeric: tabular-nums;
    }

    & small {
        color: var(--muted);
        margin-left: .1em;
    }
}

.limit-form {
    border-top: 1px solid var(--line);
    margin-top: .75rem;
    padding-top: .75rem;

    & h3 {
        margin: 0;
        font-size: .95rem;
    }

    & .form-row {
        display: flex;
        align-items: center;
        gap: .5rem;
        margin-top: .5rem;
    }

    & input {
        font-size: 1rem;
        padding: .45em .6em;
        border: 1px solid var(--line);
        border-radius: .3rem;
        width: 9rem;
    }

    & button {
        margin: 0;
    }
}

.sub-head {
    margin: 1rem 0 .5rem;
    font-size: .9rem;
}

.footnote {
    padding: 0 .25rem;
}
