:root,
:root[data-theme="heritage"] {
  color-scheme: light;
  --ink: #292d29;
  --muted: #737870;
  --paper: #f7f4ec;
  --panel: #fffdf8;
  --panel-soft: #f1eee5;
  --panel-hover: #f0eee6;
  --panel-active: #e5e9da;
  --canvas-frame: #e5e1d8;
  --canvas-paper: #f5f2e9;
  --accent: #6d7c55;
  --accent-dark: #53613f;
  --accent-soft: #e8ecdf;
  --rust: #aa6048;
  --success: #3e8a54;
  --line: #dcd7ca;
  --line-strong: #cfcabc;
  --button: #fffdf8;
  --button-hover: #ffffff;
  --input: #ffffff;
  --disabled: #f0eee8;
  --disabled-ink: #999b94;
  --card: #fffdf8;
  --card-deceased: #f4f4f4;
  --card-deceased-border: #aaa89f;
  --deceased-stripe: rgba(70, 70, 70, 0.07);
  --card-hover: #fffdf8;
  --relation-parent: #65775c;
  --relation-marriage: #6d5f91;
  --avatar-neutral: #e0e5d6;
  --avatar-neutral-ink: #596748;
  --avatar-female: #f4dbe3;
  --avatar-female-ink: #875268;
  --avatar-male: #d9e9f4;
  --avatar-male-ink: #4c7087;
  --danger: #944638;
  --danger-line: #d8aaa1;
  --danger-line-hover: #b96858;
  --danger-bg: #fff8f6;
  --danger-bg-hover: #fcece8;
  --shadow: #3b3b3220;
  --shadow-strong: #32352d26;
  --overlay: #30332b66;
  --header-glass: #fffdf8dd;
  --timeline-glass: #fffdf8f5;
  --project-glow: #e2e7d8;
  --grid: rgba(78, 86, 70, 0.1);
  --debug-arrow: #276a92;
  --debug-block: #2f7da8;
  --debug-block-bg: #2f7da80a;
  --debug-block-ink: #246483;
  --debug-family: #a26722;
  --debug-family-bg: #d78a2508;
  --debug-family-ink: #855419;
  --debug-fallback: #a84c45;
  --debug-fallback-bg: #a84c450c;
  --debug-fallback-ink: #8a3934;
  --debug-before: #b84b43;
  --debug-before-bg: #b84b4308;
  --debug-before-ink: #913a34;
  --debug-after: #368453;
  --debug-after-bg: #eff8f1e8;
  --debug-after-ink: #286a40;
  --debug-after-shadow: #265e3820;
  color: var(--ink);
  background: var(--canvas-frame);
  font-family:
    Inter,
    ui-sans-serif,
    system-ui,
    -apple-system,
    sans-serif;
}

:root[data-theme="solarized-light"] {
  color-scheme: light;
  --ink: #073642;
  --muted: #657b83;
  --paper: #fdf6e3;
  --panel: #eee8d5;
  --panel-soft: #e7dfc9;
  --panel-hover: #e3dcc7;
  --panel-active: #d9e2d2;
  --canvas-frame: #d8d2bf;
  --canvas-paper: #fdf6e3;
  --accent: #268bd2;
  --accent-dark: #006d78;
  --accent-soft: #d5e5df;
  --rust: #cb4b16;
  --success: #2a8c66;
  --line: #c9c2ad;
  --line-strong: #b8b09b;
  --button: #eee8d5;
  --button-hover: #fdf6e3;
  --input: #fffdf3;
  --disabled: #ddd6c2;
  --disabled-ink: #839496;
  --card: #fffdf3;
  --card-deceased: #e7e2d5;
  --card-deceased-border: #839496;
  --deceased-stripe: rgba(88, 110, 117, 0.09);
  --card-hover: #ffffff;
  --relation-parent: #2aa198;
  --relation-marriage: #6c71c4;
  --avatar-neutral: #dbe5d8;
  --avatar-neutral-ink: #586e75;
  --avatar-female: #f0d8df;
  --avatar-female-ink: #b23a70;
  --avatar-male: #d5e5ee;
  --avatar-male-ink: #2176a5;
  --danger: #b12f25;
  --danger-line: #dc8d77;
  --danger-line-hover: #cb4b16;
  --danger-bg: #f8e3d8;
  --danger-bg-hover: #f3d4c4;
  --shadow: #586e7526;
  --shadow-strong: #002b3630;
  --overlay: #002b3670;
  --header-glass: #eee8d5e8;
  --timeline-glass: #eee8d5f2;
  --project-glow: #d5e5df;
  --grid: rgba(88, 110, 117, 0.13);
}

:root[data-theme="solarized-dark"] {
  color-scheme: dark;
  --ink: #eee8d5;
  --muted: #93a1a1;
  --paper: #002b36;
  --panel: #073642;
  --panel-soft: #0b414d;
  --panel-hover: #124b57;
  --panel-active: #174f56;
  --canvas-frame: #001f27;
  --canvas-paper: #002b36;
  --accent: #2aa198;
  --accent-dark: #6ccac2;
  --accent-soft: #12474b;
  --rust: #cb4b16;
  --success: #859900;
  --line: #174954;
  --line-strong: #28616c;
  --button: #073642;
  --button-hover: #124b57;
  --input: #002b36;
  --disabled: #123e48;
  --disabled-ink: #657b83;
  --card: #073642;
  --card-deceased: #12333b;
  --card-deceased-border: #93a1a1;
  --deceased-stripe: rgba(238, 232, 213, 0.12);
  --card-hover: #10434e;
  --relation-parent: #859900;
  --relation-marriage: #6c71c4;
  --avatar-neutral: #174c55;
  --avatar-neutral-ink: #eee8d5;
  --avatar-female: #563b52;
  --avatar-female-ink: #d98ab0;
  --avatar-male: #244d65;
  --avatar-male-ink: #83c5e8;
  --danger: #ff6b5a;
  --danger-line: #a94c3b;
  --danger-line-hover: #dc322f;
  --danger-bg: #4b302f;
  --danger-bg-hover: #5c3632;
  --shadow: #00000055;
  --shadow-strong: #00000080;
  --overlay: #00161dbb;
  --header-glass: #073642ee;
  --timeline-glass: #073642f5;
  --project-glow: #12474b;
  --grid: rgba(147, 161, 161, 0.12);
}

