.admin-body { min-height: 100vh; }
.admin-main { min-height: calc(100vh - 76px); padding-block: 46px 90px; }
.login-panel { width: min(100%, 470px); margin: 5vh auto; padding: 38px; background: var(--paper); border: 1px solid var(--line); }
.login-panel h1, .admin-title-row h1 { margin: 16px 0; font-size: clamp(42px, 6vw, 64px); }
.login-panel > p:not(.eyebrow) { color: var(--muted); }
.login-panel form { display: grid; gap: 18px; margin-top: 28px; }
.button-outline { min-height: 46px; border: 1px solid #cdd3ca; background: transparent; color: var(--ink); }
.admin-title-row { display: flex; justify-content: space-between; align-items: start; gap: 24px; margin-bottom: 24px; }
.admin-title-row h1 { margin-bottom: 0; }
.admin-notice { min-height: 24px; color: #465c3e; font-size: 14px; }
.admin-notice.is-error { color: #a53c35; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 35px; }
.stat-card { min-height: 108px; padding: 18px; border: 1px solid var(--line); background: var(--paper); }
.stat-card span { display: block; color: var(--muted); font-size: 14px; }
.stat-card strong { display: block; margin-top: 8px; font-size: 30px; font-weight: 500; }
.calendar-panel { padding: 24px; border: 1px solid var(--line); background: var(--paper); }
.calendar-panel-head { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 20px; }
.calendar-panel-head .eyebrow { margin-bottom: 7px; }
.calendar-panel h2 { margin: 0; font-size: 27px; }
.calendar-panel .calendar-toolbar { display: flex; align-items: center; gap: 12px; margin: 0; }
.calendar-toolbar h3 { min-width: 145px; margin: 0; font-size: 17px; text-align: center; text-transform: capitalize; }
.calendar-panel .calendar-weekdays { gap: 1px; margin: 4px 0 0; border: 1px solid var(--line); border-bottom: 0; background: #d9ddd4; }
.calendar-panel .calendar-weekdays span { padding-block: 9px; background: #f2f3ee; }
.admin-calendar-grid { margin-top: 0; gap: 1px; border: 1px solid var(--line); background: #d9ddd4; }
.admin-calendar-grid > span { min-height: 60px; background: var(--paper); }
.admin-day-button { min-height: 60px; position: relative; border: 0; border-radius: 0; background: var(--paper); color: var(--ink); cursor: pointer; }
.admin-day-button:hover { background: #f1f3ed; }
.admin-day-button.is-selected { background: #e2eadb; box-shadow: inset 0 0 0 2px #667b59; }
.admin-day-button.is-blocked { background: #fce9e7; color: #a53c35; }
.admin-day-button.is-blocked.is-selected { box-shadow: inset 0 0 0 2px #b64a40; }
.admin-day-button.has-blocked-slots:not(.is-blocked) { box-shadow: inset 0 0 0 1px #d5803b; }
.day-closed-mark { position: absolute; top: 2px; left: 5px; color: #a53c35; font-size: 14px; font-weight: 700; line-height: 1; }
.day-indicators { position: absolute; bottom: 6px; left: 50%; transform: translateX(-50%); display: flex; gap: 3px; }
.day-indicator { width: 8px; height: 8px; border-radius: 50%; background: rgb(100 110 100 / 24%); box-shadow: 0 0 0 1px rgb(0 0 0 / 8%); }
.day-indicator-new.is-lit { background: #16a34a; }
.day-indicator-confirmed.is-lit { background: #ef4444; }
.day-indicator-completed.is-lit { background: #2563eb; }
.day-count { position: absolute; top: 2px; right: 4px; color: var(--muted); font-size: 10px; }
.calendar-legend { display: flex; flex-wrap: nowrap; align-items: center; gap: 15px; margin: 15px 0 8px; overflow-x: auto; color: var(--muted); font-size: 13px; line-height: 1.35; white-space: nowrap; }
.calendar-legend > span { display: inline-flex; align-items: center; min-height: 22px; }
.legend-pending { color: #16803d; }
.legend-confirmed { color: #d92f2f; }
.legend-done { color: #1f55c5; }
.legend-closed { color: #b42318; }
.admin-day-orders { margin-top: 16px; border-top: 1px solid var(--line); padding-top: 16px; }
.admin-day-orders h3 { margin-bottom: 12px; font-size: 18px; }
.day-closure-notice { margin: 0 0 10px; color: #a53c35; font-size: 14px; }
.availability-controls { display: grid; gap: 10px; margin: 14px 0; padding: 14px; border: 1px solid var(--line); background: #f8f8f3; }
.availability-controls > div:first-child { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.availability-controls p { margin: 0; color: var(--muted); font-size: 13px; }
.availability-controls button { min-height: 40px; padding: 7px 11px; border: 1px solid #bbc5b3; background: white; color: var(--ink); font: inherit; font-size: 13px; cursor: pointer; }
.availability-controls button:hover:not(:disabled) { background: #edf2e8; }
.availability-controls button.is-danger { border-color: #e2aaa4; color: #a53c35; }
.availability-controls button:disabled { opacity: .5; cursor: not-allowed; }
.availability-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(106px, 1fr)); gap: 6px; }
.availability-slots button { text-align: center; }
.availability-slots button.is-closed { border-color: #e2aaa4; color: #a53c35; }
.manual-order-form { display: grid; gap: 12px; margin-top: 18px; padding: 18px; border: 1px solid var(--line); background: var(--paper); }
.manual-order-form h4 { margin: 0; font-size: 19px; }
.manual-order-form > p { margin: -4px 0 0; color: var(--muted); font-size: 13px; }
.manual-order-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.manual-order-form .button { justify-self: start; }
.map-link { display: inline-flex; align-items: center; gap: 6px; margin-left: 5px; color: #285bb5; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.map-link img { width: 16px; height: 16px; flex: 0 0 16px; }
.calendar-order { width: 100%; min-height: 52px; display: grid; grid-template-columns: 12px minmax(0,1fr); gap: 2px 10px; align-items: center; padding: 9px 10px; border: 0; border-bottom: 1px solid #efede7; background: transparent; color: var(--ink); text-align: left; cursor: pointer; }
.calendar-order > span:last-child { grid-column: 2; color: var(--muted); font-size: 13px; }
.status-dot { width: 10px; height: 10px; border-radius: 50%; background: #16a34a; }
.status-dot[data-status="confirmed"] { background: #ef4444; }
.status-dot[data-status="completed"] { background: #2563eb; }
.orders-head { display: flex; justify-content: space-between; align-items: end; gap: 24px; margin: 44px 0 18px; }
.orders-head h2 { margin: 0 0 6px; font-size: 28px; }
.orders-head p { margin: 0; color: var(--muted); font-size: 15px; }
.filter-label { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 14px; }
.filter-label select { min-height: 46px; max-width: 100%; padding: 0 10px; border: 1px solid var(--line); background: #fff; color: var(--ink); }
.orders-list { display: grid; gap: 12px; }
.order-card { display: grid; grid-template-columns: minmax(180px, .75fr) minmax(230px, 1fr) auto; gap: 18px; align-items: start; padding: 21px; border: 1px solid var(--line); background: var(--paper); transition: box-shadow .25s ease, border-color .25s ease; }
.order-card.is-highlighted { border-color: #71855f; box-shadow: 0 0 0 3px rgb(113 133 95 / 18%); }
.order-name { margin: 10px 0 4px; font-size: 18px; font-weight: 700; }
.order-meta, .order-detail { margin: 0 0 5px; color: var(--muted); font-size: 15px; overflow-wrap: anywhere; }
.order-phone { display: block; margin: 8px 0; color: #3f6335; font-size: 15px; font-weight: 700; overflow-wrap: anywhere; }
.order-source { color: #66705f; font-size: 12px; }
.cancel-reason { color: #8c3e31; }
.status-badge { display: inline-flex; padding: 6px 9px; border-radius: 2px; background: #f3e6d9; color: #7e4b2a; font-size: 13px; }
.status-badge[data-status="confirmed"] { background: #e8eee3; color: #405e37; }
.status-badge[data-status="cancelled"] { background: #f7e7e4; color: #87483f; }
.status-badge[data-status="completed"] { background: #e4ebf6; color: #214b88; }
.order-actions { display: flex; flex-direction: column; gap: 7px; }
.order-actions button { min-height: 44px; padding: 0 11px; border: 1px solid var(--line); background: transparent; color: var(--ink); font-size: 14px; cursor: pointer; }
.order-actions button:hover { background: #f1f2eb; }
.order-actions .danger-action, .order-actions .delete-order { color: #8d453e; border-color: #e6d1cc; }
.order-actions .danger-action:hover, .order-actions .delete-order:hover { background: #f8e9e5; }
.edit-details { grid-column: 1 / -1; border-top: 1px solid var(--line); padding-top: 12px; }
.edit-details summary { min-height: 44px; display: flex; align-items: center; color: #42573b; font-weight: 700; cursor: pointer; }
.edit-form { display: grid; gap: 14px; padding: 12px 0 3px; }
.edit-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 13px; }
.edit-wide { grid-column: 1 / -1; }
.edit-form .button { justify-self: start; }
.empty-orders { padding: 22px; border: 1px dashed #cdd3ca; color: var(--muted); text-align: center; font-size: 15px; }
.admin-footnote { margin-top: 22px; color: var(--muted); font-size: 13px; }
.admin-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 15px 0 25px; border-bottom: 1px solid var(--line); }
.admin-tab { min-height: 46px; padding: 0 16px; border: 1px solid transparent; border-bottom: 0; background: transparent; color: var(--muted); font: inherit; cursor: pointer; }
.admin-tab.is-active { border-color: var(--line); background: var(--paper); color: var(--ink); font-weight: 700; }
.archive-admin-heading h2 { margin: 5px 0 8px; font-size: clamp(25px, 4vw, 34px); }
.archive-admin-heading p:not(.eyebrow) { max-width: 720px; margin: 0; color: var(--muted); }
.archive-create-form { display: flex; align-items: end; gap: 12px; max-width: 820px; margin: 22px 0 26px; padding: 17px; border: 1px solid var(--line); background: var(--paper); }
.archive-create-form .field { flex: 1; }
.archive-create-form .button { min-height: 46px; white-space: nowrap; }
.archive-albums { display: grid; gap: 18px; }
.archive-album { padding: 20px; border: 1px solid var(--line); background: var(--paper); }
.archive-album-heading, .archive-card-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.archive-title-form { display: flex; flex: 1; align-items: end; gap: 10px; max-width: 720px; }
.archive-title-form .field { flex: 1; }
.archive-title-form .button { min-height: 44px; white-space: nowrap; }
.archive-order-controls { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.archive-order-controls button, .archive-download { min-height: 40px; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; border: 1px solid var(--line); background: #fffefa; color: var(--ink); font: inherit; font-size: 13px; text-decoration: none; cursor: pointer; }
.archive-order-controls button:disabled { opacity: .4; cursor: not-allowed; }
.archive-order-controls .archive-delete { color: #8d453e; border-color: #e6d1cc; }
.archive-cards { display: grid; gap: 12px; margin-top: 16px; }
.archive-card { padding: 16px; border: 1px solid #eae6dd; background: #fbfaf6; }
.archive-card-heading { margin-bottom: 14px; }
.archive-card-create { display: flex; align-items: end; gap: 10px; max-width: 720px; margin-top: 18px; }
.archive-card-create .field { flex: 1; }
.archive-card-create .button { min-height: 46px; white-space: nowrap; }
.archive-upload-form { display: grid; grid-template-columns: minmax(180px, 1.2fr) minmax(180px, 1fr) minmax(160px, 1fr) auto; align-items: end; gap: 10px; padding: 14px; background: #f1f2ec; }
.archive-upload-form .button { min-height: 46px; white-space: nowrap; }
.archive-file-field input { min-height: 46px; padding: 8px; }
.archive-help { margin: 8px 0 13px; color: var(--muted); font-size: 12px; }
.archive-photo-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.archive-photo { min-width: 0; padding: 9px; border: 1px solid var(--line); background: #fffefa; }
.archive-photo > img { width: 100%; height: 150px; display: block; object-fit: cover; background: #f0eee8; }
.archive-photo-title { display: block; margin: 9px 0; }
.archive-photo-title .button { margin-top: 6px; }
.archive-photo .archive-order-controls { align-items: stretch; }
.archive-photo .archive-order-controls button, .archive-photo .archive-download { min-height: 34px; padding-inline: 8px; font-size: 12px; }
.archive-no-original { align-self: center; color: var(--muted); font-size: 11px; }
.archive-empty-card { margin: 12px 0 0; padding: 14px; border: 1px dashed var(--line); color: var(--muted); text-align: center; }
@media (max-width: 850px) {
  .order-card { grid-template-columns: minmax(0,1fr) auto; }
  .order-info { grid-column: 1 / -1; }
  .order-actions { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; }
  .edit-grid { grid-template-columns: 1fr 1fr; }
  .archive-upload-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .admin-main { padding-block: 30px 60px; }
  .login-panel { margin-top: 2vh; padding: 24px 20px; }
  .stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .stat-card { min-height: 94px; padding: 14px; }
  .stat-card span { font-size: 13px; }
  .calendar-panel { padding: 17px 13px; }
  .calendar-panel-head { display: block; }
  .calendar-panel .calendar-toolbar { justify-content: space-between; margin-top: 14px; }
  .calendar-toolbar h3 { min-width: unset; }
  .admin-day-button, .admin-calendar-grid > span { min-height: 48px; }
  .availability-controls { padding: 11px; }
  .manual-order-grid { grid-template-columns: 1fr 1fr; }
  .orders-head { display: block; margin-top: 33px; }
  .filter-label { margin-top: 15px; align-items: flex-start; flex-direction: column; }
  .filter-label select { width: 100%; min-height: 48px; }
  .order-card { grid-template-columns: 1fr; gap: 12px; padding: 16px; }
  .order-info, .order-actions, .edit-details { grid-column: 1; }
  .order-actions { flex-direction: row; flex-wrap: wrap; }
  .order-actions button { flex: 1 1 auto; }
  .edit-grid { grid-template-columns: 1fr; }
  .edit-wide { grid-column: auto; }
  .manual-order-grid { grid-template-columns: 1fr; }
  .archive-create-form, .archive-card-create, .archive-album-heading, .archive-card-heading { display: grid; grid-template-columns: 1fr; align-items: stretch; }
  .archive-title-form { display: grid; grid-template-columns: 1fr; max-width: none; }
  .archive-order-controls { justify-content: flex-start; }
  .archive-upload-form { grid-template-columns: 1fr; }
  .archive-photo-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .archive-photo > img { height: 120px; }
}

.password-control { position: relative; }
.field .password-control input { padding-right: 54px; }
.password-peek { position: absolute; top: 2px; right: 2px; width: 44px; height: 44px; display: grid; place-items: center; border: 0; border-radius: 5px; background: transparent; color: #53664f; cursor: pointer; touch-action: manipulation; }
.password-peek:hover, .password-peek.is-active { background: #e7ede2; }
.password-peek:focus-visible { outline: 2px solid #56684d; outline-offset: -3px; }
.password-peek-hint { color: #697764; font-size: 12px; font-weight: 400; }

.orders-new-notice { padding: 12px 14px; background:#edf3e9; border:1px solid #cfdcc8; color:#405c39; font-size:14px; }

.create-intro { margin-bottom: 22px; }
.create-intro h2 { margin: 4px 0 8px; font: 32px/1.2 Georgia,serif; }
.create-intro > p:last-child { color: var(--muted); max-width: 640px; }
.analytics {animation:analytics-enter .3s ease both}.analytics-heading {display:flex;align-items:end;justify-content:space-between;gap:20px;margin:28px 0}.analytics-heading h2{font:42px/1.1 Georgia,serif;margin:5px 0 10px}.analytics-heading h2 em{color:#566c50}.analytics-heading p:last-child,.analytics-files>p:not(.eyebrow){color:#666f63;line-height:1.6;max-width:730px}.analytics-source{padding:10px 13px;background:#e8eee3;color:#53694b;font-size:13px;white-space:nowrap}.analytics-controls,.analytics-display,.analytics-files{background:#fffefa;border:1px solid #dedfd5;padding:24px;margin-bottom:16px}.analytics-dates{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.analytics-dates>span:first-child{font-weight:bold;margin-right:6px}.analytics-date{padding:12px;border:1px solid #d5dbcf;background:#f8f9f5;cursor:pointer;color:#34482e}.analytics-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0 17px}.analytics-filters label{display:grid;gap:7px;font-size:13px;font-weight:bold;color:#4c5749}.analytics-filters select{width:100%;min-height:46px;border:1px solid #d8dcd1;background:#fffefa;padding:9px;color:#242822}.analytics-check{display:flex;gap:10px;align-items:center;color:#465744}.analytics-check input{width:18px;height:18px;accent-color:#536c4d}.analytics-calendar{width:min(360px,100%);margin:14px 0;background:#fffefa;border:1px solid #cbd3c5;padding:14px;box-shadow:0 9px 24px #2d33291a}.analytics-calendar[hidden],.analytics-chart[hidden],#analytics-table-wrap[hidden]{display:none}.analytics-calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.analytics-calendar-head button{width:38px;height:38px;border:1px solid #ddd;background:#fff;cursor:pointer}.analytics-calendar-head button:disabled{opacity:.35;cursor:default}.analytics-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid #d9ded4;border-top:1px solid #d9ded4}.analytics-calendar-grid>*{display:grid;place-items:center;min-height:38px;border:0;border-right:1px solid #d9ded4;border-bottom:1px solid #d9ded4;background:#fffefa}.analytics-calendar-grid button{cursor:pointer;color:#263225}.analytics-calendar-grid button:disabled{color:#b5b8b0;background:#f4f4f0;cursor:default}.analytics-calendar-grid button.is-selected{outline:2px solid #758e6d;outline-offset:-2px;background:#edf3e9}.analytics-calendar-weekday{font-size:12px;color:#65705e;background:#f1f3ed}.analytics-summary{background:#e8eee3;padding:24px;margin-bottom:16px}.analytics-summary span{font-size:11px;font-weight:bold;letter-spacing:.1em;color:#576c50}.analytics-summary strong{display:block;font:48px/1 Georgia,serif;margin:12px 0 6px;color:#303b2b}.analytics-summary p{margin:0;color:#61705c;font-size:14px}.analytics-display-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px}.analytics-display h3,.analytics-files h3{font:27px/1.2 Georgia,serif;margin:4px 0}.analytics-view-switch{display:flex;gap:4px}.analytics-view-switch button{border:1px solid #dce0d7;background:#fff;padding:10px;cursor:pointer}.analytics-view-switch button[aria-pressed=true]{background:#e8eee3;color:#354b30}.analytics-chart{display:grid;gap:12px;max-height:580px;overflow:auto}.analytics-bar-row{display:grid;grid-template-columns:minmax(100px,180px) minmax(60px,1fr) 45px;gap:12px;align-items:center;font-size:14px}.analytics-bar-label{overflow-wrap:anywhere}.analytics-bar-track{height:20px;background:#eff1eb}.analytics-bar{display:block;height:100%;width:var(--width);background:var(--bar-color,#698361);animation:analytics-grow .45s ease both;animation-delay:var(--delay)}.analytics-bar-row strong{text-align:right}#analytics-table-wrap{overflow:auto}#analytics-table-wrap table{width:100%;border-collapse:collapse;text-align:left}#analytics-table-wrap th,#analytics-table-wrap td{padding:12px 8px;border-bottom:1px solid #e0e4db}#analytics-table-wrap td:last-child,#analytics-table-wrap th:last-child{text-align:right}.analytics-file-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.analytics-file-actions label{cursor:pointer}.analytics-file-actions [hidden]{display:none}.analytics-message{font-size:14px;color:#53694b;margin:14px 0 0}@keyframes analytics-grow{from{width:0}to{width:var(--width)}}@keyframes analytics-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:700px){.analytics-heading{display:block}.analytics-source{display:inline-block;margin-top:8px}.analytics-controls,.analytics-display,.analytics-files{padding:17px}.analytics-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-display-head{align-items:start;flex-direction:column}.analytics-bar-row{grid-template-columns:minmax(80px,115px) minmax(40px,1fr) 32px;gap:7px;font-size:13px}.analytics-dates{gap:7px}.analytics-dates .button{width:100%}}@media(prefers-reduced-motion:reduce){.analytics,.analytics-bar{animation:none!important}}html.motion-disabled .analytics,html.motion-disabled .analytics-bar{animation:none!important}

/* Общее мягкое появление всех разделов и оформленные вкладки. */
.admin-view:not([hidden]) { animation: admin-view-enter .3s ease both; }
@keyframes admin-view-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.admin-tabs { gap: 7px; }
.admin-tab { border: 1px solid #dcded4; border-radius: 4px 4px 0 0; background: #f7f6f1; color: #596256; transition: background-color .22s ease, border-color .22s ease, box-shadow .22s ease, color .22s ease, transform .22s ease; }
.admin-tab.is-active { border-color: #a9b8a1; background: #edf2e8; color: #354a31; box-shadow: inset 0 -2px 0 #708767; }
@media (hover: hover) { .admin-tab:hover { background: #edf2e8; border-color: #97aa8d; color: #354a31; box-shadow: inset 0 -2px 0 #8da481; transform: translateY(-2px); } }
.admin-tab:focus-visible, .admin-day-button:focus-visible { outline: 2px solid #536f4b; outline-offset: -3px; }
.admin-day-button.is-unavailable { background: #f1f2ed; color: #899187; box-shadow: none; }
.admin-day-button.is-unavailable:hover { background: #e9ede5; }
.admin-day-button.is-unavailable .day-indicators, .admin-day-button.is-unavailable .day-closed-mark, .admin-day-button.is-unavailable .day-count { opacity: .45; filter: grayscale(.5); }
.admin-day-button.is-unavailable.is-selected { background: #e8eee3; box-shadow: inset 0 0 0 2px #859a7c; }
.history-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; }
.history-heading .eyebrow { margin:0 0 6px; }
.history-heading h3 { margin:0; }
.history-heading > span { color:#5d7157; background:#edf2e8; padding:8px 10px; font-size:12px; }
.history-description { margin:12px 0 16px; color:#66705f; font-size:14px; line-height:1.5; }
.history-entries { display:grid; gap:10px; }
.history-entry { padding:16px; background:#f9faf6; border:1px solid #dce3d7; }
.history-entry-head { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
.history-entry dl { display:grid; gap:6px; margin:12px 0 0; font-size:14px; }
.history-entry dl div { display:flex; flex-wrap:wrap; gap:4px 8px; }
.history-entry dt { color:#687367; }
.history-entry dt::after { content:":"; }
.history-entry dd { margin:0; overflow-wrap:anywhere; }
.calendar-toolbar .icon-button:disabled { opacity: .38; cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) { .admin-view:not([hidden]) { animation: none !important; } .admin-tab { transition: none; } .admin-tab:hover { transform:none; } }
html.motion-disabled .admin-view:not([hidden]) { animation: none !important; }
html.motion-disabled .admin-tab { transition: none; }
html.motion-disabled .admin-tab:hover { transform:none; }
.admin-day-button.is-unavailable.has-blocked-slots:not(.is-blocked):not(.is-selected) { box-shadow:none; }
.admin-day-button.is-unavailable.is-blocked.is-selected { box-shadow:inset 0 0 0 2px #859a7c; }
@media (max-width: 640px) {
  .admin-tabs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; border-bottom:0; }
  .admin-tab { min-width:0; min-height:48px; padding:9px 6px; border-radius:4px; font-size:14px; line-height:1.3; text-align:center; }
}

/* Clear sections, responsive availability and draft publication */
.tools-heading{margin:28px 0 14px}.tools-heading h2{font-size:23px;margin:4px 0}.tools-heading p:last-child,.tools-hint{color:#626d5e;margin:4px 0 14px;font-size:14px}.analytics-controls h3{font-size:22px;margin:4px 0}
.availability-controls{display:block;padding:0;border:1px solid #cbd5c5;background:#f5f7f1;border-radius:8px;overflow:hidden}.availability-controls summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:17px 20px;cursor:pointer;list-style:none;color:#33472f;min-height:64px}.availability-controls summary::-webkit-details-marker{display:none}.availability-controls summary strong,.availability-controls summary small{display:block}.availability-controls summary small{color:#687464;font-size:13px;margin-top:4px}.availability-controls summary>span:last-child{font-size:26px;transition:transform .2s}.availability-controls[open] summary>span:last-child{transform:rotate(45deg)}.availability-content{display:grid;gap:14px;padding:0 20px 20px;animation:panel-in .2s ease}.availability-content>div:first-of-type{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.availability-controls button{min-height:48px;border-radius:6px}.availability-slots{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px}.availability-slots button{background:#fffefa;font-weight:600;transition:background .2s,transform .2s}.availability-slots button:hover:not(:disabled){transform:translateY(-2px)}.availability-slots button.is-closed{background:#fae9e6}.archive-publishing{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 24px;margin:18px 0;background:#edf2e8;border:1px solid #cbd8c3;border-radius:8px}.archive-publishing p{margin:5px 0 0;color:#596853;font-size:14px}.archive-publish-actions{display:flex;flex-wrap:wrap;gap:8px}.archive-publish-actions .button{min-height:48px}.day-indicator.just-changed{animation:indicator-pop .6s ease both}@keyframes indicator-pop{0%{transform:scale(.45);opacity:.3}65%{transform:scale(1.45)}100%{transform:scale(1);opacity:1}}@keyframes panel-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}@media(max-width:700px){.archive-publishing{align-items:stretch;flex-direction:column;padding:16px}.archive-publish-actions>*{flex:1;text-align:center}.availability-content{padding:0 14px 16px}.availability-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.availability-controls summary{padding:15px}.manual-order-grid .location-field{grid-column:1/-1}}@media(prefers-reduced-motion:reduce){.day-indicator.just-changed,.availability-content{animation:none}.availability-controls *{transition:none!important}}html.motion-disabled .day-indicator.just-changed,html.motion-disabled .availability-content{animation:none}

@media(max-width:700px){.calendar-legend{flex-wrap:wrap;white-space:normal;overflow:visible;gap:6px 12px}}

/* Schedule: selection is a draft until explicitly applied. */
.schedule-layout { display:grid; grid-template-columns:minmax(0, 1.4fr) minmax(310px, .9fr); gap:24px; align-items:start; }
.schedule-calendar { min-width:0; }
.availability-panel { min-width:0; border:1px solid #d3ddcc; border-radius:10px; background:#f4f7ef; padding:20px; }
.availability-panel h3 { margin:4px 0 2px; font-size:20px; }
.availability-date { color:#4f6548; font-weight:700; font-size:14px; margin:0 0 12px; }
.availability-panel p { margin:0 0 12px; line-height:1.45; color:#566252; font-size:14px; }
.availability-panel .availability-day-button { width:100%; min-height:46px; background:#fffefa; border:1px solid #b3c1ab; border-radius:6px; font:inherit; font-size:14px; font-weight:700; color:#354b32; cursor:pointer; }
.availability-panel .availability-day-button.is-danger { color:#a13d35; border-color:#dcaeaa; }
.availability-panel .availability-day-button:disabled { opacity:.55; cursor:not-allowed; }
.availability-panel .timeline-title { display:flex; justify-content:space-between; align-items:center; margin:18px 0 3px; gap:8px; font-size:15px; font-weight:700; }
.availability-panel .timeline-hint { font-size:13px; margin-bottom:10px; }
.timeline-grid { display:grid; grid-template-columns:minmax(0, 1fr); gap:4px; touch-action:none; user-select:none; }
.timeline-slot { min-width:0; min-height:44px; display:flex; align-items:center; gap:8px; padding:8px 9px; background:#fffefa; border:1px solid #ced8c8; border-radius:6px; color:#2d392c; font:inherit; cursor:pointer; text-align:left; transition:background .15s, border-color .15s, box-shadow .15s; }
.timeline-slot .timeline-time { font-weight:700; font-size:14px; }
.timeline-slot .timeline-status { font-size:11px; color:#637160; margin-left:auto; }
.timeline-slot .timeline-handle { flex:none; width:16px; height:16px; border:2px solid #8aa080; border-radius:50%; background:#fff; opacity:.35; transition:opacity .15s; }
.timeline-slot:hover .timeline-handle,.timeline-slot:focus-visible .timeline-handle,.timeline-slot.is-selected .timeline-handle { opacity:1; }
.timeline-slot.is-closed { background:#fae9e6; border-color:#d7a49c; color:#80362f; }
.timeline-slot.is-closed .timeline-status { color:#954940; }
.timeline-slot.is-selected { background:#f5d1cc; border-color:#bb554a; box-shadow:inset 0 0 0 1px #bb554a; }
.timeline-slot.is-selected .timeline-handle { border-color:#ac3e35; background:#c35549; box-shadow:inset 0 0 0 3px white; }
.timeline-slot:disabled { opacity:.56; cursor:not-allowed; }
.timeline-slot:focus-visible,.availability-panel button:focus-visible { outline:3px solid #56774f; outline-offset:2px; }
.timeline-summary { min-height:20px; margin:12px 0 8px!important; font-size:13px!important; }
.timeline-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.timeline-actions button { min-height:45px; padding:8px; border:1px solid #496342; border-radius:6px; background:#40563b; color:white; font:inherit; font-size:13px; font-weight:700; cursor:pointer; }
.timeline-actions button[data-action="open"] { background:#fffefa; color:#40563b; }
.timeline-actions button:disabled { opacity:.45; cursor:not-allowed; }
.timeline-note { margin:10px 0 0!important; font-size:12px!important; }
@media (hover:none), (pointer:coarse) { .timeline-slot .timeline-handle { opacity:1; } }
@media (max-width:900px) { .schedule-layout { grid-template-columns:1fr; gap:18px; } }
@media (max-width:450px) { .availability-panel { padding:16px; } }
@media (prefers-reduced-motion:reduce) { .timeline-slot,.timeline-slot .timeline-handle { transition:none; } }
html.motion-disabled .timeline-slot, html.motion-disabled .timeline-slot .timeline-handle { transition:none; }

.availability-panel .availability-feedback:not([hidden]) { margin: 8px 0 12px; padding: 10px 12px; border: 1px solid #b5cbb0; border-radius: 6px; background: #e6f1e2; color: #2d542d; font-weight: 700; overflow-wrap:anywhere; }
.availability-panel .availability-feedback.is-error { background:#faeae8; border-color:#dda7a0; color:#96372e; }

.inline-confirm { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:8px 0; padding:10px 12px; border:1px solid #d8c9ab; border-radius:7px; background:#fffaf0; color:#554a38; font-size:13px; animation:admin-feedback-in .2s ease both; }
.inline-confirm span { flex:1 1 100%; line-height:1.45; }
.inline-confirm button { min-height:38px; padding:7px 12px; border:1px solid #b8c9b1; border-radius:5px; background:#f5f8f1; color:#344c31; cursor:pointer; font:inherit; font-weight:700; }
.availability-panel .availability-feedback:not([hidden]) { animation:admin-feedback-in .25s ease both; }
@keyframes admin-feedback-in { from { opacity:0; transform:translateY(-5px); } to { opacity:1; transform:none; } }
@keyframes admin-calendar-in { from { opacity:.35; transform:translateY(5px); } to { opacity:1; transform:none; } }
.calendar-month-enter { animation:admin-calendar-in .25s ease both; }
.admin-tab, .availability-day-button, .timeline-slot, .admin-body button { transition:background-color .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease; }
@media (prefers-reduced-motion:reduce) { .calendar-month-enter, .inline-confirm, .availability-panel .availability-feedback:not([hidden]) { animation:none!important; } .admin-body button { transition:none!important; } }
html.motion-disabled .calendar-month-enter, html.motion-disabled .inline-confirm, html.motion-disabled .availability-panel .availability-feedback:not([hidden]) { animation:none!important; }
/* Custom statistics menus retain the underlying select for form compatibility. */
.animated-filter { position:relative; min-width:0; }
.animated-filter-native { position:absolute; width:1px; min-height:0; height:1px; opacity:0; overflow:hidden; pointer-events:none; padding:0; border:0; }
.animated-filter-toggle { width:100%; min-height:46px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 12px; border:1px solid #d8dcd1; border-radius:4px; background:#fffefa; color:#242822; font:inherit; text-align:left; cursor:pointer; }
.animated-filter-arrow { width:8px; height:8px; border-right:1.5px solid #52674b; border-bottom:1.5px solid #52674b; transform:rotate(45deg) translateY(-2px); transition:transform .22s ease; flex:none; }
.animated-filter.is-open { z-index:5; }
.animated-filter.is-open .animated-filter-toggle { border-color:#829a79; box-shadow:0 0 0 3px #9fb89a33; }
.animated-filter.is-open .animated-filter-arrow { transform:rotate(225deg) translateY(-2px); }
.animated-filter-list { position:absolute; top:calc(100% + 5px); left:0; right:0; max-height:240px; overflow:auto; padding:4px; border:1px solid #cbd7c6; border-radius:6px; background:#fffefa; box-shadow:0 8px 24px #29362922; opacity:0; visibility:hidden; transform:translateY(-6px); pointer-events:none; transition:opacity .2s ease, transform .2s ease, visibility 0s linear .2s; }
.animated-filter.is-open .animated-filter-list { opacity:1; visibility:visible; transform:none; pointer-events:auto; transition-delay:0s; }
.animated-filter-option { display:block; width:100%; min-height:42px; border:0; border-radius:4px; background:transparent; color:#344c31; font:inherit; font-weight:400; padding:8px 10px; text-align:left; cursor:pointer; }
.animated-filter-option:hover, .animated-filter-option:focus-visible { background:#edf3e8; }
.animated-filter-option[aria-selected=true] { background:#e4eddf; font-weight:700; }
#logout-button:hover, .admin-access-logout:hover { background:#fae8e5; color:#a33129; border-color:#d9958c; }
.analytics-calendar:not([hidden]) { animation:admin-feedback-in .25s ease both; }
@media(prefers-reduced-motion:reduce) { .animated-filter-list,.animated-filter-arrow { transition:none!important; } .analytics-calendar:not([hidden]) { animation:none!important; } }
html.motion-disabled .animated-filter-list,html.motion-disabled .animated-filter-arrow { transition:none!important; }
html.motion-disabled .analytics-calendar:not([hidden]) { animation:none!important; }

.inline-confirm label { display:grid; gap:6px; flex:1 1 100%; font-weight:700; }
.inline-confirm input { width:100%; min-height:42px; padding:8px; border:1px solid #cbd5c5; border-radius:5px; background:white; color:#253025; font:inherit; }
.admin-notice { position:fixed; z-index:100; left:20px; bottom:20px; max-width:min(420px,calc(100vw - 40px)); min-height:0; margin:0; padding:0; opacity:0; visibility:hidden; pointer-events:none; transform:translateY(8px); transition:opacity .22s ease,transform .22s ease,visibility 0s linear .22s; }
.admin-notice.is-visible { opacity:1; visibility:visible; transform:none; transition-delay:0s; padding:12px 16px; border:1px solid #b5cbb0; border-radius:7px; background:#f3f8ef; box-shadow:0 7px 24px #29362922; }
.admin-notice.is-visible.is-error { background:#fff1ef; border-color:#dcaaa3; }
.context-notice { padding:9px 12px; margin:8px 0; border-radius:5px; background:#e7f1e2; color:#34572f; font-size:14px; animation:admin-feedback-in .25s ease both; }
.context-notice.is-error { background:#faeae8; color:#96372e; }
@media(prefers-reduced-motion:reduce) { .admin-notice { transition:none!important; } .context-notice { animation:none!important; } }
html.motion-disabled .admin-notice { transition:none!important; } html.motion-disabled .context-notice { animation:none!important; }
/* Consistent soft corners for panels and controls; calendar cells stay aligned. */
.stat-card, .analytics-controls, .analytics-display, .analytics-files, .analytics-summary,
.analytics-calendar, .archive-album, .archive-card, .archive-photo, .order-card,
.manual-order-form, .create-intro, .empty-orders, .archive-publishing { border-radius:10px; }
.analytics-date, .analytics-view-switch button, .analytics-calendar-head button,
.animated-filter-toggle, .analytics-filters select, .archive-upload-form,
.archive-order-controls button, .order-actions button { border-radius:6px; }
.analytics-source, .analytics-bar-track, .analytics-bar { border-radius:5px; }

.availability-panel .timeline-sound { flex:none; padding:5px 8px; border:1px solid #b9cbb3; border-radius:9px; color:#405c3c; background:#f8fbf5; font:inherit; font-size:11px; font-weight:500; line-height:1.2; cursor:pointer; transition:background .2s, color .2s, border-color .2s; }
.availability-panel .timeline-sound:hover { background:#e3eddf; border-color:#75926f; }

/* A quiet, readable legend under the calendar. */
.calendar-legend{padding:10px 13px;border:1px solid #dce5d7;border-radius:10px;background:#f4f7f0;gap:8px 17px;white-space:normal;flex-wrap:wrap;overflow:visible}
.calendar-legend>span{gap:6px;min-height:24px}
.calendar-legend .legend-mark{font-size:17px;line-height:1;display:inline-block}
.calendar-legend .legend-closed .legend-mark{font-size:21px;font-weight:600}
.admin-tabs,.admin-day-orders,.edit-details{border-color:#d4ddcf}
.calendar-order{border-bottom-color:#dee5db}

.admin-calendar-stage{position:relative;overflow:hidden}
.calendar-motion-ghost{position:absolute!important;z-index:2;inset:0 0 auto;pointer-events:none}
.filter-label .animated-filter{width:min(200px,100%)}
.filter-label .animated-filter-toggle{min-height:46px;font-weight:400;border-radius:8px}
.animated-filter-list{border-radius:9px}.animated-filter-toggle{border-radius:8px}
@media(max-width:700px){.filter-label .animated-filter{width:100%}}

.filter-label select.animated-filter-native{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;border:0!important;opacity:0;pointer-events:none}

/* Keep full labels readable and prevent horizontal scrolling in filter menus. */
.filter-label .animated-filter{width:min(265px,100%)}
.animated-filter-list{overflow-x:hidden;overscroll-behavior:contain}
.animated-filter-option{white-space:normal;overflow-wrap:anywhere;line-height:1.35}
.animated-filter-toggle>span:first-child{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
@media(max-width:700px){.filter-label .animated-filter{width:min(100%,320px)}}
.admin-tabs,.admin-day-orders,.edit-details{border-color:#c8d4c3}
/* Private notes occupy the space below the calendar and move between views. */
.quick-notes{margin-top:22px;padding:22px;border:1px solid #bccdb7;border-radius:12px;background:#f5f7f1;box-shadow:0 8px 25px #32442a0d;animation:notes-enter .28s ease both}
.notes-heading{display:flex;justify-content:space-between;align-items:start;gap:12px}.notes-heading h3{font:26px/1.2 Georgia,serif;margin:5px 0 0}.notes-heading .eyebrow{margin:0}.notes-private{font-size:11px;color:#586d53;background:#e6eee1;border:1px solid #cadbc3;border-radius:6px;padding:5px 8px;white-space:nowrap}.notes-intro{font-size:13px;line-height:1.5;color:#63725f;margin:12px 0}.notes-modes,.notes-actions,.notes-date-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.quick-notes button:not(.button),.notes-date-row input{border:1px solid #b8cbb2;background:#fffefa;color:#405a3c;border-radius:7px;padding:9px 12px;font-size:13px;cursor:pointer;transition:background .25s,border-color .25s,transform .25s}.quick-notes button:hover:not(:disabled){background:#e5eee0}.quick-notes button[aria-pressed=true]{background:#dfeada;border-color:#8fa888;font-weight:bold}.quick-notes button:disabled{opacity:.5;cursor:not-allowed}.notes-date-row{margin:12px 0}.notes-date-row label{display:flex;align-items:center;gap:9px;color:#5a6c55;font-size:13px;flex-wrap:wrap}.notes-current{font-weight:bold;font-size:13px;color:#3d5638;margin:15px 0 7px}.quick-notes textarea{display:block;width:100%;min-height:130px;resize:vertical;border:1px solid #bdcdb8;border-radius:8px;background:#fffefa;padding:12px;font:14px/1.5 Arial,sans-serif;color:#252822}.quick-notes textarea:focus{outline:2px solid #8ba582;outline-offset:1px}.notes-actions{margin-top:10px}.notes-actions .button{padding:9px 15px;min-height:0;font-size:13px}.notes-count{margin-left:auto;color:#74816f;font-size:12px}.notes-status{min-height:1.3em;margin:8px 0;font-size:12px;color:#60745b}.notes-dates{border-top:1px solid #cad9c5;padding-top:10px;font-size:13px;color:#4b6245}.notes-dates summary{cursor:pointer;font-weight:bold}.notes-date-list{display:flex;gap:6px;flex-wrap:wrap;max-height:180px;overflow:auto;padding-top:9px}.notes-date-list button{font-size:12px!important}.create-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:22px;align-items:start;margin-top:24px}.create-layout .manual-order-form{margin:0}.create-layout .quick-notes{margin:0}@keyframes notes-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:850px){.create-layout{grid-template-columns:1fr}.quick-notes{padding:16px}}@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .quick-notes{animation:none}html:not(.motion-enabled) .quick-notes button{transition:none}}html.motion-disabled .quick-notes{animation:none}html.motion-disabled .quick-notes button{transition:none}

.quick-notes .notes-list-toggle{padding:3px 0!important;border:0!important;background:transparent!important;font-size:14px!important;font-weight:bold}.notes-list-toggle span{display:inline-block;transition:transform .25s ease}.notes-list-toggle[aria-expanded=true] span{transform:rotate(180deg)}.notes-list-panel{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s ease,opacity .25s ease}.notes-list-panel.is-open{grid-template-rows:1fr;opacity:1}.notes-list-panel .notes-date-list{min-height:0;overflow:auto}.notes-list-panel:not(.is-open) .notes-date-list{overflow:hidden;padding-top:0}@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .notes-list-panel,html:not(.motion-enabled) .notes-list-toggle span{transition:none}}html.motion-disabled .notes-list-panel,html.motion-disabled .notes-list-toggle span{transition:none}
.notes-intro,.notes-date-row label,.notes-current{font-size:14px}.notes-private,.notes-status,.notes-count{font-size:12px}.quick-notes button:not(.button),.notes-date-row input,.notes-actions .button{font-size:14px}.notes-date-list button{font-size:13px!important}
/* Compact notes share the selected date with the calendar. */
.schedule-layout{align-items:stretch}.schedule-calendar{display:flex;flex-direction:column;min-width:0}#notes-bookings-host,#notes-create-host{display:flex;min-width:0}#notes-bookings-host{flex:1}.quick-notes{display:flex;flex-direction:column;flex:1;min-width:0;padding:19px;margin-top:18px}.quick-notes .notes-heading h3{font-size:23px}.notes-modes{margin-top:12px}.notes-current{margin:12px 0 7px}.quick-notes textarea{flex:1;min-height:105px;resize:vertical}.notes-status{margin:6px 0;min-height:1.3em}.notes-feedback{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.notes-feedback .notes-status{flex:1 1 100%}.notes-feedback button{font-size:12px!important;padding:6px 9px!important}.quick-notes.has-error .notes-status{color:#a03c32}.quick-notes button[hidden]{display:none!important}.quick-notes button:not(.button):hover:not(:disabled){background:#e5eee0;color:#30482e}.quick-notes button:not(.button):focus-visible{outline:2px solid #617c59;outline-offset:2px}.create-layout{align-items:stretch}.create-layout .quick-notes{margin:0}
.day-note-icon,.legend-note-icon{fill:none;stroke:#899485;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}.day-note-icon{position:absolute;left:5px;top:5px;width:15px;height:15px;pointer-events:none;animation:note-marker-in .25s ease both}.legend-note-icon{width:17px;height:17px;flex:none}.calendar-legend .legend-note{color:#5e6d5c}@keyframes note-marker-in{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
@media(max-width:900px){.schedule-calendar{display:block}#notes-bookings-host{display:block}.quick-notes textarea{min-height:120px}.day-note-icon{left:3px;top:3px;width:13px;height:13px}}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .day-note-icon{animation:none}}html.motion-disabled .day-note-icon{animation:none}

/* Saving is briefly highlighted, then quietly returns to neutral grey. */
.notes-status{color:#777f76}
.quick-notes.is-saving .notes-status{color:#3f7046;transition:color .25s ease}
.notes-status.is-saved-flash{animation:notes-saved-pulse 2.5s ease-out both}
@keyframes notes-saved-pulse{0%,24%{color:#317441}100%{color:#777f76}}
.quick-notes.has-error .notes-status{color:#a03c32}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .notes-status.is-saved-flash{animation:none}}
html.motion-disabled .notes-status.is-saved-flash{animation:none}
