*,:after,:before{box-sizing:border-box}:root{--brand-primary:#d32f2f;--brand-secondary:#b71c1c;--brand-accent:#ff5252;--portal-bg:#f8fafc;--surface:#fff;--text-main:#0f172a;--text-muted:#64748b;--border-light:#e2e8f0}body.booking-portal{color:var(--text-main);font-family:Noto Sans Thai,sans-serif;margin:0;max-width:100vw;overflow-x:hidden}.auth-container,body.booking-portal{background:linear-gradient(135deg,#fef2f2,#fee2e2);min-height:100vh}.auth-container{align-items:center;display:flex;justify-content:center;padding:20px}.auth-card{backdrop-filter:blur(12px);background:hsla(0,0%,100%,.85);border:1px solid hsla(0,0%,100%,.3);border-radius:24px;box-shadow:0 20px 40px -15px rgba(0,0,0,.1);max-width:440px;overflow:hidden;padding:48px;position:relative;width:100%}.auth-card:before{background:linear-gradient(90deg,var(--brand-primary),var(--brand-secondary));content:"";height:6px;left:0;position:absolute;right:0;top:0}.auth-header{margin-bottom:32px;text-align:center}.auth-header h1{color:var(--brand-primary);font-size:1.75rem;font-weight:700;margin-bottom:8px}.auth-header p{color:var(--text-muted);font-size:.95rem;margin:0}.portal-form-group{margin-bottom:20px}.portal-form-label{color:var(--text-main);display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.portal-form-control{background:hsla(0,0%,100%,.8);border:1px solid var(--border-light);border-radius:12px;box-sizing:border-box;font-size:1rem;padding:12px 16px;transition:all .3s ease;width:100%}.portal-form-control:focus{background:#fff;border-color:var(--brand-secondary);box-shadow:0 0 0 4px rgba(14,165,233,.1);outline:none}.portal-btn{background:linear-gradient(135deg,var(--brand-primary),var(--brand-secondary));border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:14px;transition:transform .2s,box-shadow .2s;width:100%}.portal-btn:hover{box-shadow:0 8px 16px -4px rgba(211,47,47,.3);transform:translateY(-2px)}.auth-footer{color:var(--text-muted);font-size:.9rem;margin-top:24px;text-align:center}.auth-footer a{color:var(--brand-primary);font-weight:500;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.portal-navbar{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:hsla(0,0%,100%,.75);border-bottom:1px solid hsla(0,0%,100%,.6);max-width:100vw;overflow-x:hidden;position:sticky;top:0;z-index:50}.portal-nav-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;max-width:100%;padding:12px 24px}.portal-logo{color:var(--brand-primary);font-size:1.4rem;font-weight:700;gap:8px;text-decoration:none;white-space:nowrap}.portal-logo,.portal-user-menu{align-items:center;display:flex}.portal-user-menu{gap:16px}.portal-main{box-sizing:border-box;margin:0;max-width:100%;padding:16px 24px}@media (max-width:768px){.portal-nav-content{flex-wrap:wrap;gap:6px 12px;justify-content:space-between;padding:10px 14px}.portal-logo{font-size:1.1rem}.portal-user-menu{align-items:center;flex-wrap:wrap;font-size:.8rem;gap:8px;justify-content:flex-end}.portal-user-menu a,.portal-user-menu span{font-size:.8rem}.portal-main{padding:10px 12px}.auth-card{border-radius:18px;padding:28px 20px}.auth-header h1{font-size:1.4rem}.room-grid{gap:14px;grid-template-columns:1fr}}.portal-nav-link{align-items:center;border-radius:6px;display:inline-flex;font-size:.95rem;font-weight:500;gap:6px;padding:8px 12px;text-decoration:none;transition:all .2s ease}.portal-nav-link-muted{background:transparent;border:1px solid transparent;color:var(--text-muted)}.portal-nav-link-muted:hover{background:rgba(0,0,0,.05);border-color:var(--border-light);color:var(--text-main)}.portal-nav-link-main{background:rgba(211,47,47,.08);border:1px solid rgba(211,47,47,.15);color:var(--brand-primary)}.portal-nav-link-main:hover{background:rgba(211,47,47,.15)}.my-bookings-container{background:var(--surface);border:1px solid var(--border-light);border-radius:16px;box-shadow:0 4px 6px -1px rgba(0,0,0,.05);margin-top:24px;padding:32px}.my-bookings-header{align-items:flex-end;display:flex;justify-content:space-between;margin-bottom:24px}.my-bookings-title{color:var(--brand-primary);font-size:2rem;font-weight:700;margin:0 0 8px}.my-bookings-subtitle{color:var(--text-muted);font-size:1.1rem;margin:0}.booking-list{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.booking-card{background:#fff;border:1px solid var(--border-light);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;padding:24px;position:relative;transition:transform .2s,box-shadow .2s}.booking-card:hover{border-color:#fca5a5;box-shadow:0 10px 15px -3px rgba(0,0,0,.1);transform:translateY(-4px)}.booking-card:before{background:linear-gradient(90deg,var(--brand-primary),var(--brand-accent));content:"";height:4px;left:0;position:absolute;right:0;top:0}.booking-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px}.booking-room-info{align-items:center;display:flex;gap:12px}.booking-room-icon{align-items:center;background:#fef2f2;border-radius:10px;color:var(--brand-primary);display:flex;font-size:1.5rem;height:48px;justify-content:center;width:48px}.booking-room-name{color:var(--text-main);font-size:1.25rem;font-weight:600;margin:0}.booking-status{align-items:center;border-radius:50px;display:inline-flex;font-size:.85rem;font-weight:600;gap:4px;padding:6px 12px}.status-pending{background-color:#fef3c7;color:#92400e}.status-approved{background-color:#d1fae5;color:#065f46}.status-rejected{background-color:#fee2e2;color:#b91c1c}.status-cancelled{background-color:#f1f5f9;color:#64748b}.booking-details{flex-grow:1;margin-bottom:16px}.booking-detail-item{align-items:flex-start;color:var(--text-muted);display:flex;font-size:.95rem;gap:8px;margin-bottom:8px}.booking-detail-item i{color:var(--brand-primary);margin-top:3px}.booking-detail-label{color:var(--text-main);font-weight:500;margin-right:4px}.booking-reason-box{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-top:12px;padding:12px}.booking-reason-title{color:#b91c1c;font-size:.85rem;font-weight:600;margin-bottom:4px}.booking-reason-text{color:#dc2626;font-size:.95rem}@media (max-width:768px){.my-bookings-container{margin-top:16px;padding:20px}.booking-list{grid-template-columns:1fr}}.mb-page-header{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:28px}.mb-page-title{color:var(--brand-primary);font-size:2rem;font-weight:700;margin:0 0 4px}.mb-page-subtitle{color:var(--text-muted);font-size:.95rem;margin:0}.mb-new-btn{align-items:center;border-radius:12px;display:inline-flex;font-size:.9rem;gap:6px;padding:10px 20px;text-decoration:none;white-space:nowrap;width:auto}.mb-stats-grid{display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:32px}.mb-stat-card{background:var(--surface);border:1px solid var(--border-light);border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,.04);gap:16px;padding:20px}.mb-stat-card,.mb-stat-icon{align-items:center;display:flex}.mb-stat-icon{border-radius:12px;flex-shrink:0;font-size:1.5rem;height:48px;justify-content:center;width:48px}.mb-stat-number{color:var(--text-main);font-size:1.75rem;font-weight:700;line-height:1}.mb-stat-label{color:var(--text-muted);font-size:.85rem;margin-top:4px}.mb-section{margin-bottom:36px}.mb-section-header{align-items:center;display:flex;gap:12px;margin-bottom:16px}.mb-section-title{color:var(--text-main);font-size:1.25rem;font-weight:600;margin:0}.mb-section-badge{align-items:center;border-radius:50px;display:inline-flex;font-size:.8rem;font-weight:600;gap:4px;padding:4px 12px}.mb-badge-upcoming{background:#fef3c7;color:#92400e}.mb-upcoming-list{display:flex;flex-direction:column;gap:12px}.mb-upcoming-card{align-items:center;background:var(--surface);border:1px solid var(--border-light);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.05);display:flex;gap:24px;padding:20px 24px;transition:transform .2s,box-shadow .2s}.mb-upcoming-card:hover{box-shadow:0 8px 16px rgba(0,0,0,.08);transform:translateY(-2px)}.mb-upcoming-card.mb-upcoming-today{background:snow;border-color:#fca5a5}.mb-countdown{align-items:center;border-radius:14px;display:flex;flex-direction:column;flex-shrink:0;height:80px;justify-content:center;min-width:80px;text-align:center}.mb-countdown-approved{background:#d1fae5;color:#065f46}.mb-countdown-pending{background:#fef3c7;color:#92400e}.mb-countdown-today{background:linear-gradient(135deg,var(--brand-primary),var(--brand-secondary));color:#fff}.mb-countdown-big{font-size:1.5rem;font-weight:800;line-height:1.1}.mb-countdown-unit{font-size:.75rem;font-weight:500;opacity:.8}.mb-upcoming-info{flex:1;min-width:0}.mb-upcoming-room{align-items:center;color:var(--text-main);display:flex;font-size:1.1rem;font-weight:600;gap:6px;margin-bottom:6px}.mb-upcoming-room i{color:var(--brand-primary)}.mb-upcoming-meta{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:.9rem;gap:16px;margin-bottom:6px}.mb-upcoming-meta span{align-items:center;display:flex;gap:4px}.mb-upcoming-purpose{color:var(--text-muted);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mb-upcoming-status{align-items:flex-end;display:flex;flex-direction:column;flex-shrink:0}.mb-cancel-btn{align-items:center;background:transparent;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.85rem;font-weight:500;gap:4px;padding:6px 14px;transition:all .2s}.mb-cancel-btn:hover{background:#fee2e2;border-color:#dc2626}.mb-empty{background:var(--surface);border:1px solid var(--border-light);border-radius:16px;padding:60px 20px;text-align:center}.mb-empty-icon{color:#cbd5e1;display:block;font-size:4rem;margin-bottom:16px}.mb-empty h3{color:var(--text-main);margin-bottom:8px}.mb-empty p{color:var(--text-muted);margin-bottom:0}.mb-empty-text{background:var(--surface);border:1px dashed var(--border-light);border-radius:12px;color:var(--text-muted);font-size:.95rem;padding:24px;text-align:center}@media (max-width:768px){.mb-stats-grid{grid-template-columns:repeat(2,1fr)}.mb-upcoming-card{flex-wrap:wrap;gap:16px}.mb-upcoming-status{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:10px}.mb-page-header{align-items:flex-start;flex-direction:column}.mb-cancel-btn,.mb-new-btn{justify-content:center;width:100%}}.qb-time-container,.qb-time-presets{display:flex;flex-direction:column}.qb-time-presets{gap:4px;margin-top:6px}.qb-preset-title{align-items:center;color:#64748b;display:flex;font-size:.72rem;font-weight:700;gap:4px;letter-spacing:.3px}.qb-preset-title i{color:#f59e0b;font-size:.85rem}.qb-preset-chips{display:flex;flex-wrap:wrap;gap:5px}.qb-time-chip{align-items:center;background-color:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;color:#334155;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.78rem;font-weight:600;justify-content:center;line-height:1.2;outline:none;padding:4px 8px;transition:all .15s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none}.qb-time-chip:hover:not(:disabled){background-color:#fee2e2;border-color:#fca5a5;color:#b91c1c;transform:translateY(-1px)}.qb-time-chip.active{background:linear-gradient(135deg,#d32f2f,#b71c1c);border-color:#b71c1c!important;box-shadow:0 2px 6px rgba(211,47,47,.3);color:#fff!important;font-weight:700}.qb-time-chip:disabled{background-color:#f8fafc;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed;opacity:.35;text-decoration:line-through}@media (max-width:480px){.qb-time-grid{gap:16px!important;grid-template-columns:1fr!important}.qb-time-chip{font-size:.85rem;padding:6px 10px}}