:root[data-theme="gruvbox-dark"] {
  color-scheme: dark;
  --ink: #ebdbb2;
  --muted: #a89984;
  --paper: #282828;
  --panel: #32302f;
  --panel-soft: #3c3836;
  --panel-hover: #504945;
  --panel-active: #454b36;
  --canvas-frame: #1d2021;
  --canvas-paper: #282828;
  --accent: #98971a;
  --accent-dark: #b8bb26;
  --accent-soft: #3f472d;
  --rust: #d65d0e;
  --success: #b8bb26;
  --line: #504945;
  --line-strong: #665c54;
  --button: #3c3836;
  --button-hover: #504945;
  --input: #1d2021;
  --disabled: #3c3836;
  --disabled-ink: #7c6f64;
  --card: #3c3836;
  --card-deceased: #32302f;
  --card-deceased-border: #a89984;
  --deceased-stripe: rgba(235, 219, 178, 0.06);
  --card-hover: #504945;
  --relation-parent: #b8bb26;
  --relation-marriage: #b16286;
  --avatar-neutral: #4b5135;
  --avatar-neutral-ink: #d5c4a1;
  --avatar-female: #5c3d51;
  --avatar-female-ink: #d3869b;
  --avatar-male: #374c52;
  --avatar-male-ink: #83a598;
  --danger: #fb4934;
  --danger-line: #9d493e;
  --danger-line-hover: #cc241d;
  --danger-bg: #4a302d;
  --danger-bg-hover: #5a332e;
  --shadow: #00000045;
  --shadow-strong: #00000070;
  --overlay: #00000099;
  --header-glass: #32302fee;
  --timeline-glass: #32302ff2;
  --project-glow: #3f472d;
  --grid: rgba(235, 219, 178, 0.08);
}

:root[data-theme="gruvbox-light"] {
  color-scheme: light;
  --ink: #3c3836;
  --muted: #665c54;
  --paper: #fbf1c7;
  --panel: #f2e5bc;
  --panel-soft: #ebdbb2;
  --panel-hover: #e4d5ad;
  --panel-active: #dce0aa;
  --canvas-frame: #d5c4a1;
  --canvas-paper: #fbf1c7;
  --accent: #79740e;
  --accent-dark: #5f5b08;
  --accent-soft: #e2e1b4;
  --rust: #af3a03;
  --success: #79740e;
  --line: #d5c4a1;
  --line-strong: #bdae93;
  --button: #f2e5bc;
  --button-hover: #fff8d5;
  --input: #fff9dc;
  --disabled: #ebdbb2;
  --disabled-ink: #928374;
  --card: #fff9dc;
  --card-deceased: #e4d9bd;
  --card-deceased-border: #7c6f64;
  --deceased-stripe: rgba(60, 56, 54, 0.11);
  --card-hover: #fffdf0;
  --relation-parent: #79740e;
  --relation-marriage: #8f3f71;
  --avatar-neutral: #e1dfb8;
  --avatar-neutral-ink: #504945;
  --avatar-female: #edd4dc;
  --avatar-female-ink: #8f3f71;
  --avatar-male: #d3e1df;
  --avatar-male-ink: #427b58;
  --danger: #9d0006;
  --danger-line: #cc8d82;
  --danger-line-hover: #9d0006;
  --danger-bg: #f4ddd1;
  --danger-bg-hover: #efd0c3;
  --shadow: #665c5428;
  --shadow-strong: #3c383638;
  --overlay: #3c383675;
  --header-glass: #f2e5bcee;
  --timeline-glass: #f2e5bcf5;
  --project-glow: #e2e1b4;
  --grid: rgba(102, 92, 84, 0.13);
}

:root[data-theme="nord-dark"] {
  color-scheme: dark;
  --ink: #eceff4;
  --muted: #d8dee9;
  --paper: #2e3440;
  --panel: #3b4252;
  --panel-soft: #434c5e;
  --panel-hover: #4c566a;
  --panel-active: #3d5661;
  --canvas-frame: #242933;
  --canvas-paper: #2e3440;
  --accent: #5e81ac;
  --accent-dark: #88c0d0;
  --accent-soft: #405563;
  --rust: #d08770;
  --success: #a3be8c;
  --line: #4c566a;
  --line-strong: #607087;
  --button: #434c5e;
  --button-hover: #4c566a;
  --input: #2e3440;
  --disabled: #434c5e;
  --disabled-ink: #7f8ba0;
  --card: #3b4252;
  --card-deceased: #353b47;
  --card-deceased-border: #aeb8c8;
  --deceased-stripe: rgba(216, 222, 233, 0.06);
  --card-hover: #434c5e;
  --relation-parent: #a3be8c;
  --relation-marriage: #b48ead;
  --avatar-neutral: #465366;
  --avatar-neutral-ink: #e5e9f0;
  --avatar-female: #59465a;
  --avatar-female-ink: #d8a8c8;
  --avatar-male: #3c5968;
  --avatar-male-ink: #88c0d0;
  --danger: #bf616a;
  --danger-line: #8d5660;
  --danger-line-hover: #bf616a;
  --danger-bg: #493840;
  --danger-bg-hover: #563b43;
  --shadow: #00000045;
  --shadow-strong: #00000070;
  --overlay: #1b1f2799;
  --header-glass: #3b4252ee;
  --timeline-glass: #3b4252f2;
  --project-glow: #405563;
  --grid: rgba(216, 222, 233, 0.08);
}

