:root { --admin-accent: #7567e8; --admin-accent-dark: #6255cf; --admin-accent-soft: #efedff; --admin-bg: #f6f5f9; --admin-surface: #fff; --admin-surface-soft: #fbfaff; --admin-border: #e7e5ef; --admin-border-soft: #eeecf3; --admin-text: #302c49; --admin-muted: #817c94; --admin-danger: #b54e5b; --admin-success: #177349; color-scheme: light; } * { box-sizing: border-box; } html { background: var(--admin-bg); } body { min-height: 100vh; background: var(--admin-bg); color: var(--admin-text); font-size: 15px; } a { color: var(--admin-accent-dark); } /* Application shell */ .admin-shell { padding-bottom: 4.35rem; } .top-header { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 3.5rem; padding: .55rem 1rem; background: rgba(255,255,255,.94); border-bottom: 1px solid var(--admin-border); box-shadow: 0 1px 8px rgba(42,34,80,.035); backdrop-filter: blur(10px); } .top-header .brand { flex: 0 0 auto; color: var(--admin-text); font-size: 1.05rem; font-weight: 800; text-decoration: none; } .brand-version { color: #aaa5b6; font-size: .66rem; font-weight: 500; } .top-header-right { display: flex; flex: 0 0 auto; align-items: center; gap: .7rem; font-size: .8rem; } .top-header-right a { color: #777184; text-decoration: none; } .top-header-right a:hover { color: var(--admin-accent-dark); } .top-header-right .admin-name { color: #aaa5b6; } .desktop-nav { display: none; } .bottom-tabs { position: fixed; right: 0; bottom: 0; left: 0; z-index: 30; display: flex; height: 3.65rem; overflow-x: auto; background: rgba(255,255,255,.96); border-top: 1px solid var(--admin-border); box-shadow: 0 -4px 18px rgba(42,34,80,.06); scrollbar-width: none; -webkit-overflow-scrolling: touch; backdrop-filter: blur(10px); } .bottom-tabs::-webkit-scrollbar { display: none; } .bottom-tabs a { display: flex; flex: 1 0 3.2rem; flex-direction: column; align-items: center; justify-content: center; min-width: 3.2rem; padding: 0 .42rem; color: #9993a8; font-size: .59rem; font-weight: 700; text-decoration: none; white-space: nowrap; } .bottom-tabs a .tab-icon { font-size: 1.2rem; line-height: 1; } .bottom-tabs a .tab-label { display: block; margin-top: .12rem; } .bottom-tabs a.is-active { color: var(--admin-accent); } .main-content { width: 100%; max-width: 980px; margin: 0 auto; padding: 1.25rem 1rem 2rem; } /* Typography and page chrome */ .page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: .8rem; margin-bottom: 1.25rem; } .page-head h1 { margin: 0; color: var(--admin-text); font-size: 1.55rem; font-weight: 800; letter-spacing: -.02em; } .page-head p, .page-description { margin: .25rem 0 0; color: var(--admin-muted); font-size: .86rem; line-height: 1.45; } .page-head-actions, .toolbar, .action-row { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; } .section-title { margin: 1.55rem 0 .75rem; color: #514b69; font-size: .82rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; } .section-inline-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .75rem; } .section-inline-head .label { margin: 0; } .form-card hr { height: 1px; margin: 1rem 0; background: var(--admin-border-soft); border: 0; } .empty-state { padding: 2rem 1rem; color: var(--admin-muted); text-align: center; background: rgba(255,255,255,.65); border: 1px dashed #dcd8e8; border-radius: 12px; } /* Buttons */ .button { border-radius: 8px; box-shadow: none !important; font-weight: 700; transition: transform .12s, border-color .15s, background .15s; } .button:hover { transform: translateY(-1px); } .button:active { transform: none; } .button.is-primary { background: var(--admin-accent); border-color: var(--admin-accent); } .button.is-primary:not(.is-outlined):not(.is-light), .button.is-link:not(.is-outlined):not(.is-light), .button.is-info:not(.is-outlined):not(.is-light), .button.is-success:not(.is-outlined):not(.is-light), .button.is-danger:not(.is-outlined):not(.is-light) { color: #fff !important; } .button.is-primary:hover { color: #fff !important; background: var(--admin-accent-dark); border-color: var(--admin-accent-dark); } .button.is-primary.is-outlined { color: var(--admin-accent-dark) !important; background: transparent; border-color: #a49bea; } .button.is-primary.is-outlined:hover { color: #fff !important; background: var(--admin-accent); border-color: var(--admin-accent); } .button.is-light { background: #f3f1f8; color: #5f5971; } .button[disabled] { color: #8d8798 !important; background: #eceaf0 !important; border-color: #e0dde7 !important; opacity: 1; transform: none; } .button.is-small, .btn-sm { height: auto !important; padding: .32rem .65rem !important; font-size: .75rem !important; } /* Reusable cards and sections */ .admin-section, .form-card { overflow: hidden; background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 14px; box-shadow: 0 2px 10px rgba(42,34,80,.035); } .form-card { padding: 1.2rem; } .admin-section-head { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: .8rem; padding: 1rem 1.15rem; background: linear-gradient(180deg,#fff,var(--admin-surface-soft)); border-bottom: 1px solid #eceaf2; } .admin-section-icon { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; background: var(--admin-accent-soft); border-radius: 11px; font-size: 1.2rem; } .admin-section-head h2 { margin: 0; color: var(--admin-text); font-size: 1.05rem; font-weight: 750; } .admin-section-head p { max-width: 680px; margin: .2rem 0 0; color: var(--admin-muted); font-size: .82rem; line-height: 1.45; } .admin-section-body { padding: 1.15rem; } .admin-title-row { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; } .status-pill { display: inline-flex; align-items: center; padding: .12rem .48rem; color: #777184; background: #eeedf2; border-radius: 99px; font-size: .67rem; font-weight: 700; } .status-pill.is-enabled { color: var(--admin-success); background: #dcf7e8; } .admin-grid, .form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem 1.1rem; } .form-grid > .field { margin: 0; } .page-head .button.is-primary { min-height: 2.25rem; padding: .42rem .8rem !important; } .admin-field { min-width: 0; margin: 0 !important; } .admin-field-wide { grid-column: 1 / -1; } .admin-subsection { margin-top: 1.1rem; padding-top: 1.1rem; border-top: 1px solid var(--admin-border-soft); } .admin-subsection h2, .admin-subsection h3, .form-card > h2 { margin: 0 0 .75rem; color: #514b69; font-size: .82rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; } .item-card { display: block; margin-bottom: .65rem; padding: .9rem 1rem; color: inherit; background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 12px; box-shadow: 0 1px 6px rgba(42,34,80,.025); transition: border-color .15s, box-shadow .15s, transform .15s; } .item-card:hover { border-color: #dcd8eb; box-shadow: 0 5px 18px rgba(42,34,80,.055); } .item-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: .35rem; } .item-card-header .name { min-width: 0; color: var(--admin-text); font-size: .95rem; font-weight: 750; } .item-card-meta { display: flex; gap: .25rem 1rem; flex-wrap: wrap; color: var(--admin-muted); font-size: .79rem; line-height: 1.55; } .item-card-meta a { color: inherit; text-decoration: none; } .item-card-actions { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .65rem; padding-top: .6rem; border-top: 1px solid var(--admin-border-soft); } .item-card-actions form { margin: 0; } .color-dot { display: inline-block; width: 11px; height: 11px; margin-right: 6px; border-radius: 50%; vertical-align: middle; } .card-link { color: inherit; text-decoration: none; } .card-note { margin-top: .35rem; color: var(--admin-muted); font-size: .78rem; line-height: 1.45; } .feedback-card { border-left: 3px solid var(--admin-accent); text-decoration: none; } .feedback-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .3rem; } .feedback-date { color: #9993a8; font-size: .75rem; white-space: nowrap; } .feedback-text { color: #4a4570; font-size: .82rem; line-height: 1.5; } .muted-detail { color: var(--admin-muted); font-weight: 450; } /* Statuses */ .badge { display: inline-flex; flex: 0 0 auto; align-items: center; padding: .16rem .58rem; border-radius: 99px; font-size: .69rem; font-weight: 750; white-space: nowrap; } .badge-new, .badge-visit-scheduled { color: #1e40af; background: #dbeafe; } .badge-in_progress { color: #92400e; background: #fef3c7; } .badge-converted, .badge-active, .badge-visit-completed { color: #065f46; background: #d1fae5; } .badge-rejected { color: #991b1b; background: #fee2e2; } .badge-archived, .badge-visit-cancelled { color: #554f61; background: #ebe9ef; } /* Forms */ .field:not(:last-child) { margin-bottom: 1rem; } .field .label, .admin-field .label { margin-bottom: .38rem; color: #514c66 !important; font-size: .76rem; font-weight: 750; } input, textarea, select, .input, .textarea, .select select { color: var(--admin-text) !important; background-color: #fff !important; border-color: #dcd9e5 !important; border-radius: 8px !important; box-shadow: none !important; font-size: .86rem; } .input, .select select { min-height: 2.45rem; } .textarea { min-height: 76px; resize: vertical; } input:focus, textarea:focus, select:focus, .input:focus, .textarea:focus, .select select:focus { border-color: #7c6cff !important; box-shadow: 0 0 0 2px rgba(124,108,255,.12) !important; } input[readonly], .input[readonly] { color: #716b81 !important; background: #f8f7fa !important; } input[type="file"].input { padding: .36rem .55rem; } input[type="color"] { width: 3rem; height: 2.35rem; padding: 2px; cursor: pointer; } input[type="checkbox"] { accent-color: var(--admin-accent); } .field-help { margin-top: .35rem; color: #8b869b; font-size: .72rem; line-height: 1.4; } .secret-control { position: relative; } .secret-control::after { position: absolute; top: 50%; right: .75rem; content: "🔒"; transform: translateY(-50%); opacity: .48; font-size: .78rem; pointer-events: none; } .secret-control .input { padding-right: 2.25rem; letter-spacing: .05em; } .admin-form { display: flex; flex-direction: column; gap: 1rem; } .admin-toggle-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .7rem; margin-bottom: 1rem; } .admin-toggle { position: relative; display: flex; align-items: flex-start; gap: .7rem; padding: .75rem .85rem; color: inherit !important; background: var(--admin-surface-soft); border: 1px solid #e8e5f2; border-radius: 10px; cursor: pointer; transition: border-color .15s,background .15s; } .admin-toggle:hover { background: #f8f6ff; border-color: #dcd7ef; } .admin-toggle > input { position: absolute; opacity: 0; pointer-events: none; } .admin-toggle-track { flex: 0 0 auto; width: 38px; height: 22px; padding: 2px; background: #ccc8d6; border-radius: 99px; transition: .18s; } .admin-toggle-track span { display: block; width: 18px; height: 18px; background: #fff; border-radius: 50%; box-shadow: 0 1px 4px rgba(0,0,0,.2); transition: .18s; } .admin-toggle > input:checked + .admin-toggle-track { background: var(--admin-accent); } .admin-toggle > input:checked + .admin-toggle-track span { transform: translateX(16px); } .admin-toggle > input:focus-visible + .admin-toggle-track { outline: 2px solid #7c6cff; outline-offset: 2px; } .admin-toggle strong { display: block; color: #3e3956; font-size: .82rem; line-height: 1.35; } .admin-toggle small { display: block; margin-top: .15rem; color: #8a849c; font-size: .7rem; line-height: 1.35; } .admin-toggle-compact { align-items: center; padding: .55rem .65rem; } .admin-check { position: relative; display: inline-flex; align-items: center; gap: .45rem; color: #716b81 !important; font-size: .72rem; line-height: 1.35; cursor: pointer; } .admin-check > input { position: absolute; opacity: 0; pointer-events: none; } .admin-check-box { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 18px; height: 18px; color: transparent; background: #fff; border: 1.5px solid #cfcad9; border-radius: 5px; font-size: .68rem; font-weight: 900; transition: .15s; } .admin-check > input:checked + .admin-check-box { color: #fff; background: var(--admin-accent); border-color: var(--admin-accent); } .admin-check > input:focus-visible + .admin-check-box { outline: 2px solid #7c6cff; outline-offset: 2px; } .admin-check-danger { color: #a04e58 !important; } .admin-check-danger > input:checked + .admin-check-box { background: var(--admin-danger); border-color: var(--admin-danger); } .admin-note { margin: .9rem 0 1rem; padding: .75rem .9rem; border: 1px solid; border-radius: 9px; font-size: .76rem; line-height: 1.5; } .admin-note p + p { margin-top: .35rem; } .admin-note-info { color: #42627f; background: #f1f7ff; border-color: #d7e8fa; } .admin-note-warning { color: #785f28; background: #fff8e8; border-color: #f1dfb4; } .admin-note code { display: inline-block; margin: .2rem 0 0; padding: .12rem .35rem; color: inherit; background: rgba(255,255,255,.7); border-radius: 4px; user-select: all; } .admin-details { margin-top: 1rem; overflow: hidden; background: #fcfbff; border: 1px solid #e8e5f2; border-radius: 9px; } .admin-details summary { display: flex; align-items: center; justify-content: space-between; padding: .7rem .85rem; color: #514b69; font-size: .78rem; font-weight: 700; cursor: pointer; } .admin-details summary span { min-width: 24px; padding: .05rem .4rem; color: #6257bb; text-align: center; background: #ece9ff; border-radius: 99px; } .admin-details-body { padding: 0 .85rem .85rem; } .sticky-actions { position: sticky; bottom: 4.3rem; z-index: 10; display: flex; justify-content: flex-end; padding: .65rem; background: rgba(255,255,255,.92); border: 1px solid rgba(222,218,238,.9); border-radius: 12px; box-shadow: 0 8px 28px rgba(46,38,86,.12); backdrop-filter: blur(8px); } .sticky-actions .button { min-width: 150px; } .danger-zone { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #f1dfe2; } .inline-control { display: flex; align-items: center; gap: .5rem; } .inline-control > .input, .inline-control > .select { flex: 1; min-width: 0; } .color-control { display: flex; align-items: center; gap: .6rem; } .portal-panel { margin-top: 1.1rem; padding-top: 1.1rem; border-top: 1px solid var(--admin-border-soft); } .portal-qr { margin-top: .8rem; text-align: center; } .portal-qr canvas { max-width: 180px; padding: .4rem; background: #fff; border: 1px solid var(--admin-border); border-radius: 10px; } .inline-admin-form { margin-top: .7rem; padding-top: .7rem; border-top: 1px solid var(--admin-border-soft); } .inline-admin-grid { display: grid; grid-template-columns: minmax(180px,1fr) minmax(180px,.8fr) auto; align-items: end; gap: .75rem; } .inline-admin-grid .field { margin: 0; } .testimonial-content { display: flex; align-items: flex-start; gap: .75rem; min-width: 0; } .testimonial-avatar { flex: 0 0 auto; width: 48px; height: 48px; border-radius: 12px; object-fit: cover; } .testimonial-text { color: #49435d; font-size: .88rem; line-height: 1.5; } .testimonial-note { margin-top: .2rem; color: var(--admin-muted); font-size: .76rem; } /* Messages and tables */ .notification { color: var(--admin-text) !important; border-radius: 10px; } .table-wrap { overflow-x: auto; } .table-wrap .table { margin: 0; background: transparent; font-size: .75rem; } .table th { color: #696278 !important; font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; } .is-nowrap { white-space: nowrap; } .seo-preview { min-height: 2rem; margin-top: .5rem; padding: .5rem .65rem; background: #fafafa; border: 1px solid #ebe9ef; border-radius: 7px; font-size: .78rem; line-height: 2; } .pagination-row, .media-pagination { display: flex; justify-content: center; gap: .35rem; flex-wrap: wrap; margin-top: 1.25rem; } /* Media */ .filter-bar { display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem; padding: .65rem .75rem; background: #fff; border: 1px solid var(--admin-border); border-radius: 10px; } .media-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(200px,1fr)); gap: .8rem; } .media-card { overflow: hidden; background: #fff; border: 1px solid var(--admin-border); border-radius: 12px; box-shadow: 0 1px 6px rgba(42,34,80,.025); transition: transform .15s, box-shadow .15s; } .media-card:hover { transform: translateY(-2px); box-shadow: 0 7px 20px rgba(42,34,80,.08); } .media-card img { display: block; width: 100%; height: 160px; object-fit: cover; } .media-card .photo-thumb { width: 100%; height: 160px; } .media-card .video-thumb { position: relative; width: 100%; height: 160px; background: #17151e; } .media-card .video-play, .visit-media-item .video-play { position: absolute; top: 50%; left: 50%; color: #fff; line-height: 1; text-shadow: 0 1px 5px #000; transform: translate(-50%,-50%); pointer-events: none; } .media-card .video-play { font-size: 2.5rem; } .media-info { padding: .7rem .8rem; } .media-meta { display: flex; align-items: center; justify-content: space-between; gap: .5rem; color: var(--admin-text); font-size: .82rem; } .media-caption { margin-top: .25rem; color: #746e82; font-size: .78rem; } .visit-media-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(105px,1fr)); gap: .55rem; margin-bottom: 1rem; } .visit-media-item { overflow: hidden; background: #faf9fc; border: 1px solid var(--admin-border); border-radius: 9px; } .visit-media-item img, .visit-media-item .photo-thumb, .visit-media-item .video-thumb-sm { display: block; width: 100%; height: 82px; object-fit: cover; } .visit-media-item .video-thumb-sm { position: relative; background: #17151e; } .visit-media-item .video-play { font-size: 1.6rem; } .visit-media-item .media-cap { padding: .25rem .4rem; overflow: hidden; color: var(--admin-muted); font-size: .69rem; text-overflow: ellipsis; white-space: nowrap; } .visit-media-delete { padding: .25rem .4rem .4rem; } .visit-media-delete .button { width: 100%; min-height: 1.65rem; font-size: .66rem; } /* Upload queue */ .upload-context { margin-bottom: 1rem; padding: .7rem .8rem; color: #686276; background: var(--admin-surface-soft); border: 1px solid var(--admin-border-soft); border-radius: 9px; font-size: .82rem; } .upload-queue { display: flex; flex-direction: column; gap: .4rem; margin-top: .65rem; } .upload-queue:empty { display: none; } .upload-queue-item { display: grid; grid-template-columns: 34px minmax(0,1fr); align-items: center; gap: .55rem; padding: .45rem .55rem; background: #f7f6ff; border-radius: 8px; } .upload-queue-icon { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; background: #ebe8ff; border-radius: 7px; font-size: 1.05rem; } .upload-queue-name { overflow: hidden; color: #494467; font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; } .upload-queue-state { color: #8a84a5; font-size: .68rem; } .upload-queue-track { height: 3px; margin-top: .25rem; overflow: hidden; background: #dedbea; border-radius: 99px; } .upload-queue-bar { width: 0; height: 100%; background: var(--admin-accent); transition: width .2s; } .upload-progress { display: none; margin-bottom: 1rem; } .upload-progress-head { display: flex; justify-content: space-between; margin-bottom: .3rem; color: #5f596d; font-size: .78rem; } .upload-progress-track { height: 7px; overflow: hidden; background: #e8e6ed; border-radius: 99px; } .upload-progress-bar { width: 0; height: 100%; background: linear-gradient(90deg,#6c63ff,#b06cff); border-radius: 99px; transition: width .2s; } #uploadBar.is-processing, .upload-queue-bar.is-processing { width: 35% !important; animation: upload-processing 1.15s ease-in-out infinite; } @keyframes upload-processing { from { transform: translateX(-110%); } to { transform: translateX(300%); } } /* Schedule */ #calendar-wrap { padding: .75rem; overflow: hidden; } .fc { color: var(--admin-text); font-size: .82rem; } .fc .fc-daygrid-day-number, .fc .fc-col-header-cell-cushion, .fc .fc-list-day-text, .fc .fc-list-day-side-text, .fc .fc-toolbar-title, .fc th, .fc td { color: var(--admin-text) !important; } .fc .fc-toolbar { gap: .55rem; flex-wrap: nowrap; } .fc .fc-toolbar-chunk { min-width: 0; } .fc .fc-toolbar-chunk:first-child, .fc .fc-toolbar-chunk:last-child { display: flex; align-items: center; } .fc .fc-button-group { display: flex; flex-wrap: nowrap; gap: .35rem; } .fc .fc-button-group > .fc-button { margin-left: 0 !important; border-radius: 7px !important; } .fc .fc-toolbar-title { font-size: 1.05rem !important; white-space: nowrap; } .fc .fc-button { padding: .28rem .52rem !important; color: #fff !important; background: var(--admin-accent) !important; border-color: var(--admin-accent) !important; border-radius: 7px !important; font-size: .76rem !important; } .fc-event { padding: 2px 5px; border: none !important; border-radius: 5px; cursor: pointer; } .fc-event.ev-completed .fc-event-title, .fc-event.ev-completed .fc-list-event-title, .fc-event.ev-cancelled .fc-event-title, .fc-event.ev-cancelled .fc-list-event-title { text-decoration: line-through; opacity: .75; } .fc .fc-day-today { background: #f0eeff !important; } .fc .fc-day.day-weekend { background: #fdf9f6; } .fc .fc-day-today.day-weekend { background: #f0eeff !important; } .time-row { display: flex; align-items: center; gap: .5rem; } .time-block { display: flex; flex: 1; flex-direction: column; } .time-lbl { margin-bottom: .2rem; color: var(--admin-muted); font-size: .72rem; } .time-sep { padding-top: 1.2rem; color: #aaa5b6; font-size: 1.1rem; } .cal-toolbar { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .55rem; } .sched-cal { overflow: hidden; background: #faf9fc; border: 1px solid var(--admin-border); border-radius: 11px; } .cal-nav { display: flex; align-items: center; justify-content: space-between; padding: .65rem .75rem; background: #fff; border-bottom: 1px solid var(--admin-border-soft); } .cal-nav button { padding: .2rem .5rem; color: var(--admin-accent); background: none; border: 0; border-radius: 6px; font-size: 1.05rem; cursor: pointer; } .cal-nav button:hover { background: #f0eeff; } .cal-nav span { color: var(--admin-text); font-size: .95rem; font-weight: 750; } .cal-grid { display: grid; grid-template-columns: repeat(7,1fr); } .cal-wday { padding: .42rem 0; color: #aaa5b6; background: #faf9fc; font-size: .69rem; font-weight: 750; text-align: center; } .cal-wday.is-weekend { color: #d98a91; } .cal-day { position: relative; padding: .55rem .2rem; color: var(--admin-text); border-radius: 0; font-size: .86rem; text-align: center; cursor: pointer; transition: background .1s; user-select: none; } .cal-day:hover { background: #f0eeff; } .cal-day.is-empty { cursor: default; } .cal-day.is-empty:hover { background: none; } .cal-day.is-today { color: var(--admin-accent); font-weight: 750; } .cal-day.is-selected { color: #fff !important; background: var(--admin-accent) !important; } .cal-day.is-range-start { color: #fff !important; background: #a89cff !important; } .cal-day.is-past { color: #ccc8d3; } .day-row { display: flex; align-items: center; gap: .4rem; padding: .5rem 0; border-bottom: 1px solid #f2f0f5; } .day-row:last-child { border-bottom: 0; } .day-date { flex: 1; min-width: 0; overflow: hidden; font-size: .82rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; } .day-times { display: flex; flex-shrink: 0; align-items: center; gap: .25rem; } .day-times .time-sep { padding: 0; font-size: .78rem; } .day-rm { flex-shrink: 0; padding: .15rem .25rem; color: #bbb6c5; background: none; border: 0; font-size: 1rem; line-height: 1; cursor: pointer; } .day-rm:hover { color: var(--admin-danger); } .time-badge-wrap { position: relative; display: inline-flex; align-items: center; justify-content: center; min-width: 3.6rem; padding: .15rem .5rem; color: #5b52d6; background: #ede9ff; border: 1.5px solid #c4beff; border-radius: 20px; font-size: .76rem; font-weight: 750; white-space: nowrap; cursor: pointer; } .time-badge-wrap:focus-within { background: #f0eeff; border-color: var(--admin-accent); } .time-badge-label { z-index: 1; pointer-events: none; } .time-badge-input { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; margin: 0; opacity: 0; background: transparent; border: 0; font-size: 16px; cursor: pointer; } .status-picker { display: flex; gap: .5rem; } .status-btn { display: flex; flex: 1; flex-direction: column; align-items: center; gap: .3rem; padding: .6rem .4rem; color: #777184; background: #f5f4f7; border: 2px solid transparent; border-radius: 10px; font-size: .79rem; font-weight: 650; line-height: 1.2; cursor: pointer; transition: all .15s; } .status-btn-icon { font-size: 1.3rem; line-height: 1; } .status-btn:hover { filter: brightness(.97); } .status-btn-scheduled.is-active { color: #1e40af; background: #dbeafe; border-color: #3b82f6; } .status-btn-completed.is-active { color: #15803d; background: #d1fae5; border-color: #22c55e; } .status-btn-cancelled.is-active { color: #b91c1c; background: #fee2e2; border-color: #ef4444; } /* Dialogs */ .visit-modal-bg, .upload-modal-bg { position: fixed; inset: 0; z-index: 100; display: none; align-items: center; justify-content: center; padding: 1rem; background: rgba(31,27,48,.38); backdrop-filter: blur(3px); } .visit-modal-bg.is-open, .upload-modal-bg.is-open { display: flex; } .visit-modal, .upload-modal { width: 100%; max-width: 420px; padding: 1.25rem; background: #fff; border: 1px solid var(--admin-border); border-radius: 14px; box-shadow: 0 18px 50px rgba(31,27,48,.18); } .visit-modal { max-width: 380px; } .visit-modal h3 { margin: 0 0 .75rem; color: var(--admin-text); font-size: 1.05rem; font-weight: 750; } .visit-modal .meta { margin-bottom: .75rem; color: var(--admin-muted); font-size: .82rem; line-height: 1.6; } .modal-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1rem; } .modal-head h3 { margin: 0; color: var(--admin-text); font-size: 1.05rem; font-weight: 750; } .modal-close { padding: .25rem; color: var(--admin-muted); background: none; border: 0; font-size: 1.15rem; cursor: pointer; } /* Authentication screens */ .auth-shell { display: flex; align-items: center; justify-content: center; padding: 1.5rem 0; } .login-box { width: 100%; max-width: 410px; padding: 0 1rem; } .auth-language { margin-bottom: .7rem; text-align: right; } .auth-language a { color: var(--admin-muted); font-size: .75rem; } .login-card { padding: 1.6rem 1.4rem; background: #fff; border: 1px solid var(--admin-border); border-radius: 16px; box-shadow: 0 12px 38px rgba(42,34,80,.08); } .auth-head { margin-bottom: 1.1rem; text-align: center; } .auth-icon { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; margin: 0 auto .65rem; background: var(--admin-accent-soft); border-radius: 13px; font-size: 1.55rem; } .auth-head h1 { margin: 0; color: var(--admin-text); font-size: 1.25rem; font-weight: 800; } .auth-head p { margin-top: .2rem; color: var(--admin-muted); font-size: .84rem; } .auth-divider { height: 1px; margin: 1rem 0; background: var(--admin-border-soft); border: 0; } .turnstile-wrap { margin-top: .75rem; } .time-columns { margin-bottom: 0 !important; } @media (min-width: 1080px) { .admin-shell { padding-bottom: 0; } .bottom-tabs { display: none; } .desktop-nav { display: flex; align-items: center; justify-content: center; gap: .2rem; } .desktop-nav a { padding: .36rem .62rem; color: #625d70; border-radius: 7px; font-size: .78rem; font-weight: 650; text-decoration: none; transition: background .15s,color .15s; } .desktop-nav a:hover { background: #f2f0f7; } .desktop-nav a.is-active { color: #fff; background: var(--admin-accent); } .sticky-actions { bottom: .75rem; } } @media (max-width: 768px) { .top-header .brand { font-size: .95rem; } .brand-version, .top-header-right .admin-name { display: none; } .main-content { padding: 1rem .75rem 1.5rem; } .page-head { align-items: flex-start; } .page-head h1 { font-size: 1.35rem; } .admin-grid, .form-grid, .admin-toggle-list { grid-template-columns: 1fr; } .admin-field-wide { grid-column: auto; } .admin-section-head { grid-template-columns: 36px minmax(0,1fr); padding: .9rem; } .admin-section-icon { width: 36px; height: 36px; } .admin-section-body, .form-card { padding: .9rem; } .sticky-actions .button { width: 100%; } .fc .fc-toolbar { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: .55rem; font-size: .72rem; } .fc .fc-toolbar-chunk:first-child { grid-column: 1; grid-row: 1; justify-self: start; } .fc .fc-toolbar-chunk:nth-child(2) { grid-column: 2; grid-row: 1; justify-self: end; } .fc .fc-toolbar-chunk:last-child { grid-column: 1 / -1; grid-row: 2; width: 100%; overflow-x: auto; } .fc .fc-toolbar-chunk:last-child .fc-button-group { width: 100%; } .fc .fc-toolbar-chunk:last-child .fc-button { flex: 1 0 auto; } .fc .fc-toolbar-title { font-size: .92rem !important; } .fc .fc-button { padding: .22rem .35rem !important; font-size: .68rem !important; } } @media (max-width: 520px) { .page-head { flex-direction: column; } .page-head-actions { width: 100%; } .page-head-actions .button { flex: 1; } .item-card-header { align-items: flex-start; } .media-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; } .media-card img, .media-card .photo-thumb, .media-card .video-thumb { height: 122px; } .media-meta { align-items: flex-start; flex-direction: column; gap: .1rem; } .status-picker { flex-direction: column; } .status-btn { flex-direction: row; justify-content: flex-start; } .inline-control { align-items: stretch; flex-direction: column; } .inline-admin-grid { grid-template-columns: 1fr; align-items: stretch; } } @media (max-width: 400px) { .bottom-tabs a .tab-label { display: none; } .bottom-tabs a { min-width: 2.8rem; padding: 0 .3rem; } }