@rare__ You could use a script for that. Something like this should hide any of the hud elements but that also means that you cant see the progress when you plant or defuse the bomb I cant really test it so you have to say if it works or no
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init(){
    for(i = 0; i < level.bombzones.size; i++){
        level.bombzones[i] maps\mp\gametypes\_gameobjects::setvisibleteam( "none" );
        level.bombzones[i].onuse = ::onuseplantobject;
    }
    level.sdbomb maps\mp\gametypes\_gameobjects::setvisibleteam( "none" );
}
onuseplantobject( player )
{
    if ( !self maps\mp\gametypes\_gameobjects::isfriendlyteam( player.pers["team"] ) )
    {
        self maps\mp\gametypes\_gameobjects::setflags( 1 );
        level thread bombplanted( self, player );
        player logstring( "bomb planted: " + self.label );
        for ( index = 0; index < level.bombzones.size; index++ )
        {
            if ( level.bombzones[index] == self )
                continue;
            level.bombzones[index] maps\mp\gametypes\_gameobjects::disableobject();
        }
        thread playsoundonplayers( "mus_sd_planted" + "_" + level.teampostfix[player.pers["team"]] );
        player notify( "bomb_planted" );
        level thread maps\mp\_popups::displayteammessagetoall( &"MP_EXPLOSIVES_PLANTED_BY", player );
        if ( isdefined( player.pers["plants"] ) )
        {
            player.pers["plants"]++;
            player.plants = player.pers["plants"];
        }
        maps\mp\_demo::bookmark( "event", gettime(), player );
        player addplayerstatwithgametype( "PLANTS", 1 );
        maps\mp\gametypes\_globallogic_audio::leaderdialog( "bomb_planted" );
        maps\mp\_scoreevents::processscoreevent( "planted_bomb", player );
        player recordgameevent( "plant" );
    }
}
bombplanted( destroyedobj, player )
{
    maps\mp\gametypes\_globallogic_utils::pausetimer();
    level.bombplanted = 1;
    team = player.pers["team"];
    destroyedobj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playtickingsound( "mpl_sab_ui_suitcasebomb_timer" );
    level thread maps\mp\gametypes\sd::bombplantedmusicdelay();
    level.tickingobject = destroyedobj.visuals[0];
    level.timelimitoverride = 1;
    setgameendtime( int( gettime() + level.bombtimer * 1000 ) );
    label = destroyedobj maps\mp\gametypes\_gameobjects::getlabel();
    setmatchflag( "bomb_timer" + label, 1 );
    if ( label == "_a" )
        setbombtimer( "A", int( gettime() + level.bombtimer * 1000 ) );
    else
        setbombtimer( "B", int( gettime() + level.bombtimer * 1000 ) );
    bbprint( "mpobjective", "gametime %d objtype %s label %s team %s", gettime(), "sd_bombplant", label, team );
    if ( !level.multibomb )
    {
        level.sdbomb maps\mp\gametypes\_gameobjects::allowcarry( "none" );
        level.sdbomb maps\mp\gametypes\_gameobjects::setvisibleteam( "none" );
        level.sdbomb maps\mp\gametypes\_gameobjects::setdropped();
        level.sdbombmodel = level.sdbomb.visuals[0];
    }
    else
    {
        for ( index = 0; index < level.players.size; index++ )
        {
            if ( isdefined( level.players[index].carryicon ) )
                level.players[index].carryicon destroyelem();
        }
        trace = bullettrace( player.origin + vectorscale( ( 0, 0, 1 ), 20.0 ), player.origin - vectorscale( ( 0, 0, 1 ), 2000.0 ), 0, player );
        tempangle = randomfloat( 360 );
        forward = ( cos( tempangle ), sin( tempangle ), 0 );
        forward = vectornormalize( forward - vectorscale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
        dropangles = vectortoangles( forward );
        level.sdbombmodel = spawn( "script_model", trace["position"] );
        level.sdbombmodel.angles = dropangles;
        level.sdbombmodel setmodel( "prop_suitcase_bomb" );
    }
    destroyedobj maps\mp\gametypes\_gameobjects::allowuse( "none" );
    destroyedobj maps\mp\gametypes\_gameobjects::setvisibleteam( "none" );
    label = destroyedobj maps\mp\gametypes\_gameobjects::getlabel();
    trigger = destroyedobj.bombdefusetrig;
    trigger.origin = level.sdbombmodel.origin;
    visuals = [];
    defuseobject = maps\mp\gametypes\_gameobjects::createuseobject( game["defenders"], trigger, visuals, vectorscale( ( 0, 0, 1 ), 32.0 ), istring( "defuse" + label ) );
    defuseobject maps\mp\gametypes\_gameobjects::allowuse( "friendly" );
    defuseobject maps\mp\gametypes\_gameobjects::setusetime( level.defusetime );
    defuseobject maps\mp\gametypes\_gameobjects::setusetext( &"MP_DEFUSING_EXPLOSIVE" );
    defuseobject maps\mp\gametypes\_gameobjects::setusehinttext( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
    /*defuseobject maps\mp\gametypes\_gameobjects::setvisibleteam( "any" );
    defuseobject maps\mp\gametypes\_gameobjects::set2dicon( "friendly", "compass_waypoint_defuse" + label );
    defuseobject maps\mp\gametypes\_gameobjects::set2dicon( "enemy", "compass_waypoint_defend" + label );
    defuseobject maps\mp\gametypes\_gameobjects::set3dicon( "friendly", "waypoint_defuse" + label );
    defuseobject maps\mp\gametypes\_gameobjects::set3dicon( "enemy", "waypoint_defend" + label );*/
    defuseobject maps\mp\gametypes\_gameobjects::setflags( 1 );
    defuseobject.label = label;
    defuseobject.onbeginuse = maps\mp\gametypes\sd::onbeginuse;
    defuseobject.onenduse = maps\mp\gametypes\sd::onenduse;
    defuseobject.onuse = maps\mp\gametypes\sd::onusedefuseobject;
    defuseobject.useweapon = "briefcase_bomb_defuse_mp";
    player.isbombcarrier = 0;
    bombtimerwait();
    setbombtimer( "A", 0 );
    setbombtimer( "B", 0 );
    setmatchflag( "bomb_timer_a", 0 );
    setmatchflag( "bomb_timer_b", 0 );
    destroyedobj.visuals[0] maps\mp\gametypes\_globallogic_utils::stoptickingsound();
    if ( level.gameended || level.bombdefused )
        return;
    level.bombexploded = 1;
    bbprint( "mpobjective", "gametime %d objtype %s label %s team %s", gettime(), "sd_bombexplode", label, team );
    explosionorigin = level.sdbombmodel.origin + vectorscale( ( 0, 0, 1 ), 12.0 );
    level.sdbombmodel hide();
    if ( isdefined( player ) )
    {
        destroyedobj.visuals[0] radiusdamage( explosionorigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
        level thread maps\mp\_popups::displayteammessagetoall( &"MP_EXPLOSIVES_BLOWUP_BY", player );
        maps\mp\_scoreevents::processscoreevent( "bomb_detonated", player );
        player addplayerstatwithgametype( "DESTRUCTIONS", 1 );
        player recordgameevent( "destroy" );
    }
    else
        destroyedobj.visuals[0] radiusdamage( explosionorigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
    rot = randomfloat( 360 );
    explosioneffect = spawnfx( level._effect["bombexplosion"], explosionorigin + vectorscale( ( 0, 0, 1 ), 50.0 ), ( 0, 0, 1 ), ( cos( rot ), sin( rot ), 0 ) );
    triggerfx( explosioneffect );
    thread playsoundinspace( "mpl_sd_exp_suitcase_bomb_main", explosionorigin );
    if ( isdefined( destroyedobj.exploderindex ) )
        exploder( destroyedobj.exploderindex );
    for ( index = 0; index < level.bombzones.size; index++ )
        level.bombzones[index] maps\mp\gametypes\_gameobjects::disableobject();
    defuseobject maps\mp\gametypes\_gameobjects::disableobject();
    setgameendtime( 0 );
    wait 3;
    sd_endgame( game["attackers"], game["strings"]["target_destroyed"] );
}