/* Form and portrait refinements. Load after maly-theme.css. */
@media screen {
  .sheet-actor-picker { min-width: 180px; }
  .sheet-actor-picker > input[type="search"] { width: 100%; min-width: 0; }
  .sheet-actor-options:not([hidden]) {
    position: static;
    width: 100%;
    min-width: 0;
    max-height: 220px;
    overflow-y: auto;
    padding: 4px;
    border: 1px solid var(--line);
    background: var(--paper, white);
  }
  .sheet-actor-options > button { display: block; width: 100%; padding: 8px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
  .sheet-actor-options > button:hover,
  .sheet-actor-options > button:focus-visible { background: var(--wash); }
  /* Keep the actual rehearsal sheet in view while entering its heading. */
  #activity-form .activity-heading-fields {
    display: grid;
    grid-template-columns: minmax(0, 38fr) minmax(145px, 15fr) minmax(0, 47fr);
    gap: 10px;
    align-items: start;
    margin: 14px 0 18px;
  }
  #activity-form .activity-heading-fields > label,
  #activity-form .activity-heading-fields .activity-heading-venue > label {
    margin: 0;
    min-width: 0;
  }
  #activity-form .activity-heading-wide { grid-column: 1; min-width: 0; }
  #activity-form .activity-heading-fields > label:first-child { grid-column: 1; grid-row: 1; }
  #activity-form .activity-heading-label { grid-column: 3; grid-row: 1; }
  #activity-form .activity-heading-fields > label:nth-child(2) { grid-column: 2; grid-row: 1; }
  #activity-form .activity-heading-date { grid-column: 2; grid-row: 2; }
  #activity-form .activity-heading-title { grid-column: 3; grid-row: 2; }
  #activity-form .activity-heading-venue { grid-column: 1; grid-row: 2; }
  #activity-form .activity-edit-block { padding: 0; border: 0; border-radius: 0; margin: 14px 0; }
  #activity-form .activity-block-head h3 { font-size: 14px; }
  #activity-form .activity-block-columns label:not(.check) { margin: 8px 0; font-size: 12px; }
  #activity-form .activity-block-columns textarea { min-height: 64px; }
  #activity-form .activity-chips { display: flex; flex-wrap: wrap; gap: 3px; }
  #activity-form .activity-chips .pill { padding: 3px 6px; font-size: 11px; }
  #activity-form .activity-heading-venue .small { margin: 4px 0 0; font-size: 12px; }
  #activity-form .activity-block-head { margin-bottom: 10px; }
  #activity-form .activity-block-head .actions { margin: 0; }
  #activity-form .activity-sheet-options { margin: 18px 0; }
  #activity-form .activity-sheet-options > summary { cursor: pointer; padding: 8px 0; }
  @media (max-width: 760px) {
    #activity-form .activity-heading-fields { grid-template-columns: minmax(0, 1fr); }
    #activity-form .activity-heading-fields > label,
    #activity-form .activity-heading-fields > label:first-child,
    #activity-form .activity-heading-fields > label:nth-child(2),
    #activity-form .activity-heading-venue { grid-column: 1; grid-row: auto; }
  }
  /* Support both standalone labels and labels wrapping their control. */
  :is(dialog, main .card) form > label:not(.check),
  :is(dialog, main .card) .form-section > label:not(.check) {
    margin: 16px 0 6px;
    color: var(--ink);
    line-height: 1.5;
  }
  :is(dialog, main .card) form label:not(.check):has(> :is(input, select, textarea)) {
    display: grid;
    gap: 7px;
    color: var(--ink);
    line-height: 1.5;
  }
  :is(dialog, main .card) form label:not(.check) > :is(input, select, textarea),
  :is(dialog, main .card) form > :is(input, select, textarea) {
    width: 100%;
    min-width: 0;
  }
  :is(dialog, main .card) form .form-row {
    gap: 16px;
    margin: 16px 0;
    align-items: start;
  }
  :is(dialog, main .card) form .form-row > label {
    margin: 0;
    min-width: 0;
  }
  :is(dialog, main .card) form .form-section {
    margin: 20px 0;
    padding: 16px 0 4px;
    min-width: 0;
  }
  :is(dialog, main .card) form :is(legend, h4) { color: var(--ink); }
  :is(dialog, main .card) form .small { line-height: 1.6; }
  :is(dialog, main .card) form :is(input, select, textarea) + .small {
    margin-top: 7px;
    margin-bottom: 16px;
  }
  :is(dialog, main .card) form .check {
    gap: 10px;
    line-height: 1.55;
    overflow-wrap: anywhere;
  }
  :is(dialog, main .card) form .check input {
    width: 17px;
    height: 17px;
    min-height: 0;
    margin-top: 2px;
    flex: 0 0 17px;
  }

  /* Errors are explicit, but empty required fields are quiet until interaction. */
  :is(dialog, main .card) :is(.error, .form-error:not(:empty)) {
    color: #922f32;
    background: #fff2ef;
    border: 1px solid #d7b1ad;
    border-left: 3px solid #a8625b;
    border-radius: 4px;
    padding: 12px 14px;
    margin: 16px 0;
    line-height: 1.6;
    overflow-wrap: anywhere;
  }
  :is(dialog, main .card) :is(input, select, textarea):is([aria-invalid="true"], :user-invalid) {
    border-color: #a8625b;
    box-shadow: inset 3px 0 #a8625b;
  }
  :is(dialog, main .card) :is(input, select, textarea):disabled {
    background: var(--wash);
    color: var(--muted);
  }
  :is(dialog, main .card) :is(button, a, input, select, textarea, summary):focus-visible {
    outline: 3px solid #947348;
    outline-offset: 3px;
  }

  /* Keep the existing primary action; secondary and destructive choices stay distinct. */
  :is(dialog, main .card) .actions {
    gap: 10px;
    align-items: center;
    margin: 20px 0 0;
  }
  :is(dialog, main .card) form > .actions {
    border-top: 1px solid var(--line);
    padding-top: 16px;
  }
  :is(dialog, main .card) .actions > button,
  dialog form > button {
    min-height: 44px;
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  :is(dialog, main .card) .actions > button.primary,
  dialog form > button.primary { font-weight: 600; }
  dialog .editor-actionbar .actions { margin: 0; }
  .new-call-kind { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:16px 0; }
  .new-call-kind h3 { margin:0; }
  .new-call-filters { display:grid; grid-template-columns:180px minmax(0,1fr); gap:16px; }
  .new-call-filters label { display:grid; gap:6px; min-width:0; font-size:13px; color:var(--muted); }
  .new-call-filters input { width:100%; min-width:0; }
  .new-call-results { max-height: min(48vh,420px); overflow:auto; overscroll-behavior:contain; border:1px solid var(--line); border-radius:6px; }
  .new-call-choice { display:grid; grid-template-columns:105px minmax(0,1fr) 20px; align-items:center; gap:16px; width:100%; border:0; border-bottom:1px solid var(--line); border-radius:0; text-align:left; padding:14px 16px; white-space:normal; background:var(--paper,#fff); }
  .new-call-choice:last-child { border-bottom:0; }
  .new-call-choice:hover, .new-call-choice:focus-visible { background:var(--accent-soft); }
  .new-call-choice:focus-visible { outline-offset:-3px; }
  .new-call-date,.new-call-description { display:grid; gap:4px; min-width:0; }
  .new-call-date>span,.new-call-description>span { color:var(--muted); font-size:12px; }
  .new-call-description strong { font-size:15px; line-height:1.35; overflow-wrap:anywhere; }
  .new-call-description small { font-size:11px; color:var(--accent); }
  .new-call-arrow { color:var(--accent); }
  dialog .activity-block-head .actions { margin: 0; gap: 8px; }
  dialog :is(.notice, .tour-exit-confirm) .actions { margin-top: 12px; }
  dialog :is(.actor-card-head, .profile-card) > :not(.actor-portrait) { min-width: 0; }
  .actor-tile :is(strong, .small),
  .profile-card h2, .person-meta, .actor-role-line,
  .performer-chips button, .role-heading h3 {
    overflow-wrap: anywhere;
    min-width: 0;
  }
  .actor-tile { height: 100%; }
  .actor-tile > .small { margin-top: auto; }
  .actor-portrait {
    border: 1px solid var(--line);
    color: var(--accent);
    background: var(--accent-soft);
  }
  .actor-portrait > span {
    font-family: var(--serif);
    font-weight: 400;
    letter-spacing: .04em;
    line-height: 1;
  }
  .actor-portrait.is-portrait-fallback { align-content: center; gap: 12px; }
  .actor-portrait.is-portrait-fallback::after {
    content: 'Нет фото';
    font-family: var(--sans);
    font-size: 11px;
    line-height: 1.3;
    color: var(--muted);
    letter-spacing: 0;
  }
  :is(.actor-card-head, .profile-card) .actor-portrait.is-portrait-fallback { gap: 8px; }
  .person-summary .person-meta { align-items: flex-start; gap: 8px 12px; }
  .person-summary .person-meta p { margin: 0; flex-basis: 100%; }
  .person-summary .person-meta button { margin-top: 4px; }

  @media (max-width: 600px) {
    .new-call-kind { align-items:flex-start; flex-direction:column; }
    .new-call-kind>button { width:100%; }
    .new-call-filters { grid-template-columns:minmax(0,1fr); gap:12px; }
    .new-call-choice { grid-template-columns:78px minmax(0,1fr) 16px; padding:12px; gap:10px; }
    .new-call-date strong { font-size:12px; }
    .new-call-results { max-height:38vh; }
    :is(dialog, main .card) form .form-row {
      grid-template-columns: minmax(0, 1fr);
      gap: 16px;
    }
    :is(dialog, main .card) .actions { gap: 8px; }
    :is(dialog, main .card) .actions > button { min-height: 44px; }
    dialog .editor-actionbar { gap: 12px; flex-wrap: wrap; }
    dialog .editor-actionbar > .actions { width: 100%; }
    .actor-card-tabs > button { flex: 1 1 auto; white-space: normal; }
    .people-toolbar > label { flex: 1 1 100%; margin: 0; }
    .people-toolbar > label > input { display: block; width: 100%; margin-top: 7px; }
  }
  @media (max-width: 430px) {
    :is(dialog, main .card) form .form-section { margin: 20px 0; }
    .actor-card-head, .profile-card { gap: 12px; align-items: flex-start; }
    .actor-tile { gap: 10px; }
    .actor-tile strong { line-height: 1.5; }
    .actor-tile .actor-portrait { font-size: 30px; }
    :is(.actor-card-head, .profile-card) .actor-portrait { font-size: 24px; }
    .actor-role-line > button { align-self: flex-start; max-width: 100%; white-space: normal; }
    dialog .actions > button.primary { flex: 1 1 180px; }
    dialog .actions > button:not(.primary) { flex: 0 1 auto; }
  }
}