:root[data-theme="nord-light"] {
  color-scheme: light;
  --ink: #2e3440;
  --muted: #5e6a7d;
  --paper: #eceff4;
  --panel: #ffffff;
  --panel-soft: #e5e9f0;
  --panel-hover: #dfe5ed;
  --panel-active: #d8e6e8;
  --canvas-frame: #d8dee9;
  --canvas-paper: #eceff4;
  --accent: #5e81ac;
  --accent-dark: #3f638e;
  --accent-soft: #d9e5ee;
  --rust: #b65e47;
  --success: #4f7d52;
  --line: #d0d6df;
  --line-strong: #b7c0ce;
  --button: #ffffff;
  --button-hover: #f7f9fc;
  --input: #ffffff;
  --disabled: #e5e9f0;
  --disabled-ink: #7b8798;
  --card: #ffffff;
  --card-deceased: #e1e6ed;
  --card-deceased-border: #66758a;
  --deceased-stripe: rgba(46, 52, 64, 0.11);
  --card-hover: #ffffff;
  --relation-parent: #4f7d52;
  --relation-marriage: #8d5f89;
  --avatar-neutral: #d8e0ea;
  --avatar-neutral-ink: #3b526d;
  --avatar-female: #eddce9;
  --avatar-female-ink: #805778;
  --avatar-male: #d8eaf1;
  --avatar-male-ink: #416f86;
  --danger: #9f3f4a;
  --danger-line: #cb8d95;
  --danger-line-hover: #9f3f4a;
  --danger-bg: #f8e8ea;
  --danger-bg-hover: #f1d8dc;
  --shadow: #3b425226;
  --shadow-strong: #2e344038;
  --overlay: #2e344075;
  --header-glass: #ffffffee;
  --timeline-glass: #fffffff5;
  --project-glow: #d9e5ee;
  --grid: rgba(76, 86, 106, 0.13);
}

* {
  box-sizing: border-box;
}

body {
  min-width: 900px;
  margin: 0;
  background: var(--paper);
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  padding: 9px 14px;
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  background: var(--button);
  box-shadow: 0 1px 1px var(--shadow);
  color: inherit;
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;

  &:hover {
    border-color: var(--accent);
    background: var(--button-hover);
  }

  &.primary {
    border-color: var(--accent);
    background: var(--accent);
    color: var(--button-hover);

    &:hover {
      background: var(--accent-dark);
    }
  }

  &.ghost {
    background: transparent;
  }
}

