body.portal-app{margin:0;background-color:var(--color-bg-main);color:var(--color-text-main);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;min-height:100vh}body.portal-app .modal{margin-left:0}.portal-header{background:var(--color-primary);color:#fff;padding-top:env(safe-area-inset-top);box-shadow:0 2px 4px #00000014;position:sticky;top:0;z-index:10}.portal-header-content{display:flex;align-items:center;gap:12px;height:56px;padding:0 16px;box-sizing:border-box}.portal-page-name{font-size:18px;font-weight:600;margin:0;color:#fff;flex-shrink:0}.portal-header-identity{display:flex;flex-direction:row;align-items:center;gap:8px;margin-left:auto;min-width:0;flex-shrink:1}.portal-header-avatar{width:28px;height:28px;flex-shrink:0;color:#fff;opacity:.9}.portal-client-name{font-size:.95rem;font-weight:600;margin:0;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.portal-hamburger-btn{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:none;border:none;color:#fff;cursor:pointer;border-radius:8px;-webkit-tap-highlight-color:transparent;transition:background .15s ease}.portal-hamburger-btn:hover,.portal-hamburger-btn:focus-visible{background:#ffffff26;outline:none}.portal-hamburger-btn:active{background:#ffffff40}.portal-sidebar-overlay{position:fixed;inset:0;background:#00000080;z-index:200;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}body.portal-sidebar-open .portal-sidebar-overlay{opacity:1;visibility:visible}.portal-sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85vw;background:var(--color-bg-card);z-index:300;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);box-shadow:2px 0 12px #00000014}body.portal-sidebar-open .portal-sidebar{transform:translate(0)}.portal-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px 12px 16px 20px;border-bottom:1px solid var(--color-bg-accent)}.portal-sidebar-title{font-size:1.05rem;font-weight:600;color:var(--color-text-main)}.portal-sidebar-close-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-muted);cursor:pointer;border-radius:8px;-webkit-tap-highlight-color:transparent;transition:background .15s ease}.portal-sidebar-close-btn:hover,.portal-sidebar-close-btn:focus-visible{background:var(--color-bg-accent);outline:none}.portal-sidebar-nav{flex:1;overflow-y:auto;padding:4px 0}.portal-sidebar-footer{border-top:1px solid var(--color-bg-accent);padding:4px 0}.portal-sidebar-link{display:flex;align-items:center;gap:14px;padding:14px 20px;color:var(--color-text-main);text-decoration:none;font-size:.95rem;font-weight:500;min-height:44px;box-sizing:border-box;transition:background .15s ease;-webkit-tap-highlight-color:transparent}.portal-sidebar-link:hover,.portal-sidebar-link:focus-visible{background:var(--color-bg-accent);outline:none}.portal-sidebar-link svg{color:var(--color-text-muted);flex-shrink:0}.portal-sidebar-link.active{color:var(--color-primary);background:#3570ba14}.portal-sidebar-link.active svg{color:var(--color-primary)}.portal-sidebar-link.portal-sidebar-link-danger,.portal-sidebar-link.portal-sidebar-link-danger svg{color:var(--color-danger)}.portal-sidebar-link.portal-sidebar-link-danger:hover,.portal-sidebar-link.portal-sidebar-link-danger:focus-visible{background:#d32f2f14}body.portal-sidebar-open{overflow:hidden}.portal-back-link{color:#fff;text-decoration:none;font-size:.9rem;padding:6px 8px;border-radius:4px}.portal-back-link:hover{background:#ffffff26}.portal-main{width:100%;box-sizing:border-box;padding:16px;max-width:720px;margin:0 auto}.portal-shift-section{display:block;width:100%;box-sizing:border-box;margin-bottom:16px;background:var(--color-bg-card);border-radius:12px;box-shadow:0 2px 8px #0000000f;overflow:hidden}.portal-section-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 16px;font-size:.8rem;font-weight:600;font-family:inherit;color:var(--color-text-main);text-transform:uppercase;letter-spacing:.05em;background:none;border:none;text-align:left;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s ease}.portal-section-header:active{background:var(--color-bg-accent)}.portal-section-header:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.portal-collapse-icon{width:14px;height:14px;flex-shrink:0;color:var(--color-text-muted);transition:transform .25s ease}.portal-shift-section.expanded .portal-collapse-icon{transform:rotate(90deg)}.portal-shift-section:not(.expanded) .portal-section-content{display:none}.portal-section-title{display:flex;align-items:center;gap:8px;min-height:24px}.portal-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:12px;font-size:.8rem;font-weight:600;background:var(--color-chip-bg);color:var(--color-text-main)}.portal-section-count.portal-section-count-muted{background:var(--color-bg-accent);color:var(--color-text-muted)}.portal-section-content{padding:0 12px 12px}.portal-empty{color:var(--color-text-muted);font-style:italic;padding:8px 4px}.portal-shift-card{display:block;background:#fff;border-radius:8px;padding:12px 14px;margin-bottom:8px;text-decoration:none;color:inherit;border-left:4px solid var(--color-text-muted);transition:transform .05s ease}.portal-shift-card:last-child{margin-bottom:0}.portal-shift-section .portal-shift-card{background:var(--color-bg-main)}.portal-more-link{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:8px;padding:10px 12px;color:var(--color-primary);text-decoration:none;font-size:.9rem;font-weight:600;border-radius:6px;-webkit-tap-highlight-color:transparent;transition:background .15s ease}.portal-more-link:hover,.portal-more-link:focus-visible{background:var(--color-bg-accent);outline:none}.portal-schedule-main{padding:0 0 24px}.portal-schedule-nav{position:sticky;top:calc(56px + env(safe-area-inset-top));z-index:9;background:var(--color-bg-card);box-shadow:0 2px 4px #0000000a}.portal-schedule-week-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px}.portal-week-nav-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--color-text-muted);text-decoration:none;border-radius:8px;transition:background .15s ease,color .15s ease;-webkit-tap-highlight-color:transparent}.portal-week-nav-btn:hover,.portal-week-nav-btn:focus-visible{background:var(--color-bg-accent);color:var(--color-primary);outline:none}.portal-week-label{flex:1;text-align:center;font-size:1rem;font-weight:600;color:var(--color-text-main)}.portal-schedule-day-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:4px 8px 12px;border-top:1px solid var(--color-bg-accent)}.portal-day-strip-cell{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 0 4px;background:none;border:none;border-radius:8px;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s ease}@media(hover:hover){.portal-day-strip-cell:hover{background:var(--color-bg-accent)}}.portal-day-strip-cell:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.portal-day-strip-letter{font-size:.7rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase}.portal-day-strip-number{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:.95rem;font-weight:600;color:var(--color-text-main)}.portal-day-strip-cell.is-today .portal-day-strip-number{background:var(--color-primary);color:#fff}.portal-day-strip-dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--color-primary);margin-top:2px}.portal-schedule-list{background:transparent}.portal-schedule-day{padding:14px 16px;border-bottom:1px solid var(--color-bg-accent);scroll-margin-top:calc(var(--portal-header-height, 56px) + env(safe-area-inset-top) + 140px)}.portal-schedule-day:last-child{border-bottom:none}.portal-schedule-day.is-today{background:var(--color-bg-accent)}.portal-schedule-day-name{font-size:.95rem;font-weight:600;color:var(--color-text-main);margin-bottom:8px}.portal-schedule-day-empty{margin:0;color:var(--color-text-muted);font-size:.9rem;font-style:italic}.portal-schedule-day-shifts{display:flex;flex-direction:column;gap:8px}.portal-filters{display:flex;flex-direction:column;gap:8px;padding:4px 4px 12px}.portal-filter-row{display:flex;gap:10px;flex-wrap:wrap}.portal-filter-group{display:flex;flex-direction:column;gap:4px;flex:1 1 0;min-width:0}.portal-filter-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.portal-filters select,.portal-filters input[type=date]{width:100%;min-width:0;box-sizing:border-box;padding:8px 10px;border:1px solid var(--color-secondary-border);border-radius:6px;background:var(--color-bg-surface);font-size:16px;font-family:inherit;color:var(--color-text-main)}.portal-filters input[type=date]{-webkit-appearance:none;appearance:none;min-height:38px;line-height:1.25}.portal-filters select:focus,.portal-filters input[type=date]:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.portal-past-list-loading{opacity:.5;transition:opacity .15s ease;pointer-events:none}.portal-shift-card:active{transform:scale(.99)}.portal-shift-card.portal-shift-scheduled{border-left-color:#4fd2be}.portal-shift-card.portal-shift-in_progress{border-left-color:#7ed957}.portal-shift-card.portal-shift-completed{border-left-color:#66bb6a}.portal-shift-card.portal-shift-canceled{border-left-color:#bdbdbd;opacity:.7}.portal-shift-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.portal-shift-time{font-weight:600;font-size:.95rem}.portal-shift-caregiver{font-size:.85rem;color:var(--color-text-muted)}.portal-status-badge{display:inline-block;font-size:12px;font-weight:600;padding:4px 10px;border-radius:6px;background:var(--color-chip-bg);color:var(--color-text-main);white-space:nowrap}.portal-status-badge.portal-status-scheduled{background:var(--shift-confirmed);color:var(--shift-confirmed-text)}.portal-status-badge.portal-status-in_progress{background:var(--shift-in-progress);color:var(--shift-in-progress-text)}.portal-status-badge.portal-status-completed{background:var(--shift-completed);color:var(--shift-completed-text)}.portal-status-badge.portal-status-canceled{background:var(--shift-canceled);color:var(--shift-canceled-text)}.portal-back-button{display:inline-flex;align-items:center;gap:6px;margin-bottom:16px;padding:8px 16px 8px 12px;color:var(--color-primary);background:var(--color-bg-card);text-decoration:none;font-size:.9rem;font-weight:600;border:1px solid var(--color-secondary-border);border-radius:999px;box-shadow:0 1px 2px #0000000a;-webkit-tap-highlight-color:transparent;transition:background .15s ease,border-color .15s ease}.portal-back-button:hover,.portal-back-button:focus-visible{background:var(--color-bg-accent);border-color:var(--color-primary);outline:none}.portal-shift-detail{position:relative;background:var(--color-bg-card);border-radius:12px;padding:24px 20px;box-shadow:0 2px 8px #0000000f;border-left:4px solid var(--color-text-muted)}.portal-shift-detail.portal-shift-scheduled{border-left-color:#4fd2be}.portal-shift-detail.portal-shift-in_progress{border-left-color:#7ed957}.portal-shift-detail.portal-shift-completed{border-left-color:#66bb6a}.portal-shift-detail.portal-shift-canceled{border-left-color:#bdbdbd}.portal-shift-detail-badge{position:absolute;top:12px;right:12px}.portal-shift-fields{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:18px}.portal-field{display:flex;align-items:flex-start;gap:14px}.portal-field-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:10px;background:var(--color-bg-accent);color:var(--color-primary)}.portal-field-scheduled .portal-field-icon{background:#dbeafe;color:#1e40af}.portal-field-clock-in .portal-field-icon{background:#dcfce7;color:#166534}.portal-field-clock-out .portal-field-icon{background:#fef3c7;color:#92400e}.portal-field-caregiver .portal-field-icon{background:#ede9fe;color:#5b21b6}.portal-field-content{flex:1;min-width:0;padding-top:2px}.portal-field-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:2px}.portal-field-value{font-size:1rem;font-weight:500;color:var(--color-text-main);line-height:1.4;word-break:break-word}.auth-container{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;background:var(--color-bg-main)}.auth-card{background:var(--color-bg-card);border-radius:10px;padding:28px;box-shadow:0 4px 12px #00000014;width:100%;max-width:420px}.auth-card-wide{max-width:640px}.auth-card-error{border-top:4px solid var(--color-danger)}.auth-success-illustration{color:var(--color-success);text-align:center;margin-bottom:16px}.auth-error-illustration{color:var(--color-danger);text-align:center;margin-bottom:16px}.auth-success-title{text-align:center;margin:0 0 12px}.auth-success-body{text-align:center;margin:0 0 8px;line-height:1.5}.auth-success-subbody{text-align:center;margin:0 0 24px;font-size:.9rem}.auth-success-action{margin-top:4px}.auth-card h1{margin:0 0 12px;font-size:1.4rem}.auth-card h2{font-size:1.1rem;margin:16px 0 8px}.auth-card h3{font-size:1rem;margin:16px 0 6px;color:var(--color-text-main)}.auth-card p{color:var(--color-text-main);line-height:1.5}.auth-card .text-muted{color:var(--color-text-muted);font-size:.9rem}.auth-context{background:var(--color-bg-accent);border-radius:6px;padding:12px 14px;margin-bottom:20px}.auth-context p{margin:0 0 6px;font-size:.95rem}.auth-context p:last-child{margin-bottom:0}.auth-form .form-group{margin-bottom:14px}.auth-form label{display:block;font-size:.85rem;font-weight:600;margin-bottom:4px;color:var(--color-text-main)}.auth-form input[type=email],.auth-form input[type=password],.auth-form input[type=text],.auth-form input[type=tel]{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--color-secondary-border);border-radius:6px;font-size:1rem;background:var(--color-bg-surface)}.auth-form input:disabled{background:var(--color-disabled-bg);color:var(--color-text-muted)}.portal-login-form .floating-label input{padding:.95em 1em}.portal-login-form .floating-label label{display:block;font-size:var(--font-xs);font-weight:400;margin-bottom:0;color:var(--color-text-muted)}.portal-login-form .floating-label input:focus+label,.portal-login-form .floating-label input:not(:placeholder-shown)+label,.portal-login-form .floating-label input:-webkit-autofill+label{font-size:.72rem;color:var(--color-primary);font-weight:500}.auth-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.auth-form .btn-block{display:block;width:100%;margin-top:8px}.form-error-banner{background:#fde7e7;color:var(--color-danger);padding:10px 12px;border-radius:6px;margin-bottom:14px;font-size:.9rem}.form-hint{display:block;font-size:.8rem;color:var(--color-text-muted);margin-top:4px}.form-hint.error,.required{color:var(--color-danger)}.auth-footer-link{text-align:center;margin-top:16px;font-size:.9rem}.consent-body{background:var(--color-bg-surface);border-radius:6px;padding:16px;margin:16px 0;max-height:360px;overflow-y:auto;border:1px solid var(--color-bg-accent)}.consent-body ul{padding-left:20px}.consent-body li{margin-bottom:4px;line-height:1.45}.consent-checkbox{display:flex;gap:10px;align-items:flex-start;margin:16px 0;cursor:pointer;font-size:.95rem}.consent-checkbox input{margin-top:4px}.select-client-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.select-client-list .select-client-option{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--color-secondary-border);border-radius:8px;cursor:pointer;background:var(--color-bg-surface);transition:border-color .1s;font-size:1rem;font-weight:400;margin-bottom:0}.select-client-list .select-client-option:hover{border-color:var(--color-primary)}.select-client-list .select-client-option:has(input:checked){border-color:var(--color-primary);background:var(--color-bg-accent)}.select-client-list .select-client-option input{flex-shrink:0;margin:4px 0 0}.select-client-list .select-client-option-body{flex:1;min-width:0}.select-client-list .select-client-name{font-weight:600;line-height:1.3}.select-client-list .select-client-meta{font-size:.85rem;color:var(--color-text-muted);margin-top:2px}
