.screen-reader-text { position:absolute !important; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); width:1px; height:1px; overflow:hidden; word-wrap:normal !important; }
        .asianspa-caisse-app { margin:0; background:#f4f3ed; color:#182725; font-family:"DM Sans",Arial,sans-serif; min-height:100vh; box-sizing:border-box; }
        *, *::before, *::after { box-sizing:inherit; }
        .asianspa-caisse-app button, .asianspa-caisse-app input, .asianspa-caisse-app select, .asianspa-caisse-app textarea { font-family:"DM Sans",Arial,sans-serif; }

        /* Login */
        .asianspa-caisse-account-logout { margin:20px 0 0; font-size:13px; }
        .asianspa-caisse-account-logout a { color:#59665e; text-underline-offset:3px; }
        .asianspa-caisse-account-logout a:hover { color:#182725; }
        .asianspa-caisse-app--login { display:flex; align-items:center; justify-content:center; padding:16px; }
        .asianspa-caisse-card { padding:28px 24px; max-width:420px; width:100%; }
        .asianspa-caisse-card h1 { font-weight:700; font-size:1.35rem; margin:0 0 20px; text-align:center; }
        .asianspa-caisse-msg { border-radius:5px; padding:12px 14px; margin-bottom:18px; font-size:0.95rem; line-height:1.45; }
        .asianspa-caisse-msg.error { background:rgba(239,68,68,.18); border:1px solid rgba(248,113,113,.45); color:#992b2b; }
        .asianspa-caisse-msg.info { background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.35); color:#28566f; }
        .asianspa-caisse-pin-label { display:block; font-size:14px; font-weight:600; text-align:center; }
        .asianspa-caisse-pin-input { display:block; width:100%; max-width:240px; margin:10px auto; min-height:52px; padding:8px 14px; border:1px solid #a5afa4; border-radius:4px; background:#fff; color:#182725; font-size:24px; letter-spacing:.4em; text-align:center; }
        .asianspa-caisse-pin-help { margin:0 0 18px; font-size:13px; line-height:1.5; text-align:center; color:#637063; }
        .asianspa-caisse-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:14px; }
        .asianspa-caisse-grid button { padding:18px 0; font-size:1.25rem; border:none; border-radius:5px; background:#ffffff; color:#182725; cursor:pointer; font-weight:600; }
        .asianspa-caisse-grid button:active { transform:scale(.97); }
        .asianspa-caisse-actions { display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-top:8px; }
        .asianspa-caisse-actions button, .asianspa-caisse-actions .asianspa-btn { padding:12px 20px; border-radius:5px; border:none; font-weight:600; cursor:pointer; font-size:0.95rem; text-decoration:none; display:inline-block; }
        .asianspa-caisse-actions .primary { background:#c3e86c; color:#182725; }
        .asianspa-caisse-actions .ghost { background:#d9ded4; color:#182725; }

        /* Shell connecté */
        .asianspa-caisse-shell { display:flex; flex-direction:column; min-height:100vh; max-width:1080px; margin:0 auto; padding-bottom:calc(88px + env(safe-area-inset-bottom, 0px)); }
        .asianspa-caisse-top {
            display:flex; align-items:center; justify-content:space-between; gap:12px;
            padding:14px 16px; padding-top:calc(14px + env(safe-area-inset-top, 0px));
            border-bottom:1px solid #d9ded4; background:#f4f3ed; backdrop-filter:blur(8px);
            position:sticky; top:0; z-index:20;
        }
        .asianspa-caisse-top h1 { margin:0; font-size:1.15rem; font-weight:700; letter-spacing:.02em; }
        .asianspa-caisse-top-meta { display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
        .asianspa-caisse-badge { font-size:.8rem; padding:6px 12px; border-radius:999px; background:#ffffff; color:#35443a; max-width:46vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
        .asianspa-caisse-icon-btn {
            display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; border:none; border-radius:5px;
            background:#d9ded4; color:#182725; cursor:pointer;
        }
        .asianspa-caisse-icon-btn:active { transform:scale(.96); }
        .asianspa-caisse-icon-btn svg { width:22px; height:22px; }

        .asianspa-caisse-panels { flex:1; padding:30px 40px; }
        .asianspa-caisse-panel { display:none; animation:asianspaFade .2s ease; }
        .asianspa-caisse-panel.is-active { display:block; }
        @keyframes asianspaFade { from { opacity:0; transform:translateY(6px);} to { opacity:1; transform:none;} }

        .asianspa-caisse-panel h2 { margin:0 0 12px; font-size:1.25rem; font-weight:700; color:#182725; }
        .asianspa-caisse-panel .asianspa-lead { margin:0 0 20px; color:#637063; font-size:1rem; line-height:1.55; }
        .asianspa-caisse-placeholder {
            border:1px dashed #c6cec2; border-radius:5px; padding:28px 20px; text-align:center; color:#637063; font-size:0.95rem; line-height:1.5;
            background:#ffffff;
        }
        .asianspa-caisse-placeholder strong { display:block; color:#455448; margin-bottom:8px; font-size:1.05rem; }

        .asianspa-caisse-alert { border-radius:5px; padding:12px 14px; margin-bottom:16px; font-size:0.92rem; line-height:1.45; }
        .asianspa-caisse-alert.error { background:rgba(239,68,68,.14); border:1px solid rgba(248,113,113,.4); color:#992b2b; }
        .asianspa-caisse-alert.success { background:rgba(16,185,129,.14); border:1px solid rgba(52,211,153,.45); color:#315d3c; }

        .asianspa-caisse-create-form label { display:block; font-size:0.82rem; font-weight:600; color:#455448; margin-bottom:6px; }
        .asianspa-caisse-create-form input[type="text"],
        .asianspa-caisse-create-form input[type="email"],
        .asianspa-caisse-create-form input[type="tel"],
        .asianspa-caisse-create-form input[type="date"],
        .asianspa-caisse-create-form input[type="number"],
        .asianspa-caisse-create-form textarea,
        .asianspa-caisse-create-form select {
            width:100%; max-width:100%; box-sizing:border-box; padding:12px 14px; border-radius:5px; border:1px solid #c6cec2; background:#ffffff; color:#182725; font-size:1rem;
        }
        .asianspa-caisse-create-form input[type="date"] { color-scheme: light; min-height:46px; }
        .asianspa-caisse-create-form select:disabled { opacity:.55; }
        .asianspa-caisse-create-form textarea { min-height:72px; resize:vertical; }
        .asianspa-caisse-create-form .asianspa-caisse-check {
            display:flex; align-items:flex-start; gap:10px; font-weight:500; font-size:0.92rem; color:#35443a; cursor:pointer;
        }
        .asianspa-caisse-create-form .asianspa-caisse-check input { width:auto; margin-top:3px; }
        .asianspa-caisse-field { margin-bottom:14px; }
        .asianspa-caisse-field > span.asianspa-caisse-label { display:block; font-size:0.82rem; font-weight:600; color:#455448; margin-bottom:6px; }
        .asianspa-caisse-field-hint { font-size:0.82rem; color:#637063; margin-top:6px; line-height:1.45; }
        .asianspa-caisse-fieldset { margin:14px 0 10px; border:none; padding:0; }
        .asianspa-caisse-fieldset label { display:flex; gap:10px; align-items:flex-start; margin-bottom:10px; font-weight:500; font-size:0.92rem; color:#35443a; cursor:pointer; }
        .asianspa-caisse-actions-row { margin-top:18px; display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
        .asianspa-caisse-submit { padding:14px 22px; border-radius:5px; border:none; font-weight:700; cursor:pointer; font-size:1rem; background:#c3e86c; color:#182725; }
        .asianspa-walkin-card { margin-top:8px; }
        .asianspa-walkin-grid { display:grid; gap:0 16px; }
        @media (min-width:760px) {
            .asianspa-walkin-grid { grid-template-columns:1fr 1fr; }
            .asianspa-walkin-grid .asianspa-caisse-field--full { grid-column:1 / -1; }
        }

        .asianspa-caisse-success-code { font-size:clamp(1.75rem, 6vw, 2.75rem); font-weight:800; letter-spacing:.08em; text-align:center; margin:16px 0 12px; color:#435b24; word-break:break-all; font-variant-numeric:tabular-nums; }
        .asianspa-cardtype-picks { display:grid; gap:12px; margin:6px 0 16px; }
        @media (min-width:760px) { .asianspa-cardtype-picks { grid-template-columns:repeat(3,minmax(0,1fr)); } }
        .asianspa-cardtype-pick {
            border:1px solid #c6cec2; border-radius:5px; padding:14px 12px; background:#ffffff;
            color:#35443a; cursor:pointer; transition:.15s ease; min-height:122px;
            display:flex; flex-direction:column; gap:8px; justify-content:flex-start;
        }
        .asianspa-cardtype-pick:hover { border-color:#647064; transform:translateY(-1px); }
        .asianspa-cardtype-pick.is-selected { border-color:#456832; background:rgba(16,185,129,.12); box-shadow:none; }
        .asianspa-cardtype-pick svg { width:28px; height:28px; color:#315d3c; }
        .asianspa-cardtype-pick strong { font-size:0.92rem; color:#182725; }
        .asianspa-cardtype-pick span { font-size:0.8rem; color:#637063; line-height:1.35; }
        .asianspa-create-details[hidden] { display:none !important; }

        /* Barre navigation */
        .asianspa-caisse-nav-wrap {
            position:fixed; left:0; right:0; bottom:0; z-index:30;
            padding-bottom:env(safe-area-inset-bottom, 0px);
            background:linear-gradient(180deg, transparent 0%, #f4f3ed 18%);
            pointer-events:none;
        }
        .asianspa-caisse-nav {
            pointer-events:auto; display:flex; flex-wrap:nowrap; justify-content:space-around; align-items:stretch;
            gap:4px; margin:0 auto; max-width:1080px;
            padding:10px 8px 12px; border-top:1px solid #d9ded4; background:#f4f3ed;
        }
        .asianspa-caisse-nav button {
            flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px;
            padding:10px 4px 8px; border:none; border-radius:5px; background:transparent; color:#637063; cursor:pointer;
            font-size:0.68rem; font-weight:600; line-height:1.15; text-align:center;
        }
        .asianspa-caisse-nav button svg { width:26px; height:26px; flex-shrink:0; opacity:.9; }
        .asianspa-caisse-nav button[aria-current="true"] { color:#456832; background:rgba(16,185,129,.12); }
        .asianspa-caisse-nav button[aria-current="true"] svg { opacity:1; }
        .asianspa-caisse-nav button:active { transform:scale(.97); }

        @media (min-width:480px) {
            .asianspa-caisse-nav button { font-size:0.72rem; padding-top:12px; }
            .asianspa-caisse-nav button svg { width:28px; height:28px; }
        }

        .asianspa-caisse-alert.warn { background:rgba(251,191,36,.12); border:1px solid rgba(251,191,36,.42); color:#75531b; }

        .asianspa-caisse-modal-overlay {
            position:fixed; inset:0; z-index:100; background:rgba(15,23,42,.78); backdrop-filter:blur(8px);
            display:none; align-items:center; justify-content:center; padding:max(16px, env(safe-area-inset-bottom));
        }
        .asianspa-caisse-modal-overlay.is-open { display:flex; }
        .asianspa-caisse-modal {
            background:#ffffff; border:1px solid #c6cec2; border-radius:5px; padding:22px 20px 18px; max-width:440px; width:100%;
            box-shadow:0 24px 56px rgba(0,0,0,.48);
        }
        .asianspa-caisse-modal h3 { margin:0 0 12px; font-size:1.18rem; color:#182725; font-weight:700; }
        .asianspa-caisse-modal p { margin:0 0 16px; color:#455448; font-size:0.96rem; line-height:1.55; }
        .asianspa-caisse-modal-actions { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; margin-top:4px; }
        .asianspa-caisse-modal-actions button {
            padding:11px 18px; border-radius:5px; border:none; font-weight:600; cursor:pointer; font-size:0.92rem;
        }
        .asianspa-caisse-modal-actions .ghost { background:#d9ded4; color:#182725; }
        .asianspa-caisse-modal-actions .primary { background:#c3e86c; color:#182725; }
        .asianspa-cal-modal-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; flex-wrap:wrap; }
        .asianspa-cal-nav-btn {
            border:1px solid #c6cec2; background:#ffffff; color:#35443a; border-radius:5px;
            width:40px; height:40px; font-size:1.35rem; line-height:1; cursor:pointer;
            display:inline-flex; align-items:center; justify-content:center; padding:0;
            font-weight:700; flex-shrink:0;
        }
        .asianspa-cal-nav-btn:hover:not(:disabled) { background:#d9ded4; border-color:#647064; }
        .asianspa-cal-nav-btn:disabled { opacity:0.45; cursor:not-allowed; }
        .asianspa-cal-modal-title { margin:0; font-size:1.05rem; color:#182725; transition:opacity 0.15s ease; }
        .asianspa-cal-modal-title.is-loading { opacity:0.55; }
        .asianspa-cal-weekdays { display:grid; grid-template-columns:repeat(7, 1fr); gap:4px; margin-bottom:6px; font-size:0.72rem; font-weight:700; color:#637063; text-align:center; text-transform:uppercase; letter-spacing:0.02em; }
        .asianspa-cal-grid { display:grid; grid-template-columns:repeat(7, 1fr); gap:6px; }
        .asianspa-cal-cell {
            position:relative; min-height:44px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start;
            padding:8px 4px 12px; border-radius:5px; border:1px solid transparent; background:transparent; color:#35443a;
            font-weight:600; font-size:0.9rem; cursor:pointer; font-family:inherit;
        }
        .asianspa-cal-cell:hover:not(:disabled) { background:#d9ded4; border-color:#c6cec2; }
        .asianspa-cal-cell:disabled { cursor:default; opacity:0.35; }
        .asianspa-cal-cell.is-muted { color:#647064; }
        .asianspa-cal-cell.is-selected { border-color:#c3e86c; background:#e9f3d7; box-shadow:0 0 0 1px #c3e86c inset; }
        .asianspa-cal-cell.has-resa::after {
            content:''; position:absolute; bottom:6px; left:50%; transform:translateX(-50%); width:7px; height:7px;
            background:#3b82f6; border-radius:50%;
        }

        .asianspa-caisse-workcard { margin-top:4px; }
        .asianspa-caisse-workcard__head h2 { margin:0 0 8px; font-size:1.35rem; font-weight:800; letter-spacing:-.02em; color:#182725; }
        .asianspa-caisse-recap {
            border:1px solid #c6cec2; border-radius:5px; padding:20px 18px 18px;
            background:linear-gradient(165deg, #ffffff 0%, #f4f3ed 100%);
            margin-bottom:22px; box-shadow:none;
        }
        .asianspa-caisse-recap__type { margin:0 0 8px; font-size:0.72rem; text-transform:uppercase; letter-spacing:.08em; color:#637063; font-weight:600; }
        .asianspa-caisse-recap__code { margin:0 0 10px; font-weight:800; font-size:1.25rem; letter-spacing:.04em; font-variant-numeric:tabular-nums; color:#435b24; word-break:break-all; }
        .asianspa-caisse-recap__ben { margin:0 0 8px; color:#35443a; font-size:1rem; }
        .asianspa-caisse-recap__meta { margin:0 0 6px; font-size:0.9rem; color:#637063; }
        .asianspa-caisse-recap__balance { margin:12px 0 0; font-size:1.15rem; font-weight:700; color:#315d3c; }

        .asianspa-caisse-blocks { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; margin-bottom:22px; }
        .asianspa-caisse-panel-block {
            min-width:0; border-radius:5px; border:1px solid #d9ded4; padding:16px 16px 14px;
            background:#ffffff;
        }
        .asianspa-caisse-panel-block h3 {
            margin:0 0 12px; font-size:0.95rem; font-weight:700; color:#182725;
            padding-bottom:10px; border-bottom:1px solid #d9ded4;
        }
        .asianspa-caisse-panel-block--debit { border-color:#c6cec2; background:#edf2e5; }
        .asianspa-caisse-panel-block--adjust { border-color:#d9ded4; background:#fff; }
        .asianspa-caisse-panel-block--cancel { border-color:#e3caca; background:#fff4f2; }
        .asianspa-caisse-panel-block--history { border-color:#c6cec2; background:#f4f3ed; }

        .asianspa-caisse-submit--plus {
            color:#182725;
        }
        .asianspa-caisse-submit--minus {
            background:#992b2b;
            color:#fef2f2;
        }
        .asianspa-caisse-sess-row { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
        .asianspa-caisse-sess-row .asianspa-caisse-submit { flex:1; min-width:140px; }
        .asianspa-caisse-advanced {
            border:1px solid #d9ded4; border-radius:5px; background:#ffffff; padding:0; width:100%;
        }
        .asianspa-caisse-advanced > summary {
            cursor:pointer; list-style:none; padding:14px 16px; font-weight:700; color:#35443a;
            display:flex; align-items:center; justify-content:space-between; gap:10px;
            background:#d9ded4;
            border-radius:5px;
            user-select:none;
        }
        .asianspa-caisse-advanced > summary::-webkit-details-marker { display:none; }
        .asianspa-caisse-advanced > summary::after {
            content:"";
            width:10px; height:10px; border-right:2px solid #455448; border-bottom:2px solid #455448;
            transform:rotate(45deg) translateY(-1px);
            transition:transform .18s ease;
            flex-shrink:0;
        }
        .asianspa-caisse-advanced[open] > summary { border-bottom:1px solid rgba(71,85,105,.65); border-radius:5px 16px 0 0; }
        .asianspa-caisse-advanced[open] > summary::after { transform:rotate(-135deg) translateY(-1px); }
        .asianspa-caisse-advanced-grid { display:grid; grid-template-columns:minmax(0,1fr); min-width:0; gap:16px; padding:14px 16px 16px; }
        @media (min-width:720px) {
            .asianspa-caisse-advanced-grid { grid-template-columns:repeat(2, minmax(0,1fr)); }
        }
        @media (max-width:860px) {
            .asianspa-caisse-panels { padding:22px 16px 24px; }
        }

        .asianspa-caisse-tx-wrap { margin-top:10px; border-radius:8px; border:1px solid #c3c4c7; overflow:hidden; background:#ffffff; }
        .asianspa-caisse-tx-table { width:100%; border-collapse:collapse; font-size:0.8125rem; }
        .asianspa-caisse-tx-table th {
            text-align:left; padding:10px 12px; background:#edf0e8; color:#182725; font-weight:600;
            border-bottom:1px solid #d9ded4;
        }
        .asianspa-caisse-tx-table td { padding:10px 12px; border-top:1px solid #d9ded4; color:#182725; vertical-align:top; background:#ffffff; }
        .asianspa-caisse-tx-table tbody tr:nth-child(odd) td { background:#f8f9f5; }
        .asianspa-tx-amt--pos { color:#315d3c; font-weight:700; font-variant-numeric:tabular-nums; }
        .asianspa-tx-amt--neg { color:#992b2b; font-weight:700; font-variant-numeric:tabular-nums; }
        .asianspa-tx-amt--zero { color:#637063; }
        .asianspa-tx-sd--pos { color:#315d3c; font-weight:700; }
        .asianspa-tx-sd--neg { color:#992b2b; font-weight:700; }
        .asianspa-caisse-muted { color:#637063; font-size:0.78rem; margin-top:4px; line-height:1.35; }
        .asianspa-today-toolbar { display:flex; flex-direction:column; gap:12px; align-items:stretch; margin:10px 0 12px; }
        .asianspa-today-toolbar-row { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
        .asianspa-today-date-form { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
        .asianspa-today-date-picker {
            border:1px solid #c6cec2; background:#ffffff; color:#35443a; border-radius:5px; padding:8px 14px; cursor:pointer;
            font-weight:700; font-size:0.9rem; min-width:140px; text-align:center;
        }
        .asianspa-today-date-picker:hover { border-color:#647064; background:#d9ded4; }
        .asianspa-today-date-btn {
            border:1px solid #c6cec2; background:#ffffff; color:#35443a; border-radius:5px; padding:8px 12px; cursor:pointer; font-weight:700; min-width:42px;
        }
        .asianspa-today-date-btn--today { font-weight:600; min-width:auto; }
        .asianspa-view-switch { display:inline-flex; border:1px solid #c6cec2; border-radius:5px; overflow:hidden; }
        .asianspa-view-switch button { border:none; background:#ffffff; color:#455448; padding:8px 12px; cursor:pointer; font-weight:600; font-size:.82rem; }
        .asianspa-view-switch button.is-active { background:#c3e86c; color:#182725; }
        .asianspa-today-filter {
            background:#f4f3ed; color:#35443a; border:1px solid #c6cec2; border-radius:5px; padding:8px 12px;
            min-width:220px; max-width:320px; font-size:.84rem; font-weight:600; outline:none;
        }
        .asianspa-today-filter:focus { border-color:#22d3ee; box-shadow:0 0 0 2px rgba(34,211,238,.22); }
        .asianspa-today-views > div { display:none; }
        .asianspa-today-views > div.is-active { display:block; }
        .asianspa-schedule-wrap { border:1px solid #d9ded4; border-radius:5px; background:#f4f3ed; overflow:auto; position:relative; }
        .asianspa-schedule-grid { display:grid; min-width:760px; }
        .asianspa-schedule-head { position:sticky; top:0; z-index:2; background:#edf0e8; display:grid; border-bottom:1px solid #d9ded4; }
        .asianspa-schedule-head div { padding:8px; font-size:.78rem; font-weight:700; color:#455448; border-right:1px solid #d9ded4; }
        .asianspa-schedule-body { position:relative; display:grid; }
        .asianspa-schedule-hour { height:92px; border-top:1px solid #d9ded4; border-right:1px solid #d9ded4; padding:4px 6px; font-size:.72rem; color:#637063; }
        .asianspa-schedule-cell { height:92px; border-top:1px solid #d9ded4; border-right:1px solid #d9ded4; }
        .asianspa-now-line { position:absolute; left:0; right:0; height:2px; background:#ef4444; z-index:4; opacity:.9; }
        .asianspa-now-line::before { content:attr(data-label); position:absolute; top:-16px; left:8px; font-size:.7rem; color:#fff; background:#7f1d1d; padding:1px 6px; border-radius:999px; }
        .asianspa-resa-block {
            position:absolute; z-index:3; border-radius:8px; padding:6px 7px; border:1px solid rgba(52,211,153,.4);
            background:rgba(16,185,129,.16); color:#315d3c; font-size:.72rem; overflow:hidden; cursor:pointer;
        }
        .asianspa-resa-block.is-past { opacity:.42; filter:saturate(.5); }
        .asianspa-resa-block--pending { border-color:rgba(251,191,36,.55); background:rgba(251,191,36,.14); color:#75531b; }
        .asianspa-resa-block--cancelled { border-color:rgba(248,113,113,.5); background:rgba(239,68,68,.13); color:#992b2b; }
        .asianspa-resa-block--completed { border-color:rgba(148,163,184,.55); background:rgba(100,116,139,.2); color:#35443a; }
        .asianspa-resa-title { font-weight:700; color:#21442b; margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .asianspa-resa-meta { color:#315d3c; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .asianspa-resa-block--merged .asianspa-resa-meta {
            white-space:normal;
            font-size:.68rem;
            line-height:1.35;
            overflow:hidden;
            display:-webkit-box;
            -webkit-line-clamp:5;
            -webkit-box-orient:vertical;
        }
        .asianspa-home-upcoming { margin-top:20px; }
        .asianspa-home-upcoming-list { list-style:none; margin:12px 0 0; padding:0; }
        .asianspa-home-upcoming-item {
            display:flex; align-items:center; gap:12px; padding:10px 12px;
            border:1px solid rgba(71,85,105,.55); border-radius:5px; margin-bottom:8px;
            background:#f4f3ed;
        }
        .asianspa-home-upcoming-time { font-weight:700; color:#315d3c; min-width:48px; }
        .asianspa-home-upcoming-main { flex:1; min-width:0; }
        .asianspa-home-upcoming-client { font-weight:600; color:#182725; }
        .asianspa-home-upcoming-service { color:#637063; font-size:.9rem; }
        .asianspa-home-kpi { margin:16px 0; color:#455448; }
        .asianspa-home-cta-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }
        .asianspa-walkin-slots { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
        .asianspa-walkin-slot-btn {
            padding:8px 12px; border-radius:8px; border:1px solid rgba(71,85,105,.7);
            background:#ffffff; color:#182725; cursor:pointer; font-weight:600;
        }
        .asianspa-walkin-slot-btn.is-selected { background:#c3e86c; color:#182725; border-color:#c3e86c; }
        .asianspa-walkin-slot-btn:disabled { opacity:.45; cursor:not-allowed; }
        .asianspa-walkin-avail { margin-top:8px; padding:10px 12px; border-radius:8px; font-weight:600; }
        .asianspa-walkin-avail.ok { background:rgba(16,185,129,.15); color:#315d3c; }
        .asianspa-walkin-avail.none { background:rgba(239,68,68,.12); color:#992b2b; }
        .asianspa-walkin-avail.loading { background:rgba(59,130,246,.12); color:#28566f; }
        .asianspa-resa-actions { display:flex; flex-wrap:wrap; gap:6px; }
        .asianspa-resa-actions button {
            padding:6px 10px; border-radius:8px; border:none; font-size:.82rem; font-weight:600; cursor:pointer;
        }
        .asianspa-resa-actions .ghost { background:#d9ded4; color:#182725; }
        .asianspa-resa-actions .danger { background:#7f1d1d; color:#fee2e2; }
        .asianspa-today-new-resa-btn {
            padding:10px 16px; border-radius:5px; border:none; background:#c3e86c; color:#182725;
            font-weight:700; cursor:pointer; margin-left:auto; box-shadow:none;
        }
        .asianspa-today-new-resa-btn:hover { filter:brightness(1.05); }
        .asianspa-panel-heading-row { display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:space-between; margin-bottom:4px; }
        .asianspa-panel-heading-row h2 { margin:0; }
        .asianspa-empty-resa-cta {
            margin-top:16px; padding:18px; border-radius:5px; border:1px dashed rgba(52,211,153,.45);
            background:rgba(16,185,129,.08); text-align:center;
        }
        .asianspa-service-cell { min-width:160px; }
        .asianspa-service-title { font-weight:600; color:#182725; line-height:1.35; }
        .asianspa-service-options { margin-top:4px; font-size:.78rem; color:#637063; line-height:1.35; }
        .asianspa-loc-name { font-weight:700; color:#35443a; }
        .asianspa-note-badge {
            display:inline-flex; align-items:center; justify-content:center;
            min-width:18px; height:18px; padding:0 5px; border-radius:999px;
            background:#f59e0b; color:#1c1917; font-size:.72rem; font-weight:800; line-height:1;
            margin-left:6px; vertical-align:middle;
        }
        .asianspa-resa-actions .has-note { position:relative; }
        .asianspa-resa-note-existing {
            margin:12px 0 16px; padding:12px 14px; border-radius:5px;
            border:1px solid rgba(71,85,105,.7); background:#f4f3ed;
            color:#35443a; white-space:pre-wrap; line-height:1.45; min-height:48px;
        }
        .asianspa-resa-note-existing.is-empty { color:#637063; font-style:italic; white-space:normal; }
        .asianspa-resa-detail-grid { display:grid; gap:8px; margin:12px 0; }
        .asianspa-resa-detail-row { display:flex; gap:8px; }
        .asianspa-resa-detail-label { color:#637063; min-width:110px; }
        .asianspa-resa-detail-value { color:#182725; flex:1; white-space:pre-wrap; }
        .asianspa-caisse-modal form.asianspa-caisse-create-form { margin-top:8px; }
        .asianspa-caisse-modal form.asianspa-caisse-create-form .asianspa-caisse-field { margin-bottom:16px; }
        .asianspa-caisse-modal form.asianspa-caisse-create-form textarea {
            width:100%; min-height:120px; box-sizing:border-box;
            padding:12px 14px; border-radius:5px; border:1px solid #c6cec2;
            background:#ffffff; color:#182725; font-size:1rem; resize:vertical;
        }
        .asianspa-caisse-modal form.asianspa-caisse-create-form input[type="text"] {
            width:100%; box-sizing:border-box; padding:12px 14px; border-radius:5px;
            border:1px solid #c6cec2; background:#ffffff; color:#182725; font-size:1rem;
        }
        .asianspa-status-badge { display:inline-flex; align-items:center; gap:6px; border-radius:999px; padding:4px 10px; font-size:.75rem; font-weight:700; border:1px solid transparent; }
        .asianspa-status-badge--confirmed { background:rgba(16,185,129,.14); color:#315d3c; border-color:rgba(16,185,129,.35); }
        .asianspa-status-badge--pending { background:rgba(251,191,36,.14); color:#75531b; border-color:rgba(251,191,36,.45); }
        .asianspa-status-badge--cancelled { background:rgba(239,68,68,.14); color:#992b2b; border-color:rgba(239,68,68,.45); }
        .asianspa-status-badge--completed { background:rgba(148,163,184,.2); color:#35443a; border-color:rgba(148,163,184,.45); }
        .asianspa-loc-badge { display:inline-flex; align-items:center; gap:7px; border-radius:999px; padding:4px 10px; font-size:.75rem; background:#ffffff; color:#455448; border:1px solid #c6cec2; }
        .asianspa-loc-badge::before { content:''; width:8px; height:8px; border-radius:999px; background:var(--loc-color, #38bdf8); display:inline-block; }

/* Direction 01: a calm workspace, shared with the booking module and administration. */
.asianspa-caisse-app { line-height:1.5; }
.asianspa-caisse-app h1,.asianspa-caisse-app h2,.asianspa-caisse-app h3 { font-family:Manrope,Arial,sans-serif; letter-spacing:-.04em; }
.asianspa-caisse-app :focus-visible { outline:3px solid var(--wb-ink, #182725); outline-offset:3px; }
.asianspa-caisse-app input,.asianspa-caisse-app select { accent-color:#315d3c; }
.asianspa-caisse-card { background:#fff; border:1px solid #d9ded4; border-radius:6px; padding:36px; }
.asianspa-caisse-card h1 { font-size:30px; margin-bottom:8px; font-weight:600; }
.asianspa-caisse-intro { color:#637063; text-align:center; font-size:14px; margin:0 0 24px; }
.asianspa-caisse-eyebrow { margin:0 0 16px; color:#435b24; font-size:10px; letter-spacing:.14em; text-transform:uppercase; text-align:center; }
.asianspa-caisse-grid button { background:#f4f3ed; border:1px solid #d9ded4; border-radius:4px; }
.asianspa-caisse-grid button:hover { background:#e9f3d7; }
.asianspa-caisse-actions .primary { min-width:150px; }
.asianspa-caisse-top { background:#182725; color:#f4f3ed; backdrop-filter:none; padding:18px 30px; }
.asianspa-caisse-top h1 { font-size:22px; }
.asianspa-caisse-top .asianspa-caisse-badge { background:#304138; color:#f4f3ed; }
.asianspa-caisse-icon-btn { background:#304138; color:#f4f3ed; border-radius:4px; }
.asianspa-caisse-panel>h2,.asianspa-caisse-workcard__head h2 { font-size:30px; font-weight:600; }
.asianspa-caisse-panel .asianspa-lead { font-size:14px; }
.asianspa-home-kpi { font:600 24px Manrope,Arial,sans-serif; letter-spacing:-.04em; }
.asianspa-home-upcoming { background:white; border:1px solid #d9ded4; padding:22px; margin-top:30px; border-radius:5px; }
.asianspa-home-upcoming-item { background:#fff; border:0; border-bottom:1px solid #d9ded4; border-radius:0; padding:18px 0; margin:0; }
.asianspa-home-upcoming-item:last-child { border-bottom:0; }
.asianspa-caisse-create-form { background:white; padding:24px; border:1px solid #d9ded4; border-radius:5px; }
.asianspa-caisse-panel-block .asianspa-caisse-create-form,.asianspa-caisse-modal .asianspa-caisse-create-form { padding:0; border:0; border-radius:0; background:transparent; }
.asianspa-caisse-create-form input,.asianspa-caisse-create-form select { min-height:44px; }
.asianspa-caisse-create-form input[type=checkbox],.asianspa-caisse-create-form input[type=radio] { min-height:0; }
.asianspa-caisse-create-form .asianspa-caisse-field { min-width:0; }
.asianspa-cardtype-pick.is-selected { background:#e9f3d7; }
.asianspa-caisse-nav-wrap { background:#f4f3ed; }
.asianspa-caisse-nav { background:#fff; }
.asianspa-caisse-nav button { border-radius:4px; }
.asianspa-caisse-nav button[aria-current=true] { color:#182725; background:#c3e86c; }
.asianspa-caisse-modal { max-height:calc(100dvh - 32px); overflow:auto; box-shadow:0 15px 50px #18272530; }
.asianspa-caisse-recap { background:#edf2e5; }
.asianspa-caisse-tx-wrap { overflow:auto; max-width:100%; }
.asianspa-caisse-tx-table { min-width:600px; }
.asianspa-caisse-panel,.asianspa-today-views,.asianspa-caisse-panels { min-width:0; }
.asianspa-caisse-nav button,.asianspa-today-date-btn,.asianspa-cal-nav-btn { min-height:44px; }
.asianspa-resa-detail-value { min-width:0; overflow-wrap:anywhere; }
@media(max-width:600px) {
 .asianspa-caisse-top { padding:14px 16px; }
 .asianspa-caisse-panels { padding:24px 12px; }
 .asianspa-caisse-create-form { padding:16px; }
 .asianspa-home-upcoming { padding:16px; }
 .asianspa-home-upcoming-item { flex-wrap:wrap; }
 .asianspa-caisse-card { padding:24px 20px; }
 .asianspa-today-filter { min-width:0; width:100%; }
 .asianspa-today-new-resa-btn { margin-left:0; }
 .asianspa-caisse-actions-row>* { max-width:100%; }
}
@media(prefers-reduced-motion:reduce) { .asianspa-caisse-app * { animation:none!important; transition:none!important; } }