main.editor {
  display: grid;
  grid-template-rows: 46px minmax(0, 1fr);
  height: 100vh;

  > header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 328px 0 8px;
    border-bottom: 1px solid var(--line);
    background: var(--panel);

    > .menu {
      position: relative;
      flex: none;

      > .trigger {
        display: grid;
        place-content: center;
        gap: 3px;
        width: 30px;
        height: 30px;
        padding: 0;

        span {
          width: 14px;
          height: 2px;
          border-radius: 1px;
          background: var(--accent-dark);
        }
      }

      > nav {
        position: absolute;
        top: 35px;
        left: 0;
        z-index: 30;
        display: grid;
        gap: 4px;
        width: 170px;
        padding: 7px;
        border: 1px solid var(--line);
        border-radius: 7px;
        background: var(--panel);
        box-shadow: 0 10px 28px var(--shadow-strong);

        button {
          width: 100%;
          padding: 7px 9px;
          border-color: transparent;
          background: transparent;
          box-shadow: none;
          text-align: left;
          font-size: 10px;

          &:hover {
            background: var(--panel-hover);
          }
        }

        h3 {
          display: flex;
          align-items: center;
          gap: 8px;
          margin: 3px 2px 0;
          color: var(--muted);
          font: 700 8px sans-serif;
          text-transform: uppercase;
          letter-spacing: 0.12em;

          &::before,
          &::after {
            flex: 1;
            height: 1px;
            background: var(--line);
            content: "";
          }
        }

        input[type="file"] {
          display: none;
        }
      }
    }

    > input {
      order: 1;
      width: min(36vw, 420px);
      padding: 4px 2px;
      border: 0;
      outline: 0;
      background: transparent;
      color: var(--ink);
      font:
        600 16px Georgia,
        serif;
    }

    > .sheet-tabs {
      position: absolute;
      left: calc((100% - 310px) / 2);
      display: flex;
      align-items: center;
      gap: 3px;
      max-width: min(44vw, 620px);
      padding: 3px;
      overflow-x: auto;
      transform: translateX(-50%);
      scrollbar-width: none;

      &::-webkit-scrollbar {
        display: none;
      }

      button {
        flex: none;
        min-width: 54px;
        padding: 5px 9px;
        border-color: transparent;
        background: transparent;
        box-shadow: none;
        color: var(--muted);
        font-size: 9px;

        &.active {
          border-color: var(--accent);
          background: var(--accent-soft);
          color: var(--accent-dark);
        }

      }
    }

    > .add {
      order: 2;
      margin-left: auto;
      padding: 6px 10px;
      font-size: 10px;
    }

    > .arrange {
      order: 3;
      padding: 6px 10px;
      font-size: 10px;
    }
  }

  > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 310px;
    min-height: 0;

    > section {
      position: relative;
      display: flex;
      flex-direction: column;
      min-width: 0;
      min-height: 0;

      > .canvas-zoom {
        position: absolute;
        top: 12px;
        right: 14px;
        z-index: 15;
        display: grid;
        grid-template-columns: auto 112px 34px;
        align-items: center;
        gap: 7px;
        padding: 4px 2px;
        color: var(--muted);
        font-size: 8px;
        font-weight: 750;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        filter: drop-shadow(0 1px 1px var(--panel));

        input {
          width: 112px;
          margin: 0;
          accent-color: var(--accent);
          cursor: pointer;
        }

        output {
          color: var(--ink);
          font-size: 9px;
          text-align: right;
        }
      }

      > .canvas-viewport {
        position: relative;
        flex: 1;
        min-height: 0;
        overflow: auto;
        overscroll-behavior: contain;
        scrollbar-width: none;
        background: var(--canvas-frame);

        &::-webkit-scrollbar {
          display: none;
        }

        > div {
          position: relative;
          min-width: 100%;
          min-height: 100%;
          background-color: var(--canvas-paper);
          background-image: radial-gradient(
            circle,
            var(--grid) 1.25px,
            transparent 1.4px
          );
          background-size: 24px 24px;
          background-position: 12px 12px;

          > svg,
          > div {
            position: absolute;
            inset: 0;
          }

          > svg {
            z-index: 0;
            overflow: visible;
            pointer-events: none;

            marker path {
              fill: var(--relation-parent);
              stroke: none;
            }

            .relation {
              fill: none;
              stroke-width: 2;

              &.parent {
                stroke: var(--relation-parent);
              }

              &.co-parent {
                stroke: var(--relation-parent);
                stroke-dasharray: 7 6;
              }

              &.marriage {
                stroke: var(--relation-marriage);
                stroke-width: 3;
              }

              &.former-marriage {
                stroke: var(--relation-marriage);
                stroke-width: 3;
                stroke-dasharray: 7 6;
              }
            }
          }

          > .layout-debug-arrows {
            z-index: 3;

            line {
              fill: none;
              stroke: var(--debug-arrow);
              stroke-width: 3;
              stroke-linecap: round;
              stroke-dasharray: 7 5;
            }

            marker path {
              fill: var(--debug-arrow);
            }
          }

          > .selection-marquee {
            z-index: 12;
            border: 1px solid var(--accent);
            border-radius: 3px;
            background: color-mix(in srgb, var(--accent) 16%, transparent);
            box-shadow: 0 0 0 1px color-mix(in srgb, var(--panel) 65%, transparent) inset;
            pointer-events: none;
          }

          > div {
            z-index: 1;
            right: auto;
            bottom: auto;
            width: 0;
            height: 0;
            pointer-events: none;

            &.layout-debug {
              z-index: 2;

              > div {
                position: absolute;
                border: 1px dashed var(--debug-block);
                background: var(--debug-block-bg);
                color: var(--debug-block-ink);

                &.family {
                  border-color: var(--debug-family);
                  background: var(--debug-family-bg);
                  color: var(--debug-family-ink);
                }

                &.fallback {
                  border-color: var(--debug-fallback);
                  background: var(--debug-fallback-bg);
                  color: var(--debug-fallback-ink);
                }

                &.move-before {
                  border-color: var(--debug-before);
                  background: var(--debug-before-bg);
                  color: var(--debug-before-ink);
                }

                &.move-after {
                  border: 2px solid var(--debug-after);
                  background: var(--debug-after-bg);
                  color: var(--debug-after-ink);
                  box-shadow: 0 3px 10px var(--debug-after-shadow);
                }

                > span {
                  position: absolute;
                  top: -16px;
                  left: 2px;
                  padding: 1px 4px;
                  border-radius: 3px;
                  background: var(--header-glass);
                  font:
                    600 9px/1.3 system-ui,
                    sans-serif;
                  white-space: nowrap;
                }
              }
            }

            > .person {
              position: absolute;
              top: 0;
              left: 0;
              display: flex;
              align-items: flex-start;
              gap: 12px;
              width: 288px;
              height: 72px;
              min-height: 72px;
              padding: 9px 12px;
              overflow: hidden;
              transform: translate(var(--node-x), var(--node-y));
              border: 1px solid var(--line-strong);
              border-radius: 8px;
              background: var(--card);
              box-shadow: 0 3px 10px var(--shadow);
              text-align: left;
              pointer-events: auto;
              cursor: grab;
              user-select: none;
              touch-action: none;
              transition:
                width 120ms ease,
                border-color 180ms ease,
                box-shadow 180ms ease;

              .detail-sheet-marker {
                position: absolute;
                top: 5px;
                right: 7px;
                display: inline-flex;
                align-items: center;
                gap: 1px;
                color: var(--success);
                font-size: 10px;
                font-weight: 850;
                line-height: 1;
              }

              &.deceased {
                border-color: var(--card-deceased-border);
                background-color: var(--card-deceased);
                background-image: repeating-linear-gradient(
                  135deg,
                  transparent 0,
                  transparent 7px,
                  var(--deceased-stripe) 7px,
                  var(--deceased-stripe) 9px
                );
              }

              &:hover {
                z-index: 10;
                border-color: var(--accent);
                background-color: var(--card-hover);
                box-shadow: 0 5px 15px var(--shadow-strong);
              }

              &.deceased:hover {
                background-color: var(--card-deceased);
              }

              &.selected {
                border-color: var(--accent);
                outline: 3px solid color-mix(in srgb, var(--accent) 36%, transparent);
              }

              &:active {
                cursor: grabbing;
              }

              .avatar {
                display: grid;
                flex: none;
                place-items: center;
                width: 40px;
                height: 40px;
                border-radius: 50%;
                background: var(--avatar-neutral);
                color: var(--avatar-neutral-ink);
                font:
                  600 18px Georgia,
                  serif;
              }

              &.female .avatar {
                background: var(--avatar-female);
                color: var(--avatar-female-ink);
              }

              &.male .avatar {
                background: var(--avatar-male);
                color: var(--avatar-male-ink);
              }

              .copy {
                display: flex;
                flex: 1;
                flex-direction: column;
                gap: 4px;
                min-width: 0;

                strong {
                  overflow: hidden;
                  font:
                    600 15px Georgia,
                    serif;
                  text-overflow: ellipsis;
                  white-space: nowrap;
                }

                .secondary {
                  overflow: hidden;
                  color: var(--muted);
                  font:
                    500 11px Georgia,
                    serif;
                  text-overflow: ellipsis;
                  white-space: nowrap;
                }

                small {
                  color: var(--muted);
                  font-size: 10px;
                  line-height: 1.35;
                }

                .meta {
                  display: flex;
                  align-items: baseline;
                  justify-content: space-between;
                  gap: 10px;
                  min-width: 0;

                  .place {
                    overflow: hidden;
                    min-width: 0;
                    text-align: right;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                  }

                  .dates {
                    flex: none;
                    white-space: nowrap;
                  }
                }
              }
            }
          }
        }
      }

      > .layout-debug-timeline {
        position: relative;
        flex: none;
        z-index: 20;
        display: grid;
        grid-template-columns: 90px minmax(0, 1fr) auto;
        align-items: center;
        gap: 18px;
        min-height: 88px;
        height: 88px;
        padding: 10px 16px;
        overflow: visible;
        border-top: 1px solid var(--line-strong);
        background: var(--timeline-glass);
        box-shadow: 0 -8px 24px var(--shadow);

        .layout-debug-title {
          display: grid;
          gap: 3px;

          strong {
            font:
              700 12px/1.2 system-ui,
              sans-serif;
          }

          span {
            overflow: hidden;
            color: var(--muted);
            font-size: 10px;
            text-overflow: ellipsis;
            white-space: nowrap;
          }
        }

        .layout-debug-steps {
          display: flex;
          gap: 5px;
          min-width: 0;
          padding: 4px 0 8px;
          overflow-x: auto;
          overflow-y: hidden;
          scrollbar-color: var(--muted) transparent;
          scrollbar-width: thin;

          &::-webkit-scrollbar {
            height: 7px;
          }

          &::-webkit-scrollbar-thumb {
            border-radius: 999px;
            background: var(--muted);
          }

          &::-webkit-scrollbar-track {
            background: transparent;
          }

          button {
            flex: 0 0 30px;
            min-width: 30px;
            height: 30px;
            padding: 0;
            border-radius: 999px;
            color: var(--muted);
            font-size: 10px;

            &.active {
              border-color: var(--accent);
              background: var(--accent);
              color: var(--button-hover);
              box-shadow: 0 2px 7px var(--shadow-strong);
            }
          }
        }

        .layout-debug-legend {
          display: flex;
          gap: 10px;
          color: var(--muted);
          font-size: 9px;

          span::before {
            display: inline-block;
            width: 8px;
            height: 8px;
            margin-right: 4px;
            border-radius: 2px;
            content: "";
          }

          .previous::before {
            border: 1px dashed var(--debug-before);
          }

          .current::before {
            background: var(--debug-after);
          }

          .movement::before {
            width: 12px;
            height: 2px;
            background: var(--debug-arrow);
            vertical-align: middle;
          }
        }
      }
    }
  }
}

