    /* ── App Shell Grid ───────────────────────────────────── */
    #app {
      display: grid;
      grid-template-rows: var(--header-h) 1fr;
      grid-template-columns: var(--sidebar-w) 1fr;
      grid-template-areas:
        "header  header"
        "sidebar main";
      height: 100vh;
    }

    /* ── Header ───────────────────────────────────────────── */
    #header {
      grid-area: header;
      display: flex;
      align-items: center;
      gap: 12px;
      padding: 0 20px;
      background: var(--clr-header);
      color: var(--clr-white);
      box-shadow: var(--shadow);
      z-index: 10;
    }

    #header .logo {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 1.25rem;
      font-weight: 700;
      letter-spacing: .5px;
      margin-right: auto;
    }

    #header .logo svg { width: 28px; height: 28px; }

    .toolbar { display: flex; gap: 6px; align-items: center; }

    /* Vertical divider separating navigation (Projekty) from project tools */
    .toolbar-sep {
      width: 1px;
      height: 22px;
      background: rgba(255,255,255,.25);
      margin: 0 6px;
      flex-shrink: 0;
    }

    .save-status {
      min-width: 120px;
      padding: 4px 10px;
      border-radius: 999px;
      background: rgba(255,255,255,.12);
      color: rgba(255,255,255,.8);
      font-size: .78rem;
      font-weight: 600;
      text-align: center;
      white-space: nowrap;
    }
    .save-status:empty { display: none; }
    .save-status-saving { color: #f1c40f; }
    .save-status-saved { color: #2ecc71; }
    .save-status-error,
    .save-status-conflict { color: #ffb3ac; background: rgba(231,76,60,.18); }

    body.project-readonly #sidebar,
    body.project-readonly #main,
    body.project-readonly .places-screen,
    body.project-readonly .zajimavosti-screen {
      opacity: .72;
    }
    body.project-readonly #sidebar,
    body.project-readonly #main .view-panel,
    body.project-readonly .places-body,
    body.project-readonly .zajimavosti-body {
      pointer-events: none;
      user-select: none;
    }

    .toolbar button {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 7px 14px;
      border: none;
      border-radius: var(--radius);
      font-size: .85rem;
      font-weight: 600;
      cursor: pointer;
      transition: background .15s, transform .1s;
      color: var(--clr-white);
    }
    .toolbar button:active { transform: scale(.97); }
    .toolbar button svg    { width: 18px; height: 18px; fill: currentColor; }

    /* Button grammar: one primary action (blue), everything else is a
       neutral "ghost" on the dark header. Colour lives in icons only. */
    .btn-primary-action { background: var(--clr-primary); }
    .btn-primary-action:hover { background: var(--clr-primary-d); }

    .toolbar .btn-ghost,
    #btn-sidebar-toggle {
      background: transparent;
      border: 1px solid rgba(255,255,255,.22);
      color: rgba(255,255,255,.92);
    }
    .toolbar .btn-ghost:hover,
    #btn-sidebar-toggle:hover { background: rgba(255,255,255,.12); }
    .toolbar .btn-icon { padding: 7px 9px; }

    /* Theme toggle icons: sun in dark mode, moon in light mode */
    #btn-theme-toggle .icon-theme-sun { display: none; }
    body.theme-dark #btn-theme-toggle .icon-theme-sun { display: inline; }
    body.theme-dark #btn-theme-toggle .icon-theme-moon { display: none; }

    /* Drawer toggle is hidden on desktop; the responsive block shows it */
    #btn-sidebar-toggle {
      display: none;
      align-items: center;
      padding: 7px 9px;
      border-radius: var(--radius);
      cursor: pointer;
    }
    #btn-sidebar-toggle svg { width: 18px; height: 18px; }

    /* ── Toolbar dropdown menu (Nástroje) ── */
    .toolbar-menu { position: relative; display: inline-flex; }
    .toolbar-menu .menu-caret { width: 14px; height: 14px; transition: transform .15s; }
    .toolbar-menu.open .menu-caret { transform: rotate(180deg); }
    .toolbar-menu-items {
      display: none;
      position: absolute;
      top: calc(100% + 6px);
      right: 0;
      min-width: 200px;
      background: var(--clr-white);
      border: 1px solid #dfe6e9;
      border-radius: var(--radius);
      box-shadow: 0 6px 18px rgba(0,0,0,.18);
      padding: 6px;
      z-index: 100;
      flex-direction: column;
      gap: 2px;
    }
    .toolbar-menu.open .toolbar-menu-items { display: flex; }
    .toolbar-menu-items button {
      display: flex;
      align-items: center;
      gap: 10px;
      width: 100%;
      padding: 8px 10px;
      border: none;
      border-radius: 4px;
      background: transparent;
      color: var(--clr-dark);
      font-size: .85rem;
      font-weight: 500;
      text-align: left;
      cursor: pointer;
    }
    .toolbar-menu-items button:hover { background: var(--clr-light); }
    .toolbar-menu-items button svg { width: 18px; height: 18px; flex-shrink: 0; }

    /* ── Sidebar ──────────────────────────────────────────── */
    #sidebar {
      grid-area: sidebar;
      background: var(--clr-sidebar);
      color: var(--clr-light);
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }

    .sidebar-section {
      padding: 14px 16px;
      border-bottom: 1px solid rgba(255,255,255,.08);
    }

    .sidebar-section label {
      display: block;
      font-size: .72rem;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .5px;
      color: rgba(255,255,255,.5);
      margin-bottom: 6px;
    }

    .sidebar-section input,
    .sidebar-section select {
      width: 100%;
      padding: 6px 10px;
      border: none;
      border-radius: var(--radius);
      background: rgba(255,255,255,.1);
      color: var(--clr-white);
      font-size: .82rem;
      outline: none;
      transition: background .15s;
    }
    .sidebar-section input:focus,
    .sidebar-section select:focus { background: rgba(255,255,255,.18); }
    .sidebar-section select option { color: var(--clr-dark); }
    .sidebar-section input::placeholder { color: rgba(255,255,255,.4); }
    #btn-goto-root {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      width: 100%;
      margin-top: 8px;
      padding: 6px 10px;
      border: none;
      border-radius: var(--radius);
      background: rgba(255,255,255,.15);
      color: var(--clr-white);
      font-size: .78rem;
      font-weight: 600;
      cursor: pointer;
      transition: background .15s;
    }
    #btn-goto-root svg { width: 13px; height: 13px; flex-shrink: 0; }
    #btn-goto-root:hover { background: rgba(255,255,255,.25); }
    #btn-goto-root:disabled { opacity: .4; cursor: default; }
    #btn-goto-root:disabled:hover { background: rgba(255,255,255,.15); }

    #sidebar .sidebar-header {
      padding: 14px 16px;
      font-weight: 700;
      font-size: .95rem;
      text-transform: uppercase;
      letter-spacing: 1px;
      border-bottom: 1px solid rgba(255,255,255,.08);
      display: flex;
      align-items: center;
      gap: 8px;
    }
    #sidebar .sidebar-header svg { width: 20px; height: 20px; fill: var(--clr-primary); }

    .sidebar-search-row {
      display: flex;
      gap: 8px;
      margin: 10px 12px;
      align-items: center;
    }

    #person-search {
      flex: 1;
      padding: 8px 12px;
      border: none;
      border-radius: var(--radius);
      background: rgba(255,255,255,.1);
      color: var(--clr-white);
      font-size: .85rem;
      outline: none;
    }
    #person-search::placeholder { color: rgba(255,255,255,.45); }
    #person-search:focus { background: rgba(255,255,255,.18); }

    #person-list {
      flex: 1;
      overflow-y: auto;
      padding: 6px 0;
    }

    .person-item {
      padding: 10px 16px;
      cursor: pointer;
      font-size: .88rem;
      border-left: 3px solid transparent;
      transition: background .12s, border-color .12s;
    }
    .person-item:hover { background: rgba(255,255,255,.06); }
    .person-item.active {
      background: rgba(52,152,219,.18);
      border-left-color: var(--clr-primary);
    }

    .person-item .person-name { font-weight: 600; }
    .person-item .person-dates {
      font-size: .78rem;
      color: rgba(255,255,255,.5);
      margin-top: 2px;
    }

    /* ── Main Area ────────────────────────────────────────── */
    #main {
      grid-area: main;
      overflow-y: auto;
      padding: 24px;
    }

    .view-tabs {
      display: flex;
      gap: 4px;
      margin-bottom: 20px;
    }
    .view-tab {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 8px 20px;
      border: none;
      border-radius: var(--radius) var(--radius) 0 0;
      background: var(--clr-light);
      font-weight: 600;
      font-size: .88rem;
      cursor: pointer;
      transition: background .15s;
    }
    .view-tab svg { width: 16px; height: 16px; }
    .view-tab:hover { background: #dfe6e9; }
    .view-tab.active {
      background: var(--clr-white);
      box-shadow: var(--shadow);
    }

    .view-panel {
      display: none;
      background: var(--clr-white);
      border-radius: 0 var(--radius) var(--radius) var(--radius);
      box-shadow: var(--shadow);
      padding: 24px;
    }
    .view-panel.active { display: block; }

