PluginProbe
Easy Hotel – Powerful Hotel Booking / 2.0.2
Easy Hotel – Powerful Hotel Booking v2.0.2
2.0.8 2.0.7 2.0.6 2.0.5 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0 1.9.9 1.9.8 1.9.7 1.9.6 1.9.5 1.9.4 1.9.3 1.9.2 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 All 110 releases
easy-hotel / public / assets / css / _native-checkout.scss

_native-checkout.scss in Easy Hotel – Powerful Hotel Booking 2.0.2, at public/assets/css/_native-checkout.scss

1,152 lines 26.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ============================================================
2 * Native Checkout
3 * Bundled into public.scss. Uses the existing plugin CSS
4 * variables (defined in public.scss :root) — no new variables
5 * are introduced here.
6 * ============================================================ */
7
8 .eshb-native-checkout {
9 color: var(--eshb-text-color);
10 padding: 40px 0;
11 font-family: var(--eshb-body-font);
12
13 .eshb-container {
14 max-width: 760px !important;
15 margin: 0 auto;
16 padding: 0 16px;
17 }
18
19 .eshb-card {
20 background: #f1f5f9c7;
21 border: 1px solid #e5eaef;
22 border-radius: 8px;
23 padding: 24px;
24 margin-bottom: 20px;
25 box-shadow: 0 1px 10px 2px rgb(217 217 217 / 22%);
26
27 h2 {
28 margin: 0 0 16px;
29 font-size: 20px;
30 font-weight: 600;
31 font-family: var(--eshb-title-font);
32 }
33
34 h3 {
35 margin: 24px 0 12px;
36 font-size: 16px;
37 font-weight: 600;
38 font-family: var(--eshb-title-font);
39 }
40 }
41
42 .eshb-grid-2 {
43 display: grid;
44 grid-template-columns: 1fr 1fr;
45 gap: 16px;
46 margin-bottom: 16px;
47
48 @media (max-width: 600px) {
49 grid-template-columns: 1fr;
50 }
51 }
52
53 .eshb-meta-label {
54 font-size: 12px;
55 color: #6b7280;
56 text-transform: uppercase;
57 letter-spacing: 0.04em;
58 }
59
60 .eshb-meta-value {
61 font-size: 15px;
62 font-weight: 500;
63 margin-top: 4px;
64
65 small {
66 color: #6b7280;
67 font-weight: 400;
68 }
69 }
70
71 .eshb-meta-grid {
72 display: grid;
73 grid-template-columns: 1fr 1fr;
74 gap: 8px 16px;
75 margin-bottom: 0;
76
77 >div {
78 font-size: 14px;
79 }
80
81 strong {
82 color: #6b7280;
83 font-weight: 500;
84 margin-right: 6px;
85 }
86 }
87
88 .eshb-services-summary-cell {
89 grid-column: 1 / -1;
90 display: flex;
91 flex-wrap: wrap;
92 align-items: baseline;
93 gap: 6px;
94 padding-top: 6px;
95 border-top: 1px dashed #e5e7eb;
96 margin-top: 4px;
97
98 #eshbServicesSummaryList {
99 flex: 1;
100 color: var(--eshb-text-color);
101 }
102 }
103
104 .eshb-edit-link {
105 color: var(--eshb-primary-color);
106 font-size: 13px;
107 text-decoration: underline;
108 cursor: pointer;
109 margin-left: auto;
110
111 &:hover {
112 color: var(--eshb-territory-color);
113 }
114 }
115
116 .eshb-services-editor {
117 margin-top: 16px;
118 padding-top: 16px;
119 border-top: 1px dashed #e5e7eb;
120
121 &[hidden]] {
122 display: none;
123 }
124
125 h3 {
126 margin: 0 0 12px !important;
127 }
128 }
129
130 .eshb-form-group {
131 margin-bottom: 14px;
132
133 label {
134 display: block;
135 font-size: 13px;
136 font-weight: 500;
137 margin-bottom: 6px;
138 }
139
140 input[type="text"]="text""],
141 input[type="email"]="email""],
142 input[type="tel"]="tel""],
143 input[type="number"]="number""],
144 select,
145 textarea {
146 width: 100%;
147 padding: 10px 12px;
148 border: 1px solid #e5e7eb;
149 border-radius: 6px;
150 font-size: 14px;
151 background: var(--eshb-white-color);
152 box-sizing: border-box;
153
154 &:focus {
155 border-color: var(--eshb-primary-color);
156 outline: 2px solid rgba(171, 137, 101, 0.15);
157 }
158
159 // Marked by JS when a required field is empty at submit
160 // time. Cleared on the next input/change so the red
161 // border only lingers while the field is still wrong.
162 &.eshb-error-input,
163 &.eshb-error-input:focus {
164 border-color: var(--eshb-danger-color);
165 outline: 2px solid rgba(228, 23, 73, 0.18);
166 }
167 }
168 }
169
170 // Same error treatment for the terms checkbox so a missed accept
171 // is highlighted alongside the field errors.
172 .eshb-terms-container input.eshb-error-input {
173 outline: 2px solid var(--eshb-danger-color);
174 outline-offset: 2px;
175 }
176
177 .eshb-choice-option {
178 display: flex;
179 flex-wrap: wrap;
180 align-items: center;
181 padding: 12px 16px;
182 border: 1px solid #e5e7eb;
183 border-radius: 6px;
184 margin-bottom: 10px;
185 transition: border-color 150ms;
186
187 &:hover {
188 border-color: var(--eshb-primary-color);
189 }
190
191 input[type="checkbox"]="checkbox""],
192 input[type="radio"]="radio""] {
193 margin-right: 12px;
194 width: 18px;
195 height: 18px;
196 }
197
198 label {
199 cursor: pointer;
200 flex: 1;
201 font-size: 14px;
202 }
203 }
204
205 .eshb-choice-title {
206 font-weight: 500;
207 }
208
209 .eshb-choice-meta {
210 color: #6b7280;
211 margin-left: 8px;
212 font-size: 13px;
213 }
214
215 .eshb-choice-desc {
216 flex-basis: 100%;
217 font-size: 13px;
218 color: #6b7280;
219 margin-top: 6px;
220 margin-left: 30px;
221 }
222
223 .eshb-service-qty {
224 display: flex;
225 align-items: center;
226 gap: 8px;
227 margin-left: auto;
228
229 .eshb-qty-btn {
230 width: 28px;
231 height: 28px;
232 padding: 0 17px;
233 border-radius: 4px;
234 border: 1px solid #e5e7eb;
235 background: var(--eshb-white-color);
236 cursor: pointer;
237 font-size: 16px;
238 line-height: normal;
239 color: currentColor;
240 display: flex;
241 align-items: center;
242 justify-content: center;
243 }
244
245 input {
246 width: 50px;
247 height: 28px;
248 text-align: center;
249 padding: 4px;
250 background: var(--eshb-white-color);
251 border: 1px solid #e5e7eb;
252 border-radius: 4px !important;
253 margin: 0;
254 }
255 }
256
257 .eshb-coupon-section {
258 margin-top: 20px;
259 padding-top: 16px;
260 border-top: 1px dashed #e5e7eb;
261 }
262 .eshb-cart-item-aside {
263 display: flex;
264 align-items: center;
265 gap:5px;
266 }
267 button.eshb-remove-item {
268 background: var(--eshb-danger-color);
269 color: var(--eshb-white-color);
270 padding: 1px 4px;
271 font-size: 12px;
272 height: 13px;
273 border-radius: 3px;
274 display: grid;
275 place-content: center;
276 }
277 .eshb-add-more-btn {
278 text-decoration: none;
279 padding: 10px 20px;
280 border-radius: 6px;
281 background-color: var(--eshb-primary-color);
282 color: var(--eshb-white-color);
283 font-size: 14px;
284 text-decoration: none !important;
285 &:hover {
286 background-color: var(--eshb-dark-color);
287 color: var(--eshb-white-color);
288 }
289 }
290 .eshb-coupon-prompt {
291 margin: 0;
292 font-size: 14px;
293 color: #6b7280;
294
295 &[hidden]] {
296 display: none;
297 }
298 a {
299 color: var(--eshb-primary-color);
300 font-weight: 500;
301 text-decoration: underline;
302 margin-left: 4px;
303
304 &:hover {
305 color: var(--eshb-territory-color);
306 }
307 }
308 }
309
310 .eshb-order-review-actions {
311 display: flex;
312 align-items: center;
313 justify-content: space-between;
314 gap: 10px;
315 flex-wrap: wrap;
316 }
317 .eshb-coupon-panel {
318 margin-top: 12px;
319
320 &[hidden]] {
321 display: none;
322 }
323 }
324
325 .eshb-coupon-row {
326 display: flex;
327 gap: 8px;
328 align-items: center;
329
330 input {
331 flex: 1;
332 padding: 10px 12px;
333 border: 1px solid #e5e7eb;
334 border-radius: 6px !important;
335 font-size: 14px;
336 margin: 0;
337 height: 43px;
338 }
339
340 button {
341 height: 43px;
342 line-height: 1;
343 }
344 }
345
346 .eshb-btn-secondary {
347 padding: 10px 16px;
348 border: 1px solid var(--eshb-primary-color);
349 background: var(--eshb-white-color);
350 color: var(--eshb-primary-color);
351 border-radius: 6px;
352 cursor: pointer;
353 font-size: 14px;
354
355 &:hover {
356 background: var(--eshb-primary-color);
357 color: var(--eshb-white-color);
358 }
359 }
360
361 .eshb-btn-link {
362 background: none;
363 border: none;
364 color: var(--eshb-primary-color);
365 cursor: pointer;
366 font-size: 13px;
367 text-decoration: underline;
368 &:hover {
369 background: var(--eshb-primary-color);
370 color: var(--eshb-white-color);
371 }
372 }
373
374 .eshb-coupon-message {
375 margin: 8px 0 0;
376 font-size: 13px;
377
378 &.eshb-msg-error {
379 color: var(--eshb-danger-color);
380 }
381
382 &.eshb-msg-success {
383 color: var(--eshb-success-color);
384 }
385 }
386
387 .eshb-price-table {
388 width: 100%;
389 border: none;
390 border-collapse: collapse;
391
392 td {
393 padding: 8px 0;
394 font-size: 14px;
395 border: none;
396 }
397
398 tr:last-child td {
399 border-bottom: none;
400 }
401
402 .eshb-label-col {
403 color: #6b7280;
404 }
405
406 .eshb-value-col {
407 text-align: right;
408 font-weight: 500;
409 }
410 }
411
412 .eshb-total-row td {
413 font-size: 18px !important;
414 font-weight: 700 !important;
415 color: var(--eshb-text-color);
416 padding-top: 14px !important;
417 border-top: 2px solid var(--eshb-text-color);
418 }
419
420 .eshb-terms-container {
421 display: flex;
422 align-items: center;
423 gap: 10px;
424 margin-bottom: 16px;
425 padding: 0 4px;
426
427 input {
428 width: 18px;
429 height: 18px;
430 }
431
432 label {
433 font-size: 14px;
434 }
435
436 a {
437 color: var(--eshb-primary-color);
438 text-decoration: underline;
439 }
440 }
441
442 .eshb-checkout-error {
443 background: #fee2e2;
444 color: var(--eshb-danger-color);
445 border: 1px solid #fca5a5;
446 padding: 10px 14px;
447 border-radius: 6px;
448 margin-bottom: 14px;
449 font-size: 14px;
450 }
451
452 .eshb-btn-submit {
453 width: 100%;
454 padding: 14px 20px;
455 background: var(--eshb-primary-color);
456 color: var(--eshb-white-color);
457 border: none;
458 border-radius: 8px;
459 font-size: 16px;
460 font-weight: 600;
461 cursor: pointer;
462 transition: background 150ms;
463
464 &:hover {
465 background: var(--eshb-territory-color);
466 }
467
468 &:disabled {
469 opacity: 0.6;
470 cursor: wait;
471 }
472 }
473
474 .eshb-gateway-mount {
475 margin-top: 16px;
476
477 >div {
478 min-height: 40px;
479 }
480 }
481
482 .eshb-no-gateways {
483 background: #fef3c7;
484 color: #92400e;
485 padding: 12px 16px;
486 border-radius: 6px;
487 font-size: 14px;
488 }
489
490 .eshb-card--success {
491 border-color: var(--eshb-primary-color);
492 background: var(--eshb-secondary-color);
493
494 h2 {
495 color: var(--eshb-primary-color);
496 }
497 }
498
499 .eshb-thankyou-meta {
500 list-style: none;
501 padding: 0;
502 margin: 12px 0 0;
503
504 li {
505 padding: 4px 0;
506 font-size: 14px;
507 }
508 }
509
510 .eshb-thankyou-actions {
511 margin: 20px 0 0;
512
513 .eshb-btn-submit {
514 display: inline-block;
515 width: auto;
516 }
517 }
518 }
519
520 /* ============================================================
521 * Native Checkout — Customer Account area
522 * Reuses the same CSS variables and card styling as the
523 * checkout above so the two screens feel like one product.
524 * ============================================================ */
525
526 .eshb-account {
527 color: var(--eshb-text-color);
528 padding: 40px 0;
529 font-family: var(--eshb-body-font);
530
531 .eshb-card {
532 background: #f1f5f9c7;
533 border: 1px solid #e5eaef;
534 border-radius: 8px;
535 padding: 24px;
536 box-shadow: 0 1px 10px 2px rgb(217 217 217 / 22%);
537
538 h2 {
539 margin: 0 0 16px;
540 font-size: 20px;
541 font-weight: 600;
542 font-family: var(--eshb-title-font);
543 }
544 }
545
546 /* ---- Login ------------------------------------------------ */
547 &--login .eshb-account-login-box {
548 max-width: 420px;
549 }
550
551 .eshb-account-login-intro {
552 font-size: 14px;
553 color: #6b7280;
554 margin: 0 0 16px;
555 }
556
557 #loginform label {
558 width: 150px;
559 }
560
561 .eshb-account-login-links {
562 margin-top: 14px;
563 font-size: 13px;
564
565 a {
566 color: var(--eshb-primary-color);
567 text-decoration: underline;
568 }
569
570 .eshb-sep {
571 color: #9ca3af;
572 margin: 0 6px;
573 }
574 }
575
576 /* ---- Layout ----------------------------------------------- */
577 .eshb-account-layout {
578 display: grid;
579 grid-template-columns: 240px 1fr;
580 gap: 20px;
581 align-items: start;
582
583 @media (max-width: 768px) {
584 grid-template-columns: 1fr;
585 }
586 }
587
588 /* ---- Sidebar nav ------------------------------------------ */
589 .eshb-account-nav {
590 border: 1px solid #e5eaef;
591 border-radius: 8px;
592 padding: 16px;
593 box-shadow: 0 1px 10px 2px rgb(217 217 217 / 22%);
594 position: sticky;
595 top: 80px
596 }
597
598 .eshb-account-user {
599 display: flex;
600 flex-direction: column;
601 align-items: center;
602 text-align: center;
603 gap: 8px;
604 padding-bottom: 16px;
605 margin-bottom: 12px;
606 border-bottom: 1px dashed #e5e7eb;
607
608 img {
609 border-radius: 50%;
610 }
611 }
612
613 .eshb-account-username {
614 font-weight: 600;
615 font-size: 15px;
616 }
617
618 .eshb-account-menu {
619 list-style: none;
620 margin: 0;
621 padding: 0;
622
623 li {
624 margin: 0 0 4px;
625 }
626 }
627
628 .eshb-account-menu-item {
629 display: flex;
630 align-items: center;
631 gap: 10px;
632 padding: 10px 12px;
633 border-radius: 6px;
634 color: var(--eshb-text-color);
635 text-decoration: none;
636 font-size: 14px;
637 font-weight: 500;
638 transition: background 150ms, color 150ms;
639 text-decoration: none !important;
640 .dashicons {
641 font-size: 18px;
642 width: 18px;
643 height: 18px;
644 }
645
646 &:hover,
647 &.is-active {
648 background: var(--eshb-primary-color);
649 color: var(--eshb-white-color);
650 }
651 }
652
653 /* ---- Content panels --------------------------------------- */
654 .eshb-account-content {
655 min-width: 0; // allow tables to scroll inside the grid
656 }
657
658 .eshb-account-panel {
659 border: 1px solid #e5eaef;
660 border-radius: 8px;
661 padding: 24px;
662 box-shadow: 0 1px 10px 2px rgb(217 217 217 / 22%);
663 }
664
665 .eshb-account-section-head {
666 display: flex;
667 align-items: center;
668 justify-content: space-between;
669 margin-bottom: 16px;
670
671 h2, h3 {
672 margin: 0;
673 font-family: var(--eshb-title-font);
674 }
675
676 h2 { font-size: 20px; }
677 h3 { font-size: 16px; }
678
679 &--spaced {
680 margin-top: 32px;
681 padding-top: 24px;
682 border-top: 1px dashed #e5e7eb;
683 }
684 }
685
686 .eshb-account-viewall {
687 font-size: 13px;
688 color: var(--eshb-primary-color);
689 text-decoration: underline;
690 }
691
692 /* ---- Dashboard ------------------------------------------- */
693 .eshb-account-welcome {
694 margin-bottom: 20px;
695
696 h2 {
697 margin: 0 0 6px;
698 font-size: 22px;
699 font-family: var(--eshb-title-font);
700 }
701 }
702
703 .eshb-account-welcome-meta {
704 margin: 0;
705 font-size: 14px;
706 color: #6b7280;
707
708 .eshb-sep { margin: 0 6px; }
709 }
710
711 .eshb-account-stats {
712 display: grid;
713 grid-template-columns: repeat(4, 1fr);
714 gap: 14px;
715 margin-bottom: 28px;
716
717 @media (max-width: 768px) {
718 grid-template-columns: repeat(2, 1fr);
719 }
720 }
721
722 .eshb-account-stat {
723 background: var(--eshb-white-color);
724 border: 1px solid #e5e7eb;
725 border-radius: 8px;
726 padding: 18px 16px;
727 text-align: center;
728 border-top: 3px solid var(--eshb-primary-color);
729
730 &--active { border-top-color: var(--eshb-success-color); }
731 &--upcoming { border-top-color: var(--eshb-primary-color); }
732 &--cancelled{ border-top-color: var(--eshb-danger-color); }
733 }
734
735 .eshb-account-stat-value {
736 display: block;
737 font-size: 28px;
738 font-weight: 700;
739 line-height: 1.1;
740 }
741
742 .eshb-account-stat-label {
743 display: block;
744 margin-top: 4px;
745 font-size: 12px;
746 color: #6b7280;
747 text-transform: uppercase;
748 letter-spacing: 0.03em;
749 }
750
751 /* ---- Tables ----------------------------------------------- */
752 .eshb-account-table-wrap {
753 overflow-x: auto;
754 }
755
756 .eshb-account-table {
757 width: 100%;
758 border-collapse: collapse;
759 font-size: 14px;
760
761 th, td {
762 padding: 12px 10px;
763 text-align: left;
764 border-bottom: 1px solid #e5e7eb;
765 }
766
767 thead th {
768 font-size: 12px;
769 text-transform: uppercase;
770 letter-spacing: 0.03em;
771 color: #6b7280;
772 font-weight: 600;
773 }
774
775 }
776
777 .eshb-account-actions {
778 white-space: nowrap;
779 }
780
781 .eshb-account-date-sep {
782 margin: 0 6px;
783 color: #9ca3af;
784 }
785
786 /* ---- Badges ----------------------------------------------- */
787 .eshb-badge {
788 display: inline-block;
789 padding: 3px 10px;
790 border-radius: 3px;
791 font-size: 12px;
792 font-weight: 600;
793 line-height: 1.6;
794 background: #e5e7eb;
795 color: #374151;
796
797 &--processing,
798 &--completed { background: #dcfce7; color: #166534; }
799 &--pending,
800 &--on-hold,
801 &--deposit-payment { background: #fef9c3; color: #854d0e; }
802 &--cancelled,
803 &--failed,
804 &--refunded { background: #fee2e2; color: #991b1b; }
805 }
806
807 /* ---- Buttons ---------------------------------------------- */
808 .eshb-btn-link {
809 background: none;
810 border: none;
811 border-radius: 3px;
812 padding: 3px 6px;
813 color: var(--eshb-primary-color);
814 cursor: pointer;
815 font-size: 13px;
816 text-decoration: underline;
817
818 &:hover {
819 background: var(--eshb-primary-color);
820 color: var(--eshb-white-color);
821 }
822
823 &.eshb-btn-danger {
824 color: var(--eshb-danger-color);
825 &:hover {
826 background: var(--eshb-danger-color);
827 color: var(--eshb-white-color);
828 }
829 }
830 }
831
832 .eshb-btn-secondary {
833 padding: 10px 16px;
834 border: 1px solid var(--eshb-primary-color);
835 background: var(--eshb-white-color);
836 color: var(--eshb-primary-color);
837 border-radius: 6px;
838 cursor: pointer;
839 font-size: 14px;
840 }
841
842 .eshb-btn-submit {
843 padding: 11px 20px;
844 background: var(--eshb-primary-color);
845 color: var(--eshb-white-color);
846 border: none;
847 border-radius: 8px;
848 font-size: 15px;
849 font-weight: 600;
850 cursor: pointer;
851 transition: background 150ms;
852
853 &:hover { background: var(--eshb-territory-color); }
854 &:disabled { opacity: 0.6; cursor: wait; }
855
856 &.eshb-btn-danger {
857 background: var(--eshb-danger-color);
858 &:hover { filter: brightness(0.92); }
859 }
860 }
861
862 .eshb-account-empty {
863 color: #6b7280;
864 font-size: 14px;
865 padding: 12px 0;
866 }
867
868 .eshb-account-notice {
869 padding: 12px 16px;
870 border-radius: 6px;
871 font-size: 14px;
872 margin-bottom: 16px;
873
874 &[hidden]] {
875 display: none;
876 }
877
878 &--success {
879 background: #dcfce7;
880 color: #166534;
881 border: 1px solid #bbf7d0;
882 }
883
884 &--info {
885 background: #e0f2fe;
886 color: #075985;
887 border: 1px solid #bae6fd;
888 }
889 }
890
891 /* ---- Forms ------------------------------------------------ */
892 .eshb-account-grid-2 {
893 display: grid;
894 grid-template-columns: 1fr 1fr;
895 gap: 16px;
896
897 @media (max-width: 600px) {
898 grid-template-columns: 1fr;
899 }
900 }
901
902 .eshb-account-field {
903 margin-bottom: 14px;
904
905 label {
906 display: block;
907 font-size: 13px;
908 font-weight: 500;
909 margin-bottom: 6px;
910 }
911
912 input {
913 width: 100%;
914 padding: 10px 12px;
915 border: 1px solid #e5e7eb;
916 border-radius: 6px;
917 font-size: 14px;
918 background: var(--eshb-white-color);
919 box-sizing: border-box;
920
921 &:focus {
922 border-color: var(--eshb-primary-color);
923 outline: 2px solid rgba(171, 137, 101, 0.15);
924 }
925 }
926 }
927
928 .eshb-account-form-actions {
929 margin-top: 8px;
930 }
931
932 .eshb-account-form-msg,
933 .eshb-account-modal-msg {
934 font-size: 13px;
935 margin: 10px 0 0;
936
937 &.is-error { color: var(--eshb-danger-color); }
938 &.is-success { color: var(--eshb-success-color); }
939 }
940
941 /* ---- Booking detail (modal) ------------------------------- */
942 .eshb-account-detail-head {
943 display: flex;
944 align-items: center;
945 gap: 12px;
946 margin-bottom: 12px;
947
948 h3 { margin: 0; font-size: 18px; }
949 }
950
951 .eshb-account-detail-title {
952 margin: 18px 0 6px;
953 font-size: 14px;
954 font-weight: 600;
955 color: var(--eshb-territory-color);
956 }
957
958 .eshb-account-detail-table {
959 width: 100%;
960 border-collapse: collapse;
961 font-size: 14px;
962
963 th {
964 text-align: left;
965 font-weight: 500;
966 color: #6b7280;
967 padding: 5px;
968 width: 40%;
969 }
970
971 td {
972 text-align: right;
973 padding: 5px;
974 }
975 }
976
977 .eshb-account-detail-text {
978 font-size: 14px;
979 margin: 0;
980 }
981
982 /* ---- Cancellation form ------------------------------------ */
983 .eshb-account-cancel {
984 h3 { margin: 0 0 8px; font-size: 18px; }
985 }
986
987 .eshb-account-field-label {
988 display: block;
989 font-size: 13px;
990 font-weight: 500;
991 margin: 12px 0 6px;
992 }
993
994 .eshb-account-select,
995 .eshb-account-textarea {
996 width: 100%;
997 padding: 10px 12px;
998 border: 1px solid #e5e7eb;
999 border-radius: 6px;
1000 font-size: 14px;
1001 background: var(--eshb-white-color);
1002 box-sizing: border-box;
1003 margin-bottom: 8px;
1004 }
1005
1006 .eshb-account-modal-actions {
1007 display: flex;
1008 justify-content: flex-end;
1009 gap: 10px;
1010 margin-top: 18px;
1011 }
1012 }
1013
1014 /* ---- Modal shell (kept outside .eshb-account scroll context) -- */
1015 .eshb-account-modal {
1016 position: fixed;
1017 inset: 0;
1018 z-index: 99999;
1019 display: flex;
1020 align-items: center;
1021 justify-content: center;
1022
1023 &[hidden]] { display: none; }
1024
1025 .eshb-account-modal-overlay {
1026 position: absolute;
1027 inset: 0;
1028 background: rgba(17, 24, 39, 0.55);
1029 }
1030
1031 .eshb-account-modal-dialog {
1032 position: relative;
1033 background: var(--eshb-white-color);
1034 border-radius: 10px;
1035 padding: 24px;
1036 width: 92%;
1037 max-width: 520px;
1038 max-height: 86vh;
1039 overflow-y: auto;
1040 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
1041 }
1042
1043 .eshb-account-modal-x {
1044 position: absolute;
1045 top: 10px;
1046 right: 14px;
1047 background: none;
1048 border: none;
1049 font-size: 26px;
1050 line-height: 1;
1051 color: var(--eshb-danger-color);
1052 cursor: pointer;
1053 box-shadow: none;
1054 }
1055
1056 .eshb-account-modal-loading {
1057 text-align: center;
1058 color: #6b7280;
1059 padding: 20px 0;
1060 }
1061
1062 /* ----- Multi-accommodation cart ----- */
1063 .eshb-cart-items-head {
1064 display: flex;
1065 align-items: center;
1066 justify-content: space-between;
1067 gap: 12px;
1068 flex-wrap: wrap;
1069 margin-bottom: 8px;
1070 }
1071
1072 .eshb-add-more-btn {
1073 display: inline-block;
1074 padding: 8px 14px;
1075 border: 1px solid var(--eshb-text-color);
1076 border-radius: 6px;
1077 text-decoration: none;
1078 font-weight: 600;
1079 color: var(--eshb-text-color);
1080 white-space: nowrap;
1081
1082 &:hover {
1083 background: var(--eshb-text-color);
1084 color: #fff;
1085 }
1086 }
1087
1088 .eshb-cart-item {
1089 background: #fff;
1090 border: 1px solid #e5eaef;
1091 border-radius: 8px;
1092 padding: 16px;
1093 margin-bottom: 16px;
1094
1095 &:last-child {
1096 margin-bottom: 0;
1097 }
1098 }
1099
1100 .eshb-cart-item-head {
1101 display: flex;
1102 align-items: flex-start;
1103 justify-content: space-between;
1104 gap: 12px;
1105 margin-bottom: 12px;
1106 }
1107
1108 .eshb-cart-item-title {
1109 margin: 0;
1110 font-size: 16px;
1111 font-weight: 600;
1112 font-family: var(--eshb-title-font);
1113 }
1114
1115 .eshb-cart-item-aside {
1116 display: flex;
1117 align-items: center;
1118 gap: 12px;
1119 white-space: nowrap;
1120 }
1121
1122 .eshb-cart-item-total {
1123 font-weight: 700;
1124 }
1125
1126 .eshb-remove-item {
1127 appearance: none;
1128 border: none;
1129 background: #f1f5f9;
1130 color: var(--eshb-danger-color);
1131 width: 28px;
1132 height: 28px;
1133 border-radius: 50%;
1134 font-size: 18px;
1135 line-height: 1;
1136 cursor: pointer;
1137 box-shadow: none;
1138
1139 &:hover {
1140 background: #fee2e2;
1141 }
1142
1143 &:disabled {
1144 opacity: 0.5;
1145 cursor: default;
1146 }
1147 }
1148 }
1149
1150 body.eshb-account-modal-open {
1151 overflow: hidden;
1152 }