.report-overlay {
  position: fixed;
  z-index: 100;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 24px;
  background: var(--overlay);
}

.completeness-report {
  display: grid;
  grid-template-rows: auto auto auto minmax(120px, 1fr) auto;
  width: min(900px, 100%);
  max-height: min(720px, calc(100vh - 48px));
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: 12px;
  background: var(--panel);
  box-shadow: 0 20px 60px var(--shadow-strong);

  > header, > footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 22px; }
  h2 { margin: 0; font: 700 20px Georgia, serif; }
  header p { margin: 5px 0 0; color: var(--muted); font-size: 13px; }
  .close {
    display: grid;
    place-content: center;
    width: 30px;
    height: 30px;
    min-width: 30px;
    padding: 0;
    font-size: 24px;
    line-height: 1;
  }
  .report-options, .report-summary { padding: 10px 22px; border-top: 1px solid var(--line); }
  .report-options { display: flex; align-items: center; gap: 18px; }
  .report-option { display: flex; gap: 9px; align-items: center; font-size: 13px; }
  .report-scope { display: grid; grid-template-columns: repeat(2, 1fr); width: 260px; margin-left: auto; gap: 8px; }
  .report-scope button { padding: 6px 10px; border-color: var(--line-strong); background: var(--button); color: var(--muted); font-size: 11px; }
  .report-scope button.active { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-dark); }
  .report-option input[type="checkbox"] {
    display: grid;
    place-content: center;
    width: 18px;
    height: 18px;
    margin: 0;
    appearance: none;
    border: 1px solid var(--line-strong);
    border-radius: 4px;
    background: var(--input);

    &::after {
      width: 8px;
      height: 4px;
      border-bottom: 2px solid var(--button-hover);
      border-left: 2px solid var(--button-hover);
      content: "";
      opacity: 0;
      transform: rotate(-45deg) translateY(-1px);
    }

    &:checked { border-color: var(--accent); background: var(--accent); }
    &:checked::after { opacity: 1; }
  }
  .report-summary { display: flex; justify-content: space-between; color: var(--muted); font-size: 12px; }
  .report-summary strong { color: var(--ink); }
  .report-table-wrap { overflow: auto; border-top: 1px solid var(--line); }
  table { width: 100%; border-collapse: collapse; font-size: 13px; }
  th, td { padding: 11px 22px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
  th { position: sticky; top: 0; background: var(--panel-soft); color: var(--muted); font-size: 10px; letter-spacing: .08em; }
  th:last-child, td:last-child { width: 58px; text-align: center; }
  tr.ignored { color: var(--muted); text-decoration: line-through; }
  .report-empty { padding: 22px; color: var(--muted); text-align: center; }
  > footer { justify-content: flex-end; border-top: 1px solid var(--line); }
}

