:root {
        color-scheme: dark;
        --p: #111925;
        --p2: #172231;
        --line: #27364a;
        --txt: #eef5ff;
        --muted: #8ea1ba;
        --a: #50c8ff;
        --card-h: 160px;
        --icon: 64px;
        --img: 44px;
        --grid-min: 170px;
        --name-size: 16px;
        --cat-size: 10px;
        --card-gap: 13px;
        --card-scale: 1;
      }
      * {
        box-sizing: border-box;
      }
      body {
        margin: 0;
        font-family:
          Segoe UI,
          Arial,
          sans-serif;
        background: #090d14;
        color: var(--txt);
      }
      .app {
        display: grid;
        grid-template-columns: 220px minmax(0, 1fr);
        min-height: 100vh;
      }
      aside {
        padding: 28px 18px;
        border-right: 1px solid var(--line);
        background: #0c121b;
      }
      .brandbox {
        text-align: center;
      }
      .brand {
        font-size: 22px;
        font-weight: 900;
        letter-spacing: 2px;
      }
      .brand span {
        color: var(--a);
      }
      .sub {
        font-size: 13px;
        font-weight: 700;
        letter-spacing: 3px;
        color: var(--muted);
        margin: 6px 0 28px;
      }
      .nav button {
        width: 100%;
        display: block;
        border: 0;
        background: transparent;
        color: var(--muted);
        text-align: left;
        padding: 11px 13px;
        border-radius: 9px;
        margin: 3px 0;
        font-weight: 650;
        font-size: 15px;
        cursor: pointer;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .nav button:hover,
      .nav button.active {
        background: var(--p2);
        color: var(--txt);
      }
      .nav button.cat-drag {
        cursor: pointer;
        padding-left: 24px;
      }
      .nav button.cat-drag.dragging {
        opacity: 0.35;
        cursor: grabbing;
      }
      .nav button.cat-drag.drag-over {
        outline: 1px solid var(--a);
      }
      .nav button.active {
        box-shadow: inset 3px 0 var(--a);
      }
      .dashboard-row {
        position: relative;
        margin: 3px 0;
      }
      .dashboard-row.dragging-live {
        margin: 0;
        z-index: 2000;
        background: transparent !important;
        box-shadow: none !important;
        opacity: 1 !important;
      }
      .dashboard-row.dragging-live .dashboard-filter-menu {
        display: none !important;
      }
      .dashboard-row.dragging-live .dashboard-main {
        background: var(--p2) !important;
        color: var(--txt) !important;
        box-shadow: 0 18px 45px rgba(0, 0, 0, 0.45) !important;
        opacity: 1 !important;
      }
      .dashboard-row .dashboard-main {
        width: 100%;
        min-width: 0;
        margin: 0;
        position: relative;
        display: block;
        border: 0;
        background: transparent;
        color: var(--muted);
        text-align: left;
        padding: 11px 13px 11px 13px;
        padding-right: 34px;
        border-radius: 9px;
        font-weight: 650;
        font-size: 15px;
        font-family: inherit;
        line-height: 1.2;
        box-sizing: border-box;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        appearance: none;
        -webkit-appearance: none;
      }
      .dashboard-row .dashboard-main:hover,
      .dashboard-row .dashboard-main.active,
      .dashboard-row.dragging-live .dashboard-main {
        background: var(--p2);
        color: var(--txt);
      }
      .dashboard-row .dashboard-main::after {
        content: "▾";
        position: absolute;
        right: 13px;
        top: 50%;
        transform: translateY(-52%);
        color: var(--muted);
        font-size: 12px;
        pointer-events: none;
      }
      .dashboard-row.open .dashboard-main::after {
        transform: translateY(-52%) rotate(180deg);
      }
      .dashboard-filter-menu {
        display: none;
        position: absolute;
        left: 0;
        top: calc(100% + 3px);
        z-index: 1400;
        min-width: 190px;
        padding: 6px;
        background: #111925;
        border: 1px solid #33465f;
        border-radius: 10px;
        box-shadow: 0 16px 36px rgba(0,0,0,.45);
      }
      .dashboard-row.open .dashboard-filter-menu {
        display: block;
      }
      .dashboard-filter-menu button {
        margin: 0;
        padding: 8px 10px;
        border-radius: 7px;
      }
      .dashboard-filter-menu button.selected {
        background: var(--p2);
        color: var(--txt);
      }
      .sidebar-context {
        position: fixed;
        z-index: 1600;
        display: none;
        min-width: 190px;
        padding: 7px;
        background: #111925;
        border: 1px solid #33465f;
        border-radius: 10px;
        box-shadow: 0 16px 36px rgba(0,0,0,.45);
      }
      .sidebar-context.show { display: block; }
      .sidebar-context button {
        width: 100%;
        border: 0;
        background: transparent;
        color: var(--txt);
        text-align: left;
        padding: 9px 10px;
        border-radius: 7px;
        cursor: pointer;
      }
      .sidebar-context button:hover { background: var(--p2); }
      .sidebar-context .danger { color: #ff8585; }
      main {
        padding: 34px 38px;
        min-width: 0;
        overflow-x: hidden;
      }
      .top {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 20px;
        margin-bottom: 28px;
      }
      .topright {
        display: flex;
        align-items: center;
        gap: 10px;
      }
      h1 {
        margin: 0;
        font-size: 30px;
      }
      .search-wrap {
        position: relative;
        width: 340px;
        max-width: 42vw;
      }
      .search {
        width: 100%;
        padding: 12px 36px 12px 14px;
        border: 1px solid var(--line);
        border-radius: 11px;
        background: var(--p);
        color: var(--txt);
        outline: 0;
        transition: border-color 0.15s;
      }
      .search::-webkit-search-cancel-button {
        -webkit-appearance: none;
        appearance: none;
        display: none;
      }
      .search:focus {
        border-color: #4d6988;
      }
      .search-clear {
        position: absolute;
        right: 8px;
        top: 50%;
        transform: translateY(-50%);
        width: 22px;
        height: 22px;
        border: 0;
        border-radius: 6px;
        background: transparent;
        color: var(--muted);
        font-size: 18px;
        line-height: 1;
        cursor: pointer;
        display: none;
        padding: 0;
      }
      .search-wrap.has-query .search-clear {
        display: block;
      }
      .search-clear:hover {
        color: var(--txt);
        background: var(--p2);
      }
      .clock {
        flex: 0 0 auto;
        padding: 0 14px 0 0;
        color: var(--muted);
        font-size: 16px;
        font-weight: 650;
        letter-spacing: 0.02em;
        white-space: nowrap;
        user-select: none;
        cursor: default;
        line-height: 1.2;
        position: relative;
        top: -2px;
      }
      .clock-time,
      .clock-date {
        display: inline;
        color: inherit;
        font: inherit;
        letter-spacing: inherit;
        text-transform: none;
        margin: 0;
      }
      .clock-date::after {
        content: " · ";
      }
      .clock.hidden {
        display: none;
      }
      .gear {
        width: 43px;
        height: 43px;
        border: 1px solid var(--line);
        border-radius: 11px;
        background: var(--p);
        color: var(--txt);
        cursor: pointer;
        display: grid;
        place-items: center;
        padding: 0;
      }
      .gear svg {
        width: 24px;
        height: 24px;
        display: block;
        fill: currentColor;
      }
      .gear:hover {
        border-color: #4d6988;
      }
      .grid {
        display: flex;
        flex-wrap: wrap;
        align-content: flex-start;
        justify-content: flex-start;
        gap: 20px;
      }
      .card {
        width: calc(var(--card-h) * var(--card-scale));
        height: calc(var(--card-h) * var(--card-scale));
        padding: 17px;
        border: 1px solid var(--line);
        border-radius: 15px;
        background: linear-gradient(145deg, var(--p2), var(--p));
        color: var(--txt);
        text-decoration: none;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        text-align: center;
        gap: var(--card-gap);
        transition: 0.15s;
        cursor: pointer;
      }
      .card:hover {
        transform: translateY(-3px);
        border-color: #4d6988;
      }
      .card.card-faded {
        opacity: 0.28;
        filter: saturate(0.4);
      }
      .card.card-faded:hover {
        opacity: 0.55;
        filter: saturate(0.7);
      }
      .card.dragging {
        opacity: 0.35;
        transform: scale(0.96);
        cursor: grabbing;
      }
      .card.drag-over {
        border-color: var(--a);
        box-shadow: 0 0 0 2px rgba(80, 200, 255, 0.18);
      }
      .icon {
        width: calc(var(--icon) * var(--card-scale));
        height: calc(var(--icon) * var(--card-scale));
        border-radius: 14px;
        background: #202c3c;
        display: grid;
        place-items: center;
        color: var(--a);
        font-weight: 900;
        font-size: calc(var(--icon) * 0.6);
        line-height: 1;
      }
      .icon img {
        width: calc(var(--img) * var(--card-scale));
        height: calc(var(--img) * var(--card-scale));
        object-fit: contain;
        -webkit-user-drag: none;
        user-select: none;
        pointer-events: none;
      }
      .name {
        font-weight: 800;
        font-size: calc(var(--name-size) * var(--card-scale));
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        line-clamp: 2;
        overflow: hidden;
        max-width: 100%;
        overflow-wrap: anywhere;
      }
      .cat {
        font-size: calc(var(--cat-size) * var(--card-scale));
        text-transform: uppercase;
        letter-spacing: 1px;
        color: var(--muted);
        margin-top: 4px;
      }
      .empty {
        display: none;
        color: var(--muted);
        padding: 30px 0;
      }
      .context-menu {
        position: fixed;
        z-index: 1000;
        display: none;
        min-width: 210px;
        padding: 10px;
        background: #111925;
        border: 1px solid #33465f;
        border-radius: 12px;
        box-shadow: 0 18px 45px rgba(0, 0, 0, 0.45);
      }
      .context-menu.show {
        display: block;
      }
      .context-title {
        font-weight: 800;
        padding: 4px 5px 9px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .context-menu label,
      .setting-label {
        display: block;
        color: var(--muted);
        font-size: 10px;
        text-transform: uppercase;
        letter-spacing: 1px;
        padding: 4px 5px;
      }
      .context-menu select,
      .context-menu input,
      .context-menu button,
      .settings select,
      .settings input,
      .settings button {
        width: 100%;
        padding: 9px 10px;
        border-radius: 8px;
        border: 1px solid var(--line);
        background: #0c121b;
        color: var(--txt);
        margin-bottom: 7px;
      }
      .context-menu button,
      .settings button {
        cursor: pointer;
      }
      .context-menu .delete,
      .danger {
        color: #ff8585;
      }
      .context-menu #ctxIconHost {
        margin-bottom: 0;
      }
      .context-divider {
        border-top: 1px solid var(--line);
        margin: 18px 0;
      }
      .context-menu #ctxRename {
        margin-top: 0;
      }
      .context-menu .delete {
        margin-top: 14px !important;
      }
      .drop-ready {
        outline: 2px dashed var(--a);
        outline-offset: -10px;
      }
      .overlay {
        display: none;
        position: fixed;
        inset: 0;
        z-index: 1100;
        background: rgba(0, 0, 0, 0.58);
        align-items: center;
        justify-content: center;
        padding: 20px;
      }
      .overlay.show {
        display: flex;
      }
      .settings {
        width: min(500px, 100%);
        max-height: 85vh;
        overflow: auto;
        background: #111925;
        border: 1px solid #33465f;
        border-radius: 16px;
        padding: 20px;
        box-shadow: 0 25px 70px rgba(0, 0, 0, 0.55);
      }
      .settings-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 18px;
      }
      .settings h2 {
        margin: 0;
      }
      .settings-group + .settings-group {
        margin-top: 8px;
        padding-top: 16px;
        border-top: 1px solid var(--line);
      }
      .settings-group-title {
        margin: 0 0 2px;
        padding: 4px 5px 6px;
        color: var(--txt);
        font-size: 11px;
        font-weight: 800;
        letter-spacing: 1.4px;
        text-transform: uppercase;
      }
      #settingsDashTitle {
        font-weight: 500;
        letter-spacing: 0;
        text-transform: none;
        font-size: 13px;
      }
      .settings-group .section:first-of-type {
        border-top: 0;
        padding-top: 0;
        margin-top: 0;
      }
      .close {
        width: auto !important;
        margin: 0 !important;
        font-size: 18px;
        padding: 6px 10px !important;
        cursor: pointer;
        transition: none !important;
      }
      .close:hover,
      .close:focus-visible {
        border-color: #4d6988;
        outline: 0;
      }
      .card:active,
      .nav button.cat-drag:active {
        cursor: grabbing !important;
      }
      html.dragging-now,
      html.dragging-now *,
      body.dragging-now,
      body.dragging-now * {
        cursor: grabbing !important;
      }
      .dragging-live {
        cursor: grabbing !important;
        box-shadow: 0 18px 45px rgba(0, 0, 0, 0.45) !important;
        opacity: 0.96 !important;
      }
      .cat-drag.dragging-live {
        display: block !important;
        border: 0 !important;
        background: var(--p2) !important;
        color: var(--txt) !important;
        text-align: left !important;
        padding: 11px 13px 11px 24px !important;
        border-radius: 9px !important;
        font-family:
          Segoe UI,
          Arial,
          sans-serif !important;
        font-size: 15px !important;
        font-weight: 650 !important;
        line-height: normal !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
      }
      .card-placeholder {
        border: 1px dashed #3a4d65 !important;
        background: rgba(255, 255, 255, 0.025) !important;
        border-radius: 15px;
        flex: 0 0 auto;
      }
      .cat-placeholder {
        display: block;
        border: 1px dashed #3a4d65 !important;
        background: rgba(255, 255, 255, 0.025) !important;
        border-radius: 9px;
        margin: 3px 0;
        padding: 0;
        width: 100%;
      }
      .drag-placeholder {
        pointer-events: none;
      }
      .section {
        border-top: 1px solid var(--line);
        padding-top: 15px;
        margin-top: 15px;
      }
      .section:first-of-type {
        border-top: 0;
        padding-top: 0;
      }
      .backup-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 8px;
      }
      .backup-actions button {
        margin: 0 !important;
      }
      .hint {
        font-size: 11px;
        color: var(--muted);
        margin-top: 6px;
      }
      @media (max-width: 700px) {
        :root {
          --card-scale: 0.82;
        }
        .app {
          grid-template-columns: 1fr;
        }
        aside {
          border-right: 0;
          border-bottom: 1px solid var(--line);
          padding: 20px;
        }
        .nav {
          display: flex;
          overflow: auto;
          gap: 5px;
        }
        .nav button {
          width: auto;
          white-space: nowrap;
        }
        .sub {
          margin-bottom: 14px;
        }
        main {
          padding: 24px 20px;
        }
        .top {
          flex-direction: column;
          align-items: stretch;
        }
        .topright {
          width: 100%;
        }
        .search-wrap {
          width: 100%;
          max-width: none;
          flex: 1 1 auto;
        }
        .clock {
          text-align: left;
          padding: 0 10px 0 0;
        }
        .gear {
          flex: 0 0 43px;
        }
      }

      .dropdown {
        position: relative;
        width: 100%;
        margin-bottom: 7px;
      }
      .dropdown-btn {
        width: 100%;
        padding: 9px 30px 9px 10px !important;
        margin: 0 !important;
        text-align: left;
        position: relative;
      }
      .dropdown-btn:after {
        content: "▾";
        position: absolute;
        right: 12px;
        top: 50%;
        transform: translateY(-52%);
        color: var(--muted);
        pointer-events: none;
      }
      .dropdown-list {
        display: none;
        position: absolute;
        left: 0;
        right: 0;
        top: calc(100% + 3px);
        z-index: 1300;
        padding: 5px;
        background: #0c121b;
        border: 1px solid var(--line);
        border-radius: 8px;
        box-shadow: 0 12px 28px rgba(0, 0, 0, 0.4);
        max-height: 240px;
        overflow: auto;
      }
      .dropdown.open .dropdown-list {
        display: block;
      }
      .dropdown-option {
        display: block;
        width: 100%;
        border: 0 !important;
        margin: 0 !important;
        padding: 8px 9px !important;
        background: transparent !important;
        color: var(--txt) !important;
        text-align: left;
        border-radius: 6px !important;
        cursor: pointer;
      }
      .dropdown-option:hover,
      .dropdown-option.selected {
        background: var(--p2) !important;
      }
