ui/devmenu.razor.scss
// Dev menu. Ported from Docs/ui-design/devmenu-artifact.html — keep the two in
// step, that file is where the design iterating happens.
//
// ⚠️ Inter, because it is the font s&box actually SHIPS
// (addons/base/Assets/fonts/Inter-*.ttf). Poppins appears in ~60 shipped .scss
// files but has no font file anywhere in the install, and asking for a missing
// font renders every label as a grey block — layout correct, glyphs gone.

.devmenu
{
    font-family: Inter;
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: center;
    pointer-events: none;

    .frame
    {
        pointer-events: all;
        flex-direction: column;
        width: 820px;
        max-height: 80%;
        background-color: rgba( 14, 16, 20, 0.96 );
        border: 1px solid rgba( 255, 255, 255, 0.12 );
        border-radius: 6px;
    }

    .titlebar
    {
        flex-direction: row;
        align-items: center;
        padding: 16px 22px;
        border-bottom: 1px solid rgba( 255, 255, 255, 0.08 );

        .title { font-size: 20px; font-weight: 600; color: #fff; }
        .hint  { margin-left: auto; font-size: 13px; color: rgba( 255,255,255,0.4 ); }
    }

    .tabs
    {
        flex-direction: row;
        padding: 8px 16px 0px 16px;
        border-bottom: 1px solid rgba( 255, 255, 255, 0.08 );

        .tab
        {
            padding: 11px 20px;
            font-size: 16px;
            color: rgba( 255, 255, 255, 0.55 );
            border-bottom: 2px solid transparent;
            cursor: pointer;

            &:hover { color: #fff; }
            &.active { color: #fff; border-bottom: 2px solid #4a9eff; }
        }
    }

    .body
    {
        flex-direction: column;
        padding: 8px 16px 16px 16px;
        overflow: scroll;
    }

    // ── categories ──────────────────────────────────────────────────────────
    .cat
    {
        flex-direction: column;
        border-bottom: 1px solid rgba( 255, 255, 255, 0.08 );
    }

    .cat-head
    {
        flex-direction: row;
        align-items: center;
        padding: 12px 6px;
        cursor: pointer;

        &:hover { color: #4a9eff; }

        .cat-name { font-size: 16px; color: #fff; margin-left: 10px; }
        .count
        {
            margin-left: auto;
            font-size: 13px;
            color: rgba( 255, 255, 255, 0.35 );
        }
    }

    // ⚠️ Stands in for the artifact's SVG icons. s&box UI is Facepunch's own
    // layout engine, not a browser DOM, so inline <svg><use> is not assumed to
    // work — a coloured dot carries the same grouping information with no
    // dependency on SVG support. Swap for real icons once that is verified.
    .dot
    {
        width: 10px;
        height: 10px;
        border-radius: 5px;
        flex-shrink: 0;
    }

    // ── tools ───────────────────────────────────────────────────────────────
    .tools
    {
        flex-direction: column;
        padding: 2px 0px 10px 0px;
    }

    .tool
    {
        flex-direction: row;
        align-items: center;
        padding: 10px 14px;
        margin-bottom: 4px;
        background-color: rgba( 255, 255, 255, 0.05 );
        border: 1px solid rgba( 255, 255, 255, 0.08 );
        border-radius: 4px;
        cursor: pointer;

        &:hover
        {
            background-color: rgba( 74, 158, 255, 0.28 );
            border: 1px solid rgba( 74, 158, 255, 0.4 );
        }

        .tool-name { font-size: 15px; color: #fff; margin-left: 10px; }
        .keys
        {
            margin-left: auto;
            font-size: 12px;
            color: rgba( 255, 255, 255, 0.35 );
        }

        // Not wired yet. Dimmed so an unimplemented tool never reads as a
        // broken one.
        &.todo
        {
            opacity: 0.5;

            &:hover
            {
                background-color: rgba( 255, 255, 255, 0.05 );
                border: 1px solid rgba( 255, 255, 255, 0.08 );
            }
        }
    }
}