aside {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 20;
  width: 310px;
  min-width: 270px;
  max-width: 50vw;
  height: 100vh;
  overflow: auto;
  resize: horizontal;
  direction: rtl;
  border-left: 1px solid var(--line);
  background: var(--panel);

  > * {
    direction: ltr;
  }

  > div[role="tablist"] {
    position: sticky;
    top: 0;
    z-index: 3;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    height: 46px;
    padding: 0 8px;
    border-bottom: 1px solid var(--line);
    background: var(--panel);

    button {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 7px;
      padding: 10px 6px;
      border: 0;
      border-bottom: 2px solid transparent;
      border-radius: 0;
      background: transparent;
      box-shadow: none;
      color: var(--muted);
      font-size: 10px;
      font-weight: 750;

      &:hover {
        background: transparent;
      }

      &.active {
        border-bottom-color: var(--accent);
        color: var(--accent-dark);
      }
    }

    small {
      min-width: 18px;
      padding: 2px 5px;
      border-radius: 9px;
      background: var(--panel-soft);
      font-size: 9px;
    }
  }

  section {
    > header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      height: 42px;
      padding: 0 18px;
      color: var(--muted);
      font-size: 10px;
      font-weight: 800;
      text-transform: uppercase;
      letter-spacing: 0.12em;
    }

    > nav {
      display: flex;
      flex-direction: column;
      gap: 3px;
      padding: 8px 9px 12px;

      > .person {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 8px;
        border: 0;
        border-radius: 6px;
        background: transparent;
        box-shadow: none;
        text-align: left;

        &:hover {
          background: var(--panel-soft);
        }

        &.active {
          background: var(--panel-active);
        }

        > span:last-child {
          display: flex;
          flex-direction: column;
          gap: 2px;
          min-width: 0;
        }

        strong {
          font:
            600 12px Georgia,
            serif;
        }

        .secondary {
          overflow: hidden;
          color: var(--muted);
          font:
            500 9px Georgia,
            serif;
          text-overflow: ellipsis;
          white-space: nowrap;
        }

        small {
          overflow: hidden;
          color: var(--muted);
          font-size: 9px;
          text-overflow: ellipsis;
          white-space: nowrap;
        }

        .avatar {
          display: grid;
          flex: none;
          place-items: center;
          width: 28px;
          height: 28px;
          border-radius: 50%;
          background: var(--avatar-neutral);
          color: var(--avatar-neutral-ink);
          font:
            600 12px Georgia,
            serif;
        }

        &.female .avatar {
          background: var(--avatar-female);
          color: var(--avatar-female-ink);
        }

        &.male .avatar {
          background: var(--avatar-male);
          color: var(--avatar-male-ink);
        }
      }
    }
  }

  .themes {
    padding: 18px;

    > header {
      height: auto;
      padding: 0 0 14px;
    }

    .theme-list {
      display: grid;
      gap: 8px;
    }

    .theme-option {
      --swatch-1: #f7f4ec;
      --swatch-2: #fffdf8;
      --swatch-3: #6d7c55;
      --swatch-4: #aa6048;
      display: grid;
      grid-template-columns: 68px minmax(0, 1fr);
      align-items: center;
      gap: 12px;
      width: 100%;
      padding: 10px;
      text-align: left;

      &[data-theme-preview="solarized-light"] {
        --swatch-1: #fdf6e3;
        --swatch-2: #eee8d5;
        --swatch-3: #268bd2;
        --swatch-4: #2aa198;
      }

      &[data-theme-preview="solarized-dark"] {
        --swatch-1: #002b36;
        --swatch-2: #073642;
        --swatch-3: #2aa198;
        --swatch-4: #cb4b16;
      }

      &[data-theme-preview="gruvbox-light"] {
        --swatch-1: #fbf1c7;
        --swatch-2: #fff9dc;
        --swatch-3: #79740e;
        --swatch-4: #af3a03;
      }

      &[data-theme-preview="gruvbox-dark"] {
        --swatch-1: #282828;
        --swatch-2: #3c3836;
        --swatch-3: #b8bb26;
        --swatch-4: #d65d0e;
      }

      &[data-theme-preview="nord-light"] {
        --swatch-1: #eceff4;
        --swatch-2: #ffffff;
        --swatch-3: #5e81ac;
        --swatch-4: #8d5f89;
      }

      &[data-theme-preview="nord-dark"] {
        --swatch-1: #2e3440;
        --swatch-2: #3b4252;
        --swatch-3: #88c0d0;
        --swatch-4: #b48ead;
      }

      &.active {
        border-color: var(--accent);
        outline: 2px solid color-mix(in srgb, var(--accent) 24%, transparent);
      }

      > span:last-child {
        display: grid;
        gap: 3px;
        min-width: 0;
      }

      strong {
        font-size: 11px;
      }

      small {
        color: var(--muted);
        font-size: 9px;
        line-height: 1.35;
      }
    }

    .swatches {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      height: 34px;
      overflow: hidden;
      border: 1px solid var(--line);
      border-radius: 5px;

      i:nth-child(1) { background: var(--swatch-1); }
      i:nth-child(2) { background: var(--swatch-2); }
      i:nth-child(3) { background: var(--swatch-3); }
      i:nth-child(4) { background: var(--swatch-4); }
    }
  }

  .export {
    padding: 18px;

    &.rendering,
    &.rendering * {
      cursor: progress !important;
    }

    > header {
      height: auto;
      padding: 0 0 14px;
    }

    .options {
      display: grid;
      gap: 10px;
    }

    label.option {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      min-height: 38px;
      padding: 8px 10px;
      border: 1px solid var(--line-strong);
      border-radius: 5px;
      background: var(--input);
      color: var(--ink);
      font-size: 10px;
      font-weight: 650;
      cursor: pointer;

      input[type="checkbox"] {
        flex: none;
        width: 15px;
        height: 15px;
        padding: 0;
        accent-color: var(--accent);
        cursor: pointer;
      }
    }

    .format-options {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
      margin: 14px 0 0;
      padding: 0;
      border: 0;

      legend {
        margin-bottom: 7px;
        padding: 0;
        color: var(--muted);
        font-size: 9px;
        font-weight: 750;
        text-transform: uppercase;
        letter-spacing: 0.08em;
      }

      label {
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 36px;
        border: 1px solid var(--line-strong);
        border-radius: 5px;
        background: var(--input);
        color: var(--muted);
        font-size: 10px;
        font-weight: 750;
        cursor: pointer;

        &:has(input:checked) {
          border-color: var(--accent);
          background: var(--accent-soft);
          color: var(--ink);
        }

        input {
          position: absolute;
          width: 1px;
          height: 1px;
          opacity: 0;
        }
      }
    }

    .dpi-option {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      min-height: 38px;
      margin-top: 10px;
      padding: 8px 10px;
      border: 1px solid var(--line-strong);
      border-radius: 5px;
      background: var(--input);
      color: var(--ink);
      font-size: 10px;
      font-weight: 650;

      .dpi-option-copy {
        display: grid;
        gap: 2px;

        small {
          color: var(--muted);
          font-size: 9px;
          font-weight: 500;
        }
      }

      input {
        width: 72px;
        padding: 6px 7px;
        border: 1px solid var(--line-strong);
        border-radius: 4px;
        background: var(--paper);
        color: var(--ink);
        text-align: right;
      }
    }

    .export-error {
      margin: 12px 0 0;
      padding: 9px 10px;
      border: 1px solid color-mix(in srgb, #b34d42 55%, var(--line));
      border-radius: 5px;
      background: color-mix(in srgb, #b34d42 10%, var(--input));
      color: var(--ink);
      font-size: 10px;
      line-height: 1.45;
    }

    .export-resolution {
      margin: 8px 0 0;
      color: var(--muted);
      font-size: 10px;
      line-height: 1.4;
    }

    .export-progress-overlay {
      position: fixed;
      inset: 0;
      z-index: 1000;
      display: grid;
      place-items: center;
      background: color-mix(in srgb, var(--canvas-frame) 28%, transparent);
      cursor: progress;
    }

    .export-progress-card {
      display: grid;
      grid-template-columns: minmax(180px, 280px) auto;
      gap: 9px 12px;
      align-items: center;
      min-width: 300px;
      padding: 16px;
      border: 1px solid var(--line-strong);
      border-radius: 7px;
      background: var(--panel);
      box-shadow: 0 12px 32px var(--shadow-strong);

      strong {
        grid-column: 1 / -1;
        color: var(--ink);
        font-size: 11px;
      }

      progress {
        width: 100%;
        height: 9px;
        accent-color: var(--accent);
      }

      span {
        min-width: 34px;
        color: var(--muted);
        font-size: 10px;
        font-variant-numeric: tabular-nums;
        text-align: right;
      }
    }

    .actions {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
      margin-top: 18px;

      .primary {
        grid-column: 1 / -1;
        color: var(--paper);
      }
    }

    p {
      color: var(--muted);
      font-size: 10px;
      line-height: 1.5;
    }
  }

  .form {
    display: flex;
    flex-direction: column;
    gap: 13px;
    padding: 4px 18px 28px;

    label {
      display: flex;
      flex-direction: column;
      gap: 6px;
      color: var(--muted);
      font-size: 9px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: 0.08em;
    }

    input,
    textarea,
    select {
      width: 100%;
      padding: 8px;
      border: 1px solid var(--line-strong);
      border-radius: 5px;
      outline: none;
      background: var(--input);
      color: var(--ink);
      font-size: 11px;
      text-transform: none;
      letter-spacing: normal;

      &:focus {
        border-color: var(--accent);
        box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 22%, transparent);
      }
    }

    > .pair {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
    }

    > .date-options {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;

      .toggle {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 7px;
        min-height: 34px;
        padding: 7px 8px;
        border: 1px solid var(--line-strong);
        border-radius: 5px;
        background: var(--input);
        color: var(--ink);
        font-size: 9px;
        line-height: 1.25;
        text-transform: none;
        letter-spacing: normal;
        cursor: pointer;

        input {
          flex: none;
          width: 15px;
          height: 15px;
          padding: 0;
          accent-color: var(--accent);
        }
      }
    }

    > .sheet-assignment {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 72px;
      align-items: stretch;
      gap: 8px;

      .toggle {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 7px;
        min-height: 34px;
        padding: 7px 8px;
        border: 1px solid var(--line-strong);
        border-radius: 5px;
        background: var(--input);
        color: var(--ink);
        font-size: 9px;
        line-height: 1.25;
        text-transform: none;
        letter-spacing: normal;
        cursor: pointer;

        input {
          flex: none;
          width: 15px;
          height: 15px;
          padding: 0;
          accent-color: var(--accent);
        }
      }

      > .sheet-number {
        height: 100%;
        min-height: 38px;
        text-align: center;
        font-weight: 750;

        &:disabled {
          background: var(--disabled);
          color: var(--disabled-ink);
        }
      }
    }

    > .sheet-note {
      margin: -4px 0 0;
      color: var(--muted);
      font-size: 9px;
      line-height: 1.45;
    }

    > .toggle {
      display: flex;
      flex-direction: row;
      align-items: center;
      gap: 7px;
      min-height: 34px;
      padding: 7px 8px;
      border: 1px solid var(--line-strong);
      border-radius: 5px;
      background: var(--input);
      color: var(--ink);
      font-size: 9px;
      line-height: 1.25;
      text-transform: none;
      letter-spacing: normal;
      cursor: pointer;

      input {
        flex: none;
        width: 15px;
        height: 15px;
        padding: 0;
        accent-color: var(--accent);
      }
    }

    > h3 {
      display: flex;
      align-items: center;
      gap: 10px;
      margin: 3px 0 0;
      color: var(--muted);
      font: 700 9px sans-serif;
      text-transform: uppercase;
      letter-spacing: 0.12em;

      &::before,
      &::after {
        flex: 1;
        height: 1px;
        background: var(--line);
        content: "";
      }
    }

    > .danger {
      width: 100%;
      margin-top: 8px;
      border-color: var(--danger-line);
      background: var(--danger-bg);
      color: var(--danger);

      &:hover {
        border-color: var(--danger-line-hover);
        background: var(--danger-bg-hover);
      }
    }
  }

  .current {
    display: flex;
    flex-direction: column;
    gap: 5px;

    > p {
      margin: 0;
      color: var(--muted);
      font-size: 10px;
      line-height: 1.5;
    }
  }

  .quick {
    display: grid;
    gap: 8px;

    button {
      width: 100%;
      padding: 7px 10px;
    }

    &.new {
      grid-template-columns: repeat(2, minmax(0, 1fr));

      button {
        min-height: 38px;
        min-width: 0;
        padding-right: 4px;
        padding-left: 4px;
        font-size: 9px;
        line-height: 1.25;
        white-space: normal;
      }
    }
  }

  .quick-group {
    border-bottom: 1px solid var(--line);

    summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 32px;
      color: var(--muted);
      font-size: 10px;
      font-weight: 800;
      text-transform: uppercase;
      letter-spacing: 0.1em;
      cursor: pointer;
      list-style: none;

      &::-webkit-details-marker {
        display: none;
      }

      &::after {
        content: "›";
        font-size: 17px;
        font-weight: 500;
        transform: rotate(0deg);
        transition: transform 120ms ease;
      }
    }

    &[open] {
      padding-bottom: 8px;

      summary::after {
        transform: rotate(90deg);
      }
    }
  }

  .co-parents {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;

    &:empty {
      display: none;
    }

    button {
      min-height: 38px;
      min-width: 0;
      padding: 7px 4px;
      font-size: 9px;
      line-height: 1.25;
      white-space: normal;
    }
  }

  .align {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;

    button {
      width: 100%;
      padding: 7px 8px;
      font-size: 9px;
    }

    > label {
      grid-column: 1 / -1;
    }
  }

  .relations {
    > .form {
      padding-bottom: 18px;
      border-bottom: 1px solid var(--line);

      > .primary {
        width: 100%;
      }
    }

    > .list {
      display: flex;
      flex-direction: column;
      gap: 5px;
      padding: 9px;
    }
  }

  .relation {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding: 9px 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    background: var(--panel-soft);

    .icon {
      display: grid;
      place-items: center;
      width: 28px;
      height: 28px;
      border-radius: 50%;
      background: var(--accent-soft);
      color: var(--accent-dark);
      font-size: 15px;
    }

    > span:nth-child(2) {
      display: flex;
      flex-direction: column;
      gap: 3px;
      min-width: 0;
    }

    strong {
      font:
        600 11px Georgia,
        serif;
    }

    small {
      overflow: hidden;
      color: var(--muted);
      font-size: 9px;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    > .actions {
      display: flex;
      align-items: center;
      gap: 2px;

      button {
        padding: 2px 4px;
        border: 0;
        background: transparent;
        box-shadow: none;
        color: var(--rust);
        font-size: 10px;

        &:last-child {
          font-size: 17px;
        }
      }
    }

    &.relative {
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 3px;
      padding: 3px;
      width: 100%;
      color: inherit;
      text-align: left;

      &:hover {
        border-color: var(--accent);
        background: var(--button-hover);
      }

      > .person-link {
        display: grid;
        grid-template-columns: 30px minmax(0, 1fr);
        align-items: center;
        gap: 8px;
        min-width: 0;
        padding: 6px 5px;
        border: 0;
        background: transparent;
        box-shadow: none;
        color: inherit;
        text-align: left;

        > span:last-child {
          display: flex;
          flex-direction: column;
          gap: 3px;
          min-width: 0;
        }
      }

      > .remove {
        align-self: stretch;
        padding: 2px 8px;
        border: 0;
        background: transparent;
        box-shadow: none;
        color: var(--rust);
        font-size: 17px;
      }
    }
  }
}

main.projects {
  min-height: 100vh;
  background:
    radial-gradient(circle at top left, var(--project-glow) 0, transparent 34%),
    var(--paper);

  > header {
    display: flex;
    align-items: center;
    gap: 12px;
    height: 64px;
    padding: 0 7vw;
    border-bottom: 1px solid var(--line);
    background: var(--header-glass);

    > .mark {
      display: grid;
      place-items: center;
      width: 38px;
      height: 38px;
      border-radius: 50%;
      background: var(--avatar-neutral);
      color: var(--avatar-neutral-ink);
      font:
        600 20px Georgia,
        serif;
    }

    > strong {
      font:
        600 17px Georgia,
        serif;
    }

    > .project-actions {
      margin-left: auto;
      display: flex;
      gap: 8px;
    }

    > .project-file-input {
      display: none;
    }
  }

  > section {
    width: min(1100px, 80vw);
    margin: 0 auto;
    padding: 64px 0;

    > div {
      margin-bottom: 28px;

      h1 {
        margin: 0 0 8px;
        font:
          600 34px Georgia,
          serif;
      }

      p {
        margin: 0;
        color: var(--muted);
        font-size: 13px;
      }
    }

    table {
      width: 100%;
      overflow: hidden;
      border: 1px solid var(--line);
      border-spacing: 0;
      border-radius: 10px;
      background: var(--panel);
      box-shadow: 0 12px 32px var(--shadow);

      th,
      td {
        padding: 14px 16px;
        border-bottom: 1px solid var(--line);
        text-align: left;
      }

      th {
        background: var(--panel-soft);
        color: var(--muted);
        font-size: 9px;
        text-transform: uppercase;
        letter-spacing: 0.1em;
      }

      td {
        color: var(--muted);
        font-size: 11px;

        &:first-child {
          width: 32%;
        }

        input {
          width: 100%;
          padding: 7px 8px;
          border: 1px solid transparent;
          border-radius: 5px;
          background: transparent;
          color: var(--ink);
          font:
            600 14px Georgia,
            serif;

          &:focus {
            border-color: var(--accent);
            outline: none;
            background: var(--input);
          }
        }

        code {
          color: var(--muted);
          font-size: 8px;
        }

        > strong {
          color: var(--ink);
          font:
            600 14px Georgia,
            serif;
        }

        &.actions {
          display: flex;
          gap: 6px;
          padding-right: 8px;
          padding-left: 8px;

          button {
            padding: 6px 8px;
            font-size: 9px;

            &.danger {
              border-color: var(--danger-line);
              background: var(--danger-bg);
              color: var(--danger);

              &:hover {
                border-color: var(--danger-line-hover);
                background: var(--danger-bg-hover);
              }
            }
          }
        }
      }

      tbody tr {
        cursor: pointer;
        transition: background 120ms ease;

        &:hover,
        &:focus {
          outline: none;
          background: var(--panel-soft);
        }
      }

      tr:last-child td {
        border-bottom: 0;
      }
    }
  }

  > .backdrop {
    position: fixed;
    inset: 0;
    z-index: 40;
    display: grid;
    place-items: center;
    padding: 20px;
    background: var(--overlay);
    backdrop-filter: blur(2px);

    > form {
      display: grid;
      gap: 14px;
      width: min(390px, 100%);
      padding: 24px;
      border: 1px solid var(--line);
      border-radius: 10px;
      background: var(--panel);
      box-shadow: 0 20px 60px var(--shadow-strong);

      h2,
      p {
        margin: 0;
      }

      h2 {
        font:
          600 24px Georgia,
          serif;
      }

      p {
        color: var(--muted);
        font-size: 11px;
      }

      label {
        display: grid;
        gap: 6px;
        color: var(--muted);
        font-size: 9px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.08em;

        &.check {
          display: flex;
          align-items: center;
          gap: 8px;
          color: var(--ink);
          font-size: 10px;
          text-transform: none;
          letter-spacing: normal;

          input {
            width: 15px;
            height: 15px;
            padding: 0;
            accent-color: var(--accent);
          }
        }
      }

      input {
        padding: 9px 10px;
        border: 1px solid var(--line-strong);
        border-radius: 5px;
        outline: none;
        color: var(--ink);
        font-size: 12px;
        text-transform: none;

        &:focus {
          border-color: var(--accent);
          box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 22%, transparent);
        }
      }

      > div {
        display: flex;
        justify-content: flex-end;
        gap: 8px;
      }
    }
  }
}

@media (max-width: 1050px) {
  main.editor {
    > header > input {
      width: 300px;
    }

    > header {
      padding-right: 288px;
    }

    > div {
      grid-template-columns: minmax(0, 1fr) 270px;
    }
  }

  aside {
    width: 270px;
  }
